文档详情

4.5汇编语言程序设计基本方法.ppt

发布:2017-06-03约3.95千字共14页下载文档
文本预览下载声明
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
显示全部
相似文档