请教,汇编小程序改错!
;程序的主要思路是:程序运行时,数据存放在cs:0 ~cs:15单元中,
;共八个字单元。依次将这八个字单元中的数据入栈,然后出栈到这8个字单元中
;从而实现数据的逆序存放.
;问题是我在dos下用debug调试的时候,发现程序运行的结果不对
;及没有按照完全按逆序存放到数组中,请指教
assume cs:codesg
codesg segment
dw 0123h, 0456h, 0789h, 0abch, 0defh, 0fedh, 0cbah, 0987h
dw 0 , 0, 0, 0, 0, 0, 0, 0
start:
mov ax, codesg;
mov ss, ax
mov sp, 32
mov bx, 0
mov cx, 8
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
codesgends
end start
[解决办法]
你怎么知道cs:[bx](mov bx,0)一定就是0123h的地址?
我建议你先用lea在bx中装入0123h的偏移址,之后再用cs:[bx]。试一下...
[解决办法]
同意楼上看法