16位汇编问题不懂问问各位 pop ax的问题
假如1000:e是11 1000:f是22
ss是1000 sp是e
pop ax后,1000:e和1000:f的内容都变了。但书上却说是不变?
原问题是这样的 我用debug试了试貌似是这样 啥原因呢? 中断处理程序导致的?
无聊看到一个问题 试了一下果然成了问题 不懂来请教本版的牛人 谢谢了~
2012-01-23 22:48
2012-01-23 22:48
程序代码://debug
-r ss
SS 0B91
:1000
-r sp
SP FFEE
:0010
-a
0B91:0100 pop ax
0B91:0101 int 3
0B91:0102
-e 1000:11
1000:0011 00.99
-e 1000:10
1000:0010 00.88
-d ss:10 11
1000:0010 88 99 ..
-t
AX=9988 BX=0000 CX=0000 DX=0000 SP=0012 BP=0000 SI=0000 DI=0000
DS=0B91 ES=0B91 SS=1000 CS=0B91 IP=0101 NV UP EI PL NZ NA PO NC
0B91:0101 CC INT 3
-d ss:c 13
1000:0000 01 01 91 0B ....
1000:0010 F5 05 00 00 ....
//anlysis
-t is int1 check intel pg usr mannual, named sys_trap?
sys_stack initialize position [1000:0010]
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +10 +11 +12 +13
sp0 ;sp = sp0;
sp1 ;ax=9988h,sp = sp1;
;-t(enter int1)1.push eflag 2. push cs 3. push ip(just consider push operation)
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +10 +11 +12 +13
ip cs eflg ;sp2->ip
;-t restore
sp3结论:单步中断干的好事

2012-01-23 23:55
2012-01-24 00:11