我刚刚开始学习汇编程序(2天前)用于x86 arch(但我在x86_64上编程,见下文)。我想读2个数字,为此我使用Linux系统调用(64位系统)。好吧,我在unitstd_64.h中查找了相应的读/写数字,似乎工作正常。但有一件事困扰我(首先是代码):
section .data
prompt1 db "Enter a number: ", 0
lenMsg equ $-prompt1
outmsg db "Entered: ", 0
lenOut equ $-outmsg
section .bss
input1 resd 1
input2 resd 1
segment .text
global _start
_start:
mov rax, 1
mov rdi, 1
mov rsi, prompt1
mov rdx, lenMsg
syscall
;read input number 1
mov rax, 0
mov rdi, 2
mov rsi, input1
mov rdx, 1
syscall
;prompt another number
mov rax, 1
mov rdi, 1
mov rsi, prompt1
mov rdx, lenMsg
syscall
;read input number 1
mov rax, 0
mov rdi, 2
mov rsi, input2
mov rdx, 1
syscall
;exit correctly
mov rax, 60
mov rdi, 0
syscall
该计划执行以下操作:
为什么第四个系统调用被忽略了?提前谢谢。
编辑: 我用nasm。使用nasm -f elf64 bla.asm创建的目标文件。与ld -o bla bla.o
相关联