2015-01-07 38 views
0

我想問一下關於在NASM彙編器中製作feedline的問題。現在我們在大學裏創建簡單的程序。在彙編器中製作尾標NASM

當我想在make endline之前,我只是聲明瞭byte並覆蓋了「oah」。類似的東西:

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 

但它沒有工作。我會尋求幫助。

Ps。如果有人有一些時間,請檢查我的上一個線程有關寄存器工作:Binary representation in processor's registers in Nasm

回答

0

您可以使用.data節爲您想使用的字符串值\ n或其他字符串要使用和使用C函數printf和scanf處理IO。 只需添加:

extern printf, scanf 

在你的彙編文件的開頭,那麼:

section .data 
    input_n db 'n = ',0 
    number db '%d',0 
    endofline db 10,0 

,並調用的printf像這樣在.text段:

mov eax,endofline 
push eax 
call printf 
add esp,8 

進行編譯,一個Makefile like:

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中的事實函數

+0

好的,非常感謝你。我可以將它轉換爲任何小型圖書館嗎? – Martini

+0

它只是程序中的一部分,使用C printf和scanf函數。如果你想 –

+0

謝謝,我將在答案中爲你添加一個Makefile文件來編譯serveral文件。當然,請寄給我。 – Martini