阅读&在汇编ATT中写入和整数

时间:2016-04-10 17:01:42

标签: assembly x86 gas att

我一直试图从stdin中读取一个整数,然后在stdout中写入它,但我唯一能做的就是编写一个简单的hello世界。这是我的代码:

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


#Read
mov $3,%eax #READ
mov $0,%ebx #STDIN
mov -4(%ebp),%ecx 
mov $1,%edx
int $0x80  

#Write call
mov $4,%eax #WRITE
mov $1,%ebx #STDOUT
mov -4(%ebp),%ecx 
mov $1,%edx 
int $0x80  

mov $1,%eax #exit
mov $0,%ebx # exit code
int $0x80

提前感谢,不要对我太过刻薄,因为这是我在装配中的第一步:)

1 个答案:

答案 0 :(得分:0)

mov -4(%ebp),%ecx 

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

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

lea -4(%ebp), %ecx