|
发表于 2014-3-27 21:26:43
|
显示全部楼层
其实这个程序不是这样的,这个程序的意思就是要把上面的8个字型数据逆序过来并存放,用来说明栈先进后出的特性,其实是这样的:
codesg segment
dw 0123H, 0456H, 0789H, 0abcH, 0fedH, 0cbaH, 0987H
dw 0, 0, 0, 0, 0, 0, 0, 0 ;定义8个字型数据,将存放前面的8个数
start: mov ax, cs
mov ss, ax
mov sp, 32 ; 这里的意思是:嗯....,本来嘛!先定义了8个字型数据也就是16个字节
mov bx, 0 ;后面又定义了8个字的内存空间还是16个字节这样的话,也就总共0~31个字节
mov cx, 8 ;因为cs:16~cs:31要当做栈来使用,所以要初始化栈为空,所以sp要指向
;栈底,也就是指向cs:32
s:push cs:[bx]
add bx, 2
loop s
mov bx, 0
mov cx, 8
s0:pop cs:[bx]
add bx, 2
loop s0
mov ax, 4c00h
int 21h
codesg ends
end start
你上面的那个程序中的20,和初始化栈空间,我是真没看懂是啥意思!
|
|