来看看这个汇编有什么问题?al值是如何变化的??
来源:百度知道 编辑:UC知道 时间:2024/06/17 16:09:25
-a
0B1A:0100 MOV BX,011a
0B1A:0103 mov ah,02
0B1A:0105 mov cx,18
0B1A:0108 mov al,61
0B1A:010A mov dl,[bx]
0B1A:010C cmp dl,al
0B1A:010E jb 0113
0B1A:0110 SUB dl,20
0B1A:0113 int 21
0B1A:0115 int 21
0B1A:0117 inc bx
0B1A:0118 loop 010a
0B1A:011A int 20
0B1A:011C db"T3h2i1 6s4 i5s a4 example!"
0B1A:0136
-g
? 44HHII SS IISS AA EEXXAAMM
Program terminated normally
--a
0B1A:0100 MOV BX,011a
0B1A:0103 mov ah,02
0B1A:0105 mov cx,18
0B1A:0108 mov al,61
0B1A:010A mov dl,[bx]
0B1A:010C cmp dl,al
0B1A:010E jb 0113
0B1A:0110 SUB dl,20
0B1A:0113 int 21
0B1A:0115 mov dl,al
0B1A:0117 int 21
0B1A:0119 inc bx
0B1A:011A loop 010a
0B1A:0100 MOV BX,011a
0B1A:0103 mov ah,02
0B1A:0105 mov cx,18
0B1A:0108 mov al,61
0B1A:010A mov dl,[bx]
0B1A:010C cmp dl,al
0B1A:010E jb 0113
0B1A:0110 SUB dl,20
0B1A:0113 int 21
0B1A:0115 int 21
0B1A:0117 inc bx
0B1A:0118 loop 010a
0B1A:011A int 20
0B1A:011C db"T3h2i1 6s4 i5s a4 example!"
0B1A:0136
-g
? 44HHII SS IISS AA EEXXAAMM
Program terminated normally
--a
0B1A:0100 MOV BX,011a
0B1A:0103 mov ah,02
0B1A:0105 mov cx,18
0B1A:0108 mov al,61
0B1A:010A mov dl,[bx]
0B1A:010C cmp dl,al
0B1A:010E jb 0113
0B1A:0110 SUB dl,20
0B1A:0113 int 21
0B1A:0115 mov dl,al
0B1A:0117 int 21
0B1A:0119 inc bx
0B1A:011A loop 010a
dos功能调用的2号功能执行后,AL=DL,也就是它显示的字符。把cmp dl,al改成cmp dl,61就不会出现乱码了。另外,字符串首地址要改成正确的地址,如本例,BX应该是11E。