- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4.5汇编语言程序设计基本方法.ppt
4.5 汇编语言程序设计基本方法 设计步骤: 根据实际问题抽象出数学模型 确定算法 画程序流程图 分配内存工作单元和寄存器 程序编码 调试 程序流程图符号 4.5.1 顺序结构程序 例:对两个8字节无符号数求和,这两个数分别用变量D1及D2表示。将两数之和的最高位进位放在AL中,两数之和的其他位按从高到低顺序依次存放在SI、BX、CX、DX中。 D SEGMENT D1 DB 12H,34H,56H,78H,9AH,0ABH,0BCH,OCDH D2 DB 0CDH,0BCH,0ABH,9AH,78H,56H,34H,12H D ENDS C SEGMENT assume cs:C, ds:D;说明段名为C的段是代码段,D为数据段 Start PROC FAR BG: PUSH DS ;DS中为程序段前缀的起始地址 MOV AX, 0 PUSH AX ; 设置返回DOS的地址(段值和IP值) MOV AX, D MOV DS, AX ;给数据段寄存器赋初值 接上 LEA DI,D1 ;取D1的偏移地址 MOV DX,[DI] ;取第一个操作数 MOV CX,[DI+2]; MOV BX,[DI+4] MOV SI,[DI+6] LEA DI,D2 ;取D2的有效地址 ADD DX,[DI] ADC CX,[DI+2] ADC BX,[DI+4] ADC SI,[DI+6] MOV AL,0 ADC AL,0 RET ;返回系统 START ENDP C ENDS END BG P160 例 4.5.2 分支结构程序 分支程序根据条件是真或假决定执行与否。 判断的条件是各种指令,如CMP、TEST等执行后形成的状态标志。 转移指令JMP 和条件转移指令Jcc可以实现分支控制。 例:比较以存储变量D1和D2表示的两个有符号数据的大小,将较大的数村BX。 DATA SEGMENT D1 DW -123H 补码为FF85H D2 DW -120H 补码为FF88H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA BEGIN :MOV AX,DATA MOV DS,AX MOV BX,D1 CMP BX,D2 JGE NEXT MOV BX,D2 例:符号函数 SIGEF: MOV AX,BUFFER OR AX,AX JE ZERO JNS PLIS MOV BX,0FFH JMP CONTI ZERO: MOV BX,0 JMP CONTI PLIS: MOV BX,1 CONTI :…. 利用入口地址表,形成多分支 Table db disp1, disp2, disp3, disp4, ... 例: 地址表 根据AL中被置位的情况控制转移到8个子程序R1—R8之一。 DATA SEGMENT BRTAB DW R11 ;子程序R1入口地址的IP值 DW R12 ;子程序R1入口地址的码段值 ….. DATA ENDS STACK SEGMENT PARA STACK ‘STACK’ DB 100DUP(?) TOP EQU $-STAC
文档评论(0)