我目前正在开展一个装配项目。该代码适用于添加1位整数和1位数的和,但当我输入2位整数时,程序将退出或不返回任何输入。 到目前为止,这是我的工作:
SYS_EXIT equ 1
SYS_READ equ 3
SYS_WRITE equ 4
STDIN equ 0
STDOUT equ 1
segment .data
msg1 db "Enter the first digit: ",0xA, 0xD
len1 equ $- msg1
msg2 db "Please second digit: " ,0xA, 0xD
len2 equ $- msg2
msg3 db "The sum is "
len3 equ $- msg3
segment .bss
num1 resb 255
num2 resb 255
res resb 255
section .text
global _start
_start:
mov eax, SYS_WRITE
mov ebx, STDOUT
mov ecx, msg1
mov edx, len1
int 0x80
mov eax, SYS_READ
mov ebx, STDIN
mov ecx, num1
mov edx, 255
int 0x80
mov eax, SYS_WRITE
mov ebx, STDOUT
mov ecx, msg2
mov edx, len2
int 0x80
mov eax, SYS_READ
mov ebx, STDIN
mov ecx, num2
mov edx, 255
int 0x80
mov eax, SYS_WRITE
mov ebx, STDOUT
mov ecx, msg3
mov edx, len3
int 0x80
mov eax, [num1]
sub eax, '0'
mov ebx, [num2]
sub ebx, '0'
add eax, ebx
add eax, '0'
mov [res], eax
mov eax, SYS_WRITE
mov ebx, STDOUT
mov ecx, res
mov edx, 1
int 0x80
;move eax, SYS_EXIT
;int 0x80
exit:
mov eax, SYS_EXIT
xor ebx, ebx
int 0x80
这是我的示例输入:
请输入第一位数字:5
请第二位:2
总和是:7
我的问题是:
请输入第一位数字:5
请第二位:5
总和是:
总和返回0.