在汇编程序NASM中制作终结

时间:2015-01-07 16:08:35

标签: line nasm

我想问一下在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

1 个答案:

答案 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函数