大会,读入2个整数

时间:2015-09-03 10:51:11

标签: linux assembly 64-bit user-input x86-64

我刚刚开始学习汇编程序(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

该计划执行以下操作:

  1. 显示prompt1
  2. 让用户输入数字
  3. 再次显示提示1
  4. 退出(应该让用户输入数字而不是退出?)
  5. 为什么第四个系统调用被忽略了?提前谢谢。

    编辑: 我用nasm。使用nasm -f elf64 bla.asm创建的目标文件。与ld -o bla bla.o

    相关联

0 个答案:

没有答案