У меня есть файл с именем customer.txt
.Как взять строковый ввод из файла на языке ассемблера?
Customer.txt
amin jamal
Мне нужен пример кода, который принимает строку ввода (amin
) из customer.txt
файла и распечатать его с помощью C printf()
функции.
Мой код
section .bss
s: resb 100
section .data
fmt: db "%s",10,0
name: db "customer.txt",0
mode: db "r+",0
fp: dq 0
section .text
global main
extern fopen
extern fgets
extern printf
main:
push rbp
mov rdi , name;
mov rsi , mode
call fopen
mov [fp] , rax
mov rdi , s
mov rsi , 7
mov rdx , [fp]
call fgets
mov rdi , fmt
mov rsi , s
call printf
pop rbp
ret
Это не может в полной мере строку.
Я использую сборщик NASM. Моя ОС - 64-битная Linux.
Я использую команду nasm для сборки, компиляции и запуска.
nasm -f elf64 file.asm
gcc file.o
./a.out
результаты -
amin j
Что означает _ «не может взять полную строку» _ означает точно? Каковы некоторые входы и выходы? – Michael
Вы имеете в виду, что это занимает не более семи (cfr 'mov rsi, 7') символов? –
@ Майкл Я редактирую свой вопрос. – alhelal