我尝试了一下,并尝试了:
section .data
promptmsg: db 'Enter integer: '
msgsize: equ $-promptmsg
section .bss ;creating variables to store input
firstnum: resb 6
secondnum: resb 6
section .text
global _start
_start:
xor eax, eax
xor ebx, ebx
xor ecx, ecx
xor edx, edx
mov eax, 4 ;system call to write
mov ebx, 1
mov ecx, promptmsg
mov edx, msgsize
int 80h
xor eax, eax
xor ebx, ebx
xor ecx, ecx
xor edx, edx
mov eax, 3 ;system call to read
mov ebx, 0
mov ecx, firstnum
mov edx, 6
int 80h
push firstnum
xor eax, eax
xor ebx, ebx
xor ecx, ecx
xor edx, edx
mov eax, 4 ;system call to write
mov ebx, 1
mov ecx, promptmsg
mov edx, msgsize
int 80h
xor eax, eax
xor ebx, ebx
xor ecx, ecx
xor edx, edx
mov eax, 3 ;system call to read
mov ebx, 0
mov ecx, secondnum
mov edx, 6
int 80h
push secondnum
xor eax, eax
xor ebx, ebx
xor ecx, ecx
xor edx, edx
pop eax
pop ebx
add eax, ebx ;attempt to add firstnum and secondnum and store in EAX
push eax
xor eax, eax
xor ebx, ebx
xor ecx, ecx
xor edx, edx
mov eax, 4 ;once again a system call to write
mov ebx, 1
pop ecx
mov edx, 7
int 80h
xor eax, eax
xor ebx, ebx
xor ecx, ecx
xor edx, edx
mov eax, 1 ;exit safely and return 0
mov ebx, 0
int 80h
对所有 XOR 指令感到抱歉,我只是想确保在将寄存器用于系统调用之前清除它们,我仍在学习汇编,不确定哪些指令会使寄存器为空。
当我编译、链接和运行它时,只有包含 ENTER 字符,即换行符,我才能输入两个整数。不能将整数添加到其中,因此这已经引起了问题。因此,当我同时输入它们时,程序的屏幕上没有进一步的输出,它就结束了。
我该如何纠正?
(在这种情况下,不能选择将 C 或 C++ 与 ASM 结合使用。)