アセンブリ言語のプログラムを作成していますが、スタックに文字を押し込んでコンソールに文字を表示しようとしています。私は文字の印刷に割り込み21Hのサービス番号2を使用しています。スタックを介したアセンブリ言語のputch関数
私はプログラムを実行すると、文字がコンソールに表示されますが、コンソールに無限の時間が表示されるという問題があります。私はループを使用していないので、コンソールに無限回印刷されている理由はわかりません。
問題を解明するために必要なヘルプ。
私はemu8086を使用しています。
.model small
.data
st1 db "A",'$'
.code
main proc
mov AX,@data
mov DS, AX
mov AX, offset st1
push AX
call putch
putch proc near
mov BP,SP
mov DX,[BP+2]
mov AH,2
INT 21H
ret
putch endp
mov AH,4CH
INT 21H
end main
'main'の途中に' putch'プロシージャを置かないでください。 – Jester
'putch'は"途中 "ですからです。 'call putch 'の後で、' AH = 4Ch/INT 21'の前です。それ以降に移動してください。また、呼び出し側で 'ret 02h'または' add sp、02h'を使用してください。もう1つのこと:あなたは 'mov ax、OFFSET st1'について確信していますか?' mov al、BYTE PTR [st1] 'であってはいけませんか? –
実際に私はスタックにst1をプッシュしようとしているし、スタックを介して文字を印刷しています。もし私がこのmov al、BYTE PTR [st1]をしたら、ALが8ビットで8ビットをスタックにプッシュできないのでスタックにプッシュすることはできません。 – Yousaf