我一直试图从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
提前感谢,不要对我太过刻薄,因为这是我在装配中的第一步:)
答案 0 :(得分:0)
mov -4(%ebp),%ecx
进行read
系统调用时,%ecx
应包含您希望存储数据的地址。换句话说,您希望%ecx
等于%ebp
减去4.但是这条mov指令会将%ecx
加载到%ebp - 4
的内存中。
我认为你想要的(在两个地方)都是
lea -4(%ebp), %ecx