新手问数据逆序存放问题
assume cs:codea segment
dw 1,2,3,4,5,6,7,8
a ends
b segment
dw 0,0,0,0,0,0,0,0
b ends
code segment
start:
mov ax,b
mov ss,ax
mov sp,16
mov ax,a
mov ds,ax
mov bx,0
mov cx,8
s: push ds:[bx]
add bx,2
loop s
mov ax,4c00h
int 21h
code ends
end start
想实现a段数据逆序存放在b段但是出现两个问题
1.把sp设置为16的时候调试会出错 我在执行第一和第二次-t命令的时候a段和b段的数据都是对的 a为1 2 3 4。地址1447:0000-000f b为0 0 0 。地址1448:0000-000f
但是在执行第三次-t命令的时候就发现b段的1448:0006就不是0了
2.我把mov sp,16 改成mov sp,16h错误就没了 数据也被逆序存放了 但是逆序存放的地址变成1448:0006-0010 就不是b段了
出错信息是 the NTVDM CPU has encountered an illegal instruction.
CS:011e IP:018a OP:0f 00 0a 00 a7 choose 'close' to terminate the application
1448:0000 000f这个段好像没执行一条指令里面数据就会变一次就好像每次都会自己写入固定的数据一样
请高手帮帮我
[ 本帖最后由 kd83kdi93 于 2012-12-30 13:10 编辑 ]