|
主题 : : 想不通的一个问题 [待解决] |
回复[ 5次 ]
点击[ 482次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2009-06-13 14:49 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:3
注册日期:2009-06-08 15:13 |
-a 0000:0
0000:0000 mov ax,1
0000:0003 mov bx,2
0000:0006
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=137F ES=137F SS=137F CS=0000 IP=0000 NV UP EI PL NZ NA PO NC
0000:0000 B80100 MOV AX,0001 //这里显示0000:0000处往AX送1
-r ip //改变偏移量,目的想看一下0000:0003处是否是正确指令
IP 0000
:3
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=137F ES=137F SS=137F CS=0000 IP=0003 NV UP EI PL NZ NA PO NC
0000:0003 BB0200 MOV BX,0002 //这里显示0000:0003处往BX送1,正确
-r ip //返回到0000:0000,目的是为了从开始执行
IP 0003
:0
-t
AX=0001 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=137F ES=137F SS=137F CS=0000 IP=0003 NV UP EI PL NZ NA PO NC
0000:0003 BBBB13 MOV BX,13BB //执行正确,AX=0001,但是
//0000:0003 BBBB13 MOV BX,13BB 这里怎么变成向BX送13BB了呢
-t
AX=0001 BX=13BB CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=137F ES=137F SS=137F CS=0000 IP=0006 NV UP EI PL NZ NA PO NC
0000:0006 E30D JCXZ 0015
//BX结果不正确 | | |
|
|
|
|
[第1楼]
[ 回复时间:2009-06-14 10:07 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:3
注册日期:2009-06-08 15:13 |
吃惊,我把段地址换成1000竟然不会出现这种情况,难道我这机器上0000段地址有什么限制,不对啊,我换了台机器也是这样:
-a 1000:0
1000:0000 mov ax,2
1000:0003 mov bx,3
1000:0006
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=137A ES=137A SS=137A CS=1000 IP=0000 NV UP EI PL NZ NA PO NC
1000:0000 B80200 MOV AX,0002
-r ip
IP 0000
:3
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=137A ES=137A SS=137A CS=1000 IP=0003 NV UP EI PL NZ NA PO NC
1000:0003 BB0300 MOV BX,0003
-r ip
IP 0003
:0
-t
AX=0002 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=137A ES=137A SS=137A CS=1000 IP=0003 NV UP EI PL NZ NA PO NC
1000:0003 BB0300 MOV BX,0003
-t
AX=0002 BX=0003 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=137A ES=137A SS=137A CS=1000 IP=0006 NV UP EI PL NZ NA PO NC
1000:0006 803EA95600 CMP BYTE PTR 56A9],00 DS:56AC=00 | | |
|
|
|
|
[第2楼]
[ 回复时间:2009-06-14 18:19 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:3
注册日期:2009-06-08 15:13 |
只要段地址不是0000,执行结果都正确,唯独0000开始不行,为什么? | | |
|
|
|
|
[第3楼]
[ 回复时间:2009-06-15 13:19 ]
[引用]
[回复]
[ top ] | |
荣誉值:30
信誉值:0
注册日期:2009-04-09 10:05 |
debug程序的问题 和汇编无关 具体原理不明,你有兴趣 网上查下debug的源代码 | | |
|
|
|
|
[第4楼]
[ 回复时间:2009-06-15 13:35 ]
[引用]
[回复]
[ top ] | |
荣誉值:30
信誉值:0
注册日期:2009-04-09 10:05 |
突然想起~
内存0:0 起 1024个字节 存放了 中断向量表
T中断可能碰巧 中断类型码就是0 而你又恰好 修改了t中断的 中断例程入口地址
所以 你引发t中断的时候 中断处理程序 | | |
|
|
|
|
[第5楼]
[ 回复时间:2009-06-15 13:37 ]
[引用]
[回复]
[ top ] | |
荣誉值:30
信誉值:0
注册日期:2009-04-09 10:05 |
其实是个错误地址的 中断处理程序
我证实了下 好像t中断类型码 确实为0
因为我用 0:10 来做完全正常 | | |