预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共22页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第5章汇编语言程序设计5.1顺序程序设计1.用转移指令实现分支DATA SEGMENT STRING DB36H,57H,73H,56H,29H,96H,3EH,7FH,30H DB20DUP(?) DB'Thisisacomputor',24H DATA ENDS CODE SEGMENT ASSUMECS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA BX,STRING MOV DL,24H ;结束标志送DL AGAIN: MOV AL,[BX] CMP AL,DL ;与结束标志比较 JZ DONE ;AL为结束标志转结束 OR AL,80H ;把AL的D7值1 JNP NEXT ;PF=0(为奇)则转移至NEXT MOV [BX],AL ;为偶则送回已加校验的字符 NEXT: INC BX ;指向下一单元 JMP AGAIN ;继续 DONE: MOV AH,4CH INT 21H CODE ENDS END START 2.用MASM6.x条件控制伪指令实现分支5.3循环程序设计(续)5.3循环程序设计(续)5.3循环程序设计(续) .MODEL SMALL .486 XDAX MACRO ;定义对AX和DX进行十进制调整的宏 DAA XCHG AH,AL ADC AL,0 DAA XCHG AH,AL XCHG AX,DX ADC AX,0 DAA XCHG AH,AL ADC AL,0 DAA XCHG AH,AL XCHG AX,DX ENDM .DATA NUMB DW 8AB9H NUMD DW ?,? .STACK .CODE .STARTUP MOV AX,NUMB CALL BTOD MOV NUMD,AX ;保存转换结果 MOV NUMD+2,DX .EXIT0 FBTOD LABEL FAR ;该过程也可为其他段调用(共享) BTOD PROC NEAR MOV BX,AX MOV AX,0 MOV DX,0 MOV CX,16 ;+Di和*2反复做16次和15次 NEXT: ROL BX,1 ;CF←Di ADC AX,0 ;AX←AX+Di XDAX ;十进制调整 CMP CX,1 ;做完否? JZ DONE ;加完16次则转DONE(结束返回) ADD AX,AX ;低位部分AX*2 XDAX LOOP NEXT ;未完继续 DONE: RET BTOT ENDP END2.用MASM6.x循环控制伪指令实现循环例5-47求10!和1~10的整数和。 用.WHILE——ENDW伪指令 用.REPEAT——UNTIL伪指令 ┆ ┆ MOV EAX,1 MOV EAX,1 MOV BX,0 MOV BX,0 MOV CX,1 MOV CX,1 .WHILE CX<=10 .REPEAT MUL CX MUL CX ADD BX,CX ADD BX,CX INC CX INC CX .ENDW .UNTIL CX>10 MOV MEMDD,EAX ;存阶乘积 MOV MEMDD,EAX MOV MEMWD,BX ;存累加和 MOV MEMWD,BX ┆ ┆ 5.4保护方式编程5.4保护方式编程(续)5.4保护方式编程(续)2.保护方式编程举例2.保护方式编程举例(续)2.保护方式编程举例(续)2.保护方式编程举例(续)