阳光ヾ… 发表于 2012-1-28 00:08:53

汇编问题直接跳过mov ax,4c00h

本帖最后由 阳光ヾ… 于 2012-1-29 10:39 编辑

各位帮我看看这段代码为什么直接跳出来而没有执行mov ax,4c00h和int21h呢 谢了。

科学发展观 发表于 2012-1-28 00:18:06

溢出了吧 我也菜鸟
你的SP指向栈的最上面 你在POP是不是溢出了

for 发表于 2012-1-28 08:16:35

栈定义不正确,ss=ffff0,sp=0是同一个地方,也就是说栈没有空间可用

阳光ヾ… 发表于 2012-1-28 09:22:24

我把栈地址改成AAAA也是那样的你看那个代码pop那句已经给DX赋值了,也就是说应该pop成功了,但是就到MOV DS:,dx那句就跳出来了没执行中断呀

阳光ヾ… 发表于 2012-1-28 09:22:56

for 发表于 2012-1-28 08:16 static/image/common/back.gif
栈定义不正确,ss=ffff0,sp=0是同一个地方,也就是说栈没有空间可用

我把栈地址改成AAAA也是那样的你看那个代码pop那句已经给DX赋值了,也就是说应该pop成功了,但是就到MOV DS:,dx那句就跳出来了没执行中断呀

Potato丶 发表于 2012-1-28 10:07:09

{:5_94:}那个SP不能为0的吧。。。最顶端会溢出的- -改成10看看喽

小马过河 发表于 2012-1-28 10:22:37

pop dx 出栈 sp=sp+2所以这句没问题 但压栈不行

你把 mov AX,20H换成200h 试试 是不是那段内存不能动

阳光ヾ… 发表于 2012-1-28 10:55:01

我试验出来了,就是不能把FFFFh这段地址当做栈段,否则就会出问题,换个别的地址当栈段就没问题,为什么当做栈段读出就有错误呢,用别的方法读就没问题,比如把他变成数据段就是mov DS,ffff就可以为什么呢?

阳光ヾ… 发表于 2012-1-28 19:03:37

哎,没人回答么?应该是我问的问题有点太小儿科了,我是菜鸟呀麻烦各位看看啦

小熊猫party 发表于 2012-1-28 21:22:09

你好关于你的问题我觉得应该是系统问题你看一下下面。


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问题 有些鱼友给我回答是系统问题,我推断应该也是系统问题吧!





bafengao 发表于 2012-1-28 21:44:13

学习 学习 想学习

阳光ヾ… 发表于 2012-1-29 10:11:35

哦,真的是呀,呵呵,谢谢啦。

da鹿 发表于 2017-5-28 18:41:06

你用什么编译器写的?
页: [1]
查看完整版本: 汇编问题直接跳过mov ax,4c00h