汇编实现栈的操作

assume cs:code,ss:stack
stack segment
    db 4 dup(11h);create 4 byte's memory and inject 11*4
stack ends

code segment
    start:
        mov ax,stack
        mov ss,ax
        mov ax,4
        mov sp,ax
        mov ax,8888h
        push ax ;acording to the size of ax

code ends
end start

assume干嘛的我也不清楚,其实去掉这一句没什么影响

下面就是定义一个栈段,存的地方好像编译器会处理,你可以直接读

 

 还没定义sp的时候是这样的,一旦定了sp

 

 就是随机数

 

 这是你定义的sp,指向第四对值,因为你的栈是db就是两个数为一组的

 

 push一下,发现sp变成了2

 

 

 sp push就向后退,好像只能push ax16位寄存器大小的数,就是十六进制0000h 二进制就是0000 0000 0000 0000

如果你用了pop

 

 就变回原来的样子,sp到原来的4

posted @ 2022-11-26 17:07  Z_Chan  阅读(42)  评论(0编辑  收藏  举报