2016-10-23 13 views
0

私はプッシュとポップを使用して動作するようにプログラムを取得することはできません、基本的に私は文字列をプッシュし、逆の順序で文字列をポップしたい。私は私の本では例を見て、私の問題にその例を実装しようとした私は、プログラムを実行したときに私は、文字列にあなたが逆の文字列が保存されることを期待しないプッシュとポップのメソッドを使用して文字列を逆転

.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

何が起こりますか?代わりに何が起こるのですか?常にこの情報を提供してください。 "それは動作しません"エラーの説明ではありません。 – fuz

+3

'cx'と' si'をリロードする必要があります。 PS:デバッガの使い方を学んでください。 – Jester

+0

また、 'nameSize [si]'を 'message [si]'に置き換える必要があります。 –

答えて

1

をポップしていないということですか? 2番目のループを開始する前にSIまたはCXにゼロを設定していないので、message(つまりnameSizeとおそらくあなたのコード)を上書きします。

関連する問題