汇编 ATT 中的读写和整数

Read & write and integer in assembly ATT

我一直在尝试从 stdin 读取一个整数,然后将其写入 stdout,但我唯一完成的就是编写了一个简单的 hello world。这是我的代码:

.global _start
_start:
push %ebp
movl %esp,%ebp
subl ,%esp 


#Read
mov ,%eax #READ
mov [=10=],%ebx #STDIN
mov -4(%ebp),%ecx 
mov ,%edx
int [=10=]x80  

#Write call
mov ,%eax #WRITE
mov ,%ebx #STDOUT
mov -4(%ebp),%ecx 
mov ,%edx 
int [=10=]x80  

mov ,%eax #exit
mov [=10=],%ebx # exit code
int [=10=]x80

提前致谢,不要对我太苛刻,因为这是我组装的第一步:)

mov -4(%ebp),%ecx 

进行 read 系统调用时,%ecx 应该包含您希望存储数据的地址。换句话说,您希望 %ecx 等于 %ebp 减 4。但是此 mov 指令将加载 %ecx 内存中的内容 %ebp - 4

我想你想要的(在两个地方)是

lea -4(%ebp), %ecx