我似乎无法让程序使用push和pop工作,基本上我想按字符串并以相反的顺序弹出字符串。我在我的书中看到了一个例子并尝试将这个例子用于我的问题,当我运行程序时,我不会弹出字符串
.model small
.stack 100h
.data
message BYTE "This is a string",0
reverse = ($ - message) - 1
.code
main proc
mov ax, @data
mov ds, ax
; push on to the stack
mov cx, reverse
mov si,0
L1:
mov ax, message[si] ;get character
push ax ;push on stack
inc si
loop L1
;Pop the name from the stack, in reverse,
; and store in the reverse array.
mov cx, reverse
mov si, 0
L2:
pop ax ;get character
mov message[si], al ;store in string
inc si
loop L2
mov dx,OFFSET message ;display name
mov ax, 4c00h
int 21h
int 20h
main endp
end
答案 0 :(得分:1)
您希望反向字符串存储在哪里?在开始第二个循环之前,您没有将SI
或CX
归零,因此您只需覆盖过去message
的任何内容(即nameSize
以及可能的代码)。