三生石 发表于 2012-10-20 11:40:23

汇编语言课后检测点6.1第二题求助

这一题我按照课本给出的空间补充完整后成下面的样子,运行后得到正确的结果,
assume cs:code
code segment
    dw 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H
    dw 0,0,0,0,0   →我的疑问在这个地方
start: mov ax,cs
      mov ss,ax
       mov sp,26
       mov ax,0
       mov ds,ax
       mov bx,0
      mov cx,8
s: push
    pop cs:
    add bx,2
    loop s
   
    mov ax,4c00H
    int 21H

code ends
end start
上面箭头处是我的疑问所在,箭头处定义的空间是我们作为栈空间使用的,下面循环实际使用的只有一个字单元,debug跟踪sp一直在1aH和18H跳动,也就是实际使用的栈空间只有最后一个0所占的栈空间,那么我想是不是只要定义一个子单元做为栈空间就可以了呢? 但是我把程序改成下面这样后,确得不到正确结果
assume cs:code
code segment
    dw 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H
dw 0
start: mov ax,cs
    mov ss,ax
    mov sp,18
    mov ax,0
    mov ds,ax
    mov bx,0
    mov cx,8
s: push
    pop cs:
    add bx,2
    loop s
   
    mov ax,4c00H
    int 21H

code ends
end start

敉沧 发表于 2012-10-20 11:40:24

因为程序会引发中断,需要进行现场保护。学到后边的中断你就明白了

luffy 发表于 2012-10-22 10:30:12

我才学一半,大家一起努力把

三生石 发表于 2012-11-4 13:25:22

敉沧 发表于 2012-10-20 11:40 static/image/common/back.gif
因为程序会引发中断,需要进行现场保护。学到后边的中断你就明白了

谢谢!看来还要加油继续往后学习啊

三生石 发表于 2012-11-4 13:25:59

luffy 发表于 2012-10-22 10:30 static/image/common/back.gif
我才学一半,大家一起努力把

我才学习到第九章。共勉之

大头 发表于 2012-11-12 23:33:45

我也不明白:'(

三生石 发表于 2012-11-15 23:46:39

大头 发表于 2012-11-12 23:33 static/image/common/back.gif
我也不明白

牵扯到中断~~往后继续学就可以明白了~~

爛泥糊墻 发表于 2013-9-20 18:20:06

我也试过只定义一个字空间,但是sp改为18H 就没有问题了,理论上12h就好了的,但是后面几个字不能复制,我也是刚学到这里。{:5_109:}
页: [1]
查看完整版本: 汇编语言课后检测点6.1第二题求助