Я пытаюсь прочитать целое число из stdin и после его написания в stdout, но единственное, что я выполняю, это написать просто мир привет. Это код, который у меня есть:Чтение и запись и целое число в сборке ATT
.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
Спасибо заранее и не быть слишком сильно на меня, потому что это мои первые шаги в сборке :)
Хотя ответ сделок Нейта с одним вопросом, а другая на самом деле сводится к тому, что вы собираетесь do.You должны знать, что 'sys_read' системного вызова через 'int 0x80' ** не преобразует ** символ ASCII, представляющий числа, и сохраняет целое число в целевом элементе. Буквально, что хранится в -4 (% ebp), будут символы ASCII, которые составляют число, а не целочисленное значение. Если вам нужно, чтобы он преобразовывался в целое число, чтобы вы могли выполнить некоторую операцию и вычисления на нем, а затем записать его тогда вам понадобится код для преобразования ASCII в целое число при чтении и целое число в ASCII перед записью –
Эффективно 'sys_read' только считывает символы ASCII в буфер. и 'sys_write' записывает только буфер, содержащий символы ASCII. –
Спасибо за дополнительную информацию. – Miguel