1
例えば、文字列を1234を文字列に入力すると、整数1234に変換されます。 しかし、何が問題なのか分かりません。アセンブリ内の整数への文字列
%include "asm_io.inc"
segment .bss
string resb 32
segment .text
global main
main:
enter 0,0 ; setup stack frame
pusha
mov edx, 0
mov ecx, 0
mov ebx, 0
repeat: call read_char
sub eax, 48
mov esi, eax
mov eax, ecx
mov ebx, 10
mul ebx
mov ecx, eax
add ecx, esi
mov byte [string+edx], al
cmp al, 0x0a
jne repeat
mov byte [string+edx-1], 0
mov eax, ecx
call print_int
call print_nl
popa
mov eax, 0 ; return value
leave ; leave stack frame
ret
GDBは優れたデバッガです。便利なスキルを学ぶには、デバッガを使用して、コードをステップ実行しながらメモリとレジスタを見ることができます。 –
私はいくつかの問題があると思います。あなたは 'cmp al、0x0a'をします。改行文字をテストしようとしていますが、そこから48を効果的に差し引いて_AL_を上書きしています。したがって、あなたはもはや 'read_char'によって返された元の値 –