王爽的汇编语言实验三
本帖最后由 小名叫(DAD) 于 2012-8-23 14:48 编辑我是新手,刚学汇编语言,做这个实验三的时候,做到POP AX 就说CPU遇到无效指令,想知道为什么!谢谢!
实验3的如下:
assume cs:qq
qq segment
mov ax,2000h
mov ss,ax
mov sp,0
add sp,4
pop ax
pop bx
push ax
push bx
pop ax
pop bx
mov ax,4c00h
int 21h
qq ends
end
本帖最后由 メ㊣逆ご帅☆ 于 2012-8-23 09:59 编辑
下面那位说的是错的哦。。pop 指令并不会修改数据push才会,况且2000h地方好像很安全
add sp,6就行(当然也可以更大的数值,5我没试过)
因为DEBUG要先中断后才会去执行你写的程序
中断会保存Flags,cs,ip(不知道会不会保存其他的),如果为6可以避免栈顶越界而产生非法操作被T掉
我SP修改成6后POP两次仍然会涉及SP为4的地方却没被T,证明下面是错滴
因为你用的那段栈空间里面有系统占用的数据,所以不让你pop,你可以在安全空间测试你的程序 你换个段地址试试。。。 メ㊣逆ご帅☆谢谢这位大神,4,5都不行 6是可以的 别的没有试。才学不懂你说的中断 但是谢谢你 我也遇到了同样的问题,我的是本本。楼主的是什么硬件? 你看的书应该是第一版
在第二版中是
add sp,10
页:
[1]