我正在解决一些简单的练习问题,其中一个问题是读入一个数字,然后输出该数字加 1。
例如:
Please enter a number: 4
5
现在,有了这个输入和输出,它应该很容易。但我想让我的程序能够处理多个数字。这就是我难过的地方。因为如果给我 999 的输入,我的程序怎么会知道将最后的 9 设为 0,并将 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 位,但添加只是一个谜。
提前致谢,
赖莱