私は練習のためにいくつかの簡単な問題に取り組んでいます。問題の 1 つは、数値を読み取り、その数値に 1 を加えたものを出力することです。
例えば:
Please enter a number: 4
5
さて、その入力と出力があれば、それは簡単なはずです。しかし、プログラムで複数の数字を処理できるようにしたいと考えています。そして、それが私が困惑しているところです。999 の入力が与えられた場合、プログラムはどのようにして最後の 9 を 0 にし、10 の列に 1 を追加することを知ることができるのでしょうか? では、数字をもう 1 桁足して 1000 にすることをどのように知ることができるでしょうか。
これまでの私のコードは次のとおりです。
SECTION .data
msg db "Please enter a number: ",0
msglen EQU $-msg
sz EQU 32
NUL EQU 0
len EQU 32
SECTION .bss
num resb len
SECTION .text
GLOBAL _start
_start:
Msg: ; display the message
mov eax, 4
mov ebx, 1
mov ecx, msg
mov edx, msglen
int 80h
Read: ; read in the number
mov eax, 3
mov ebx, 1
mov ecx, num
mov edx, len
int 80h
Length: ; Find length of string
mov eax, num
mov ebx, 0
loop:
cmp BYTE[eax], NUL
je Set
inc eax
inc ebx
jmp loop
Set: ; set up the registers and variables
mov ecx, num
Print: ; main section - prints out the number plus 1
cmp BYTE[ecx], NUL
je Exit
mov eax, 4
mov ebx, 1
mov edx, 1 ; NOTE- does not yet add 1 to the number
int 80h
inc ecx
jmp Print
Exit: ; exits safely
mov eax, 1
mov ebx, 0
int 80h
誰かがこの問題を解決する方法を教えてもらえますか? 追加部分がわかりません。32ビットまでの複数の数字を出力できますが、追加は謎です。
前もって感謝します、
ライリー