根据王爽汇编实验五第六题改的题目,求解答!
a segment
db 1,2,3,4,5,6,7,8,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
a ends
b segment
db 0,0,0,0,0,0,0,0
b ends
code segment
start:mov ax,a
mov ds,ax
mov ax,b
mov ss,ax
mov sp,8
mov bx,0
mov cx,8
s:mov dl,ds:[bx]
push dl
inc bx
loop s
mov ax,4c00h
int 21h
//这是我自己写的代码,可是有错误,需要怎么改哦?
code ends
end start 展开
首先,纠正楼主你的错误
8006CPU的入栈和出栈操作都是以字为单位进行的(主要)
p136 (6) 编写code段中的代码,用push指令将a段中的前8个字型数据,逆序存储到b段中(亲,你看错题目了吧,8个字型数据哦)
所以程序应该是这样的
assume cs:code
a segment
dw 1,2,3,4,5,6,7,8,0ah,0bh,0ch,0dh,0eh,0fh,0ffh ;改了这里
a ends
b segment
dw 0,0,0,0,0,0,0,0 ;改了这里
b ends
code segment
start:mov ax,a
mov ds,ax
mov ax,b
mov ss,ax
mov sp,10H ;改了这里
mov bx,0
mov cx,8
s:mov dx,ds:[bx] ;改了这里
push dx ;改了这里
add bx,2 ;改了这里
loop s
mov ax,4c00h
int 21h
code ends
end start
PS:若有不明白的地方,可以追问