+ -
当前位置:首页 → 问答吧 → 菜鸟debug问题

菜鸟debug问题

时间:2010-11-16

来源:互联网

-r 
AX=2000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 
DS=2000 ES=1374 SS=1374 CS=1374 IP=0109 NV UP EI PL NZ NA PO NC 
1374:0109 B800B8 MOV AX,B800 
-t 

AX=B800 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 
DS=2000 ES=1374 SS=1374 CS=1374 IP=010C NV UP EI PL NZ NA PO NC 
1374:010C 8ED8 MOV DS,AX 
-t 

AX=B800 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 
DS=B800 ES=1374 SS=1374 CS=1374 IP=010E NV UP EI PL NZ NA PO NC 
1374:010E 88260100 MOV [0001],AH DS:0001=07 
-d b800:0 f 
B800:0000 32 07 30 07 30 07 30 07-3A 07 30 07 30 07 37 07 2.0.0.0.:.0.0.7. 
-t 

AX=B800 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 
DS=B800 ES=1374 SS=1374 CS=1374 IP=0112 NV UP EI PL NZ NA PO NC 
1374:0112 4D DEC BP 
-d b800:0 f 
B800:0000 31 07 33 07 37 07 34 07-3A 07 30 07 31 07 31 07 1.3.7.4.:.0.1.1. 

简单的三行代码mov ax,b800 
mov ds,ax 
mov [1],ah 
问的是第三行代码,在执行代码前ah=b8,这时候b800:0001=07,当我执行完mov[1],ah 
感觉应该是b800:0001=b8,可是结果还是07,这是为什么啊。奇怪了。不信的朋友也可以拿我这三行代码debug下

作者: yg23hhxj   发布时间: 2010-11-16

b800段对应着屏幕显示内容(文本方式下),其中偏移地址0000处是屏幕左上角字符的ASCII码,0001处是该字符的属性(即颜色)。

  本来执行完mov [1],ah后,左上角的字符变色了,但你其他操作滚屏后,左上角又变成一个黑白字符,所以0001处又变成b8了。

作者: shzhfu   发布时间: 2010-11-16

说得有道理

作者: leetow2003   发布时间: 2010-11-16

F:\masm>debug
-a
0B19:0100 mov ax,b800
0B19:0103 mov ds,ax
0B19:0105 mov [1],ah
0B19:0109 mov ah,4c
0B19:010B int 21
0B19:010D
-g

F:\masm>debug
-d b800:0
B800:0000 20 B8 20 07 20 07 20 07-20 07 20 07 20 07 20 07
你要先清屏,然后运行我这样的,可以才可以看到ds:[1]中的值

作者: leetow2003   发布时间: 2010-11-16