我想问一下在NASM汇编程序中制作feedline。这时我们在大学里创建简单的程序。
当我之前想要制作结束语时,我只是声明了字节并覆盖了#34; 0ah"内。这样的事情:
section .text
global _start
_start:
mov eax,4
mov ebx,1
mov ecx,variable
mov edx,1
section .data
variable db 0ah
它有效,但需要很长时间。所以我想要写作" 0ah"直接进入寄存器,没有初始化变量,这样:
section .text
global _start
_start:
mov eax,4
mov ebx,1
mov ecx,10 ;; hexadecimal 0ah
mov edx,1
但它不起作用。我会寻求帮助。
聚苯乙烯。如果有人有时间,请检查我之前关于寄存器工作的帖子:Binary representation in processor's registers in Nasm
答案 0 :(得分:0)
您可以使用.data部分来表示您想要使用的字符串值,例如\ n或您要使用的其他字符串,并使用C函数printf和scanf来处理IO。 只需添加:
extern printf, scanf
在您的asm文件的开头,然后:
section .data
input_n db 'n = ',0
number db '%d',0
endofline db 10,0
在.text部分调用printf:
mov eax,endofline
push eax
call printf
add esp,8
要编译,可以使用Makefile:
main: main.o factorial.o
gcc -o main main.o facto.o
%.o: %.asm
nasm -f elf $^
clean:
rm -f a.out core *.o *~ main
其中main.asm将是你的主要asm程序和factorial.asm以及其他cotaining让我们说在nasm中的factotial函数