请帮我看一下,这个程序错在哪
assume cs:daimadaima segment
dw 1h,2h,3h,4h,5h,6h,7h,8h
dw 0,0,0,0,0,0,0,0
start: mov ax,cs ;把代码段的段地址送入AX,继而把它送入SS,即堆栈段中的段地址与代码段的段地址一样,指向了一个段
mov ss,ax
mov sp,32;堆栈段的栈顶指针指向32
xor bx,bx;BX清0
mov cx,8;循环8次
s: push cs:;把代码段中的第一个字单元元素压/送入栈。
add bx,2
loop s
xor bx,bx
mov cx,8
s1: pop cs:;向代码段中的第一个字单元送入数据,这个数据字单元数据来源于栈。
add bx,2
loop s1
mov ax,4c00h
int 21h
daima ends
end start
有什么错误?贴图看一下。 栈有一个特点就是先入后出,你入栈的顺序是1,2,3,4,5,6,7,8那么出栈的顺序为8,7,6,5,4,3,2,1所以代码段的前八个字节会变成8,7,6,5,4,3,2,1这个顺序。改正:
mov bx,16;让bx指向第八个字
mov cx,8
s1: pop cs:
sub bx,2 ;bx-2, bx指向前一个字
loop s1
页:
[1]