16位汇编问题不懂问问各位 pop ax的问题
假如1000:e是11 1000:f是22
ss是1000 sp是e
pop ax后,1000:e和1000:f的内容都变了。但书上却说是不变?
原问题是这样的 我用debug试了试貌似是这样 啥原因呢? 中断处理程序导致的?
无聊看到一个问题 试了一下果然成了问题 不懂来请教本版的牛人 谢谢了~
//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结论:单步中断干的好事