+ -
当前位置:首页 → 问答吧 → 请教下简单的汇编问题,遇到这里就有点转弯不过来!

请教下简单的汇编问题,遇到这里就有点转弯不过来!

时间:2011-05-20

来源:互联网

Assembly code
assume cs:codesg
codesg 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
codesg ends
end


上面这个是王爽的例题


我解释下看对不对
mov ax,2000H 将2000H传入AX
mov ss,ax  
mov sp,0 设置栈顶
add sp,4 对这个不是很明白  
pop ax
pop bx
push ax
push bx
pop ax
pop bx
还有就是这个栈起始和结束是从哪里到哪里?谁能给我解释下每步意思!

作者: zhuayi112   发布时间: 2011-05-20

add sp,4就是单纯的将sp+4,没别的特殊意义,要说有意义也就是为了防止栈顶越界。不过这个+4有点太小了,你在windows虚拟出的DOS环境下运行的话会有问题。通过这道题,你只要搞清楚两点就行了,不用管它程序本身的逻辑。第一点:SS:SP指向当前栈顶元素;第二点:push操作和pop操作的具体过程。

作者: Night_Dystar   发布时间: 2011-05-21