2016-09-29 3 views
0

Я изучаю Assembly, и было бы неплохо, если бы я мог выводить число на экран вместо простой строки текста. Я знаю, как печатать символ с помощью mov eax, 1, но это не работает с DWords.Как напечатать DWord в сборке?

Я использую 64-разрядный Ubuntu.

Makefile:

all: 
    nasm -f elf64 asm.s -o asm.o 
    ld asm.o -o asm 
    rm asm.o 
+2

Makefile, не будет помогать никому не видя ваш код. Покажите нам, что вы уже написали, и конкретно описываете полученную ошибку и как вы пытались ее решить. –

+0

Привет, У меня нет никакого кода, я просто хочу знать, как я могу распечатать dword вместо строки ascii. Прошу прощения за публикацию make-файла, я подумал, что было бы полезно знать ассемблер и конфигурации. Виноват. –

+3

Вам нужно написать функцию/код, который преобразует число (например, значение dword) в строку и затем печатает строку с помощью syscall. Более простой способ связать это с помощью _GCC_, используйте функцию 'main' вместо' _start', а затем запустите библиотечные функции _C_, такие как 'printf', для печати форматированного текста. Этот учебник/код может помочь: https://www.csee.umbc.edu/portal/help/nasm/sample_64.shtml#printf1_64.asm –

ответ

1

Один простой способ печати материал будет только с помощью printf, вы спрашиваете, как напечатать DWORD, это легко:

extern _printf 

SECTION .data 
    msg:  db "Printing a dword: %d",10,0 
    number: dd 123456789 

SECTION .text 
    global start 

start: 
    push dword [number] 
    push dword msg 
    call _printf 
    add esp, 8 
    mov eax, 0 
    ret