汇编问题直接跳过mov ax,4c00h
本帖最后由 阳光ヾ… 于 2012-1-29 10:39 编辑各位帮我看看这段代码为什么直接跳出来而没有执行mov ax,4c00h和int21h呢 谢了。 溢出了吧 我也菜鸟
你的SP指向栈的最上面 你在POP是不是溢出了 栈定义不正确,ss=ffff0,sp=0是同一个地方,也就是说栈没有空间可用 我把栈地址改成AAAA也是那样的你看那个代码pop那句已经给DX赋值了,也就是说应该pop成功了,但是就到MOV DS:,dx那句就跳出来了没执行中断呀 for 发表于 2012-1-28 08:16 static/image/common/back.gif
栈定义不正确,ss=ffff0,sp=0是同一个地方,也就是说栈没有空间可用
我把栈地址改成AAAA也是那样的你看那个代码pop那句已经给DX赋值了,也就是说应该pop成功了,但是就到MOV DS:,dx那句就跳出来了没执行中断呀 {:5_94:}那个SP不能为0的吧。。。最顶端会溢出的- -改成10看看喽 pop dx 出栈 sp=sp+2所以这句没问题 但压栈不行
你把 mov AX,20H换成200h 试试 是不是那段内存不能动 我试验出来了,就是不能把FFFFh这段地址当做栈段,否则就会出问题,换个别的地址当栈段就没问题,为什么当做栈段读出就有错误呢,用别的方法读就没问题,比如把他变成数据段就是mov DS,ffff就可以为什么呢? 哎,没人回答么?应该是我问的问题有点太小儿科了,我是菜鸟呀麻烦各位看看啦 你好关于你的问题我觉得应该是系统问题你看一下下面。
mov bx,2
mov ax,0ffffh
mov ss,ax
mov sp,0
mov ax,20h
mov ds,ax
pop dx
mov ds:,dx
这里我把add bx,2 包括这条指令和下面指令去掉,就会弹出提示框说有错误。
在看看下面:
ov bx,2
mov ax,0ffffh
mov ss,ax
mov sp,0
mov ax,20h
mov ds,ax
pop dx
mov ds:,dx
add dx,2
执行后就有中断,我个人觉得应该就是系统设置问题吧!因为前不久有个 mov ds,ax问题 有些鱼友给我回答是系统问题,我推断应该也是系统问题吧!
学习 学习 想学习 哦,真的是呀,呵呵,谢谢啦。 你用什么编译器写的?
页:
[1]