ДЛ
Дарья Левандовская

Как вывести информацию на экран, assembler

► Всем доброго времени суток)
начал я изучать ассемблер
научился вот чему

section .data
msg: db "бла бла бла",10
.len: equ $ - msg
l_byte: db 4
h_byte: db 12

section .text
global _start
_start:

mov al,[l_byte]
mov bl,[h_byte]
add al,bl

mov eax, 4
mov ebx, 1
mov ecx, msg
mov edx, msg.len

int 0x80
mov eax, 1
mov ebx, 0
int 0x80
как вывести на экран значение регистров? в консоль! а не "gdb, print $al"
у меня Ubuntu 12.04 !!!NASM !!!

КЯ
Константин Яров

extern printf; Импорт функции printf

section .data
msg: db "бла бла бла",10
.len: equ $ - msg
tReax: db "eax = %i",10,0

l_byte: db 4
h_byte: db 12

section .bss
buff: resb 11

section .text
global main

;Макрос, для сокращения текста программы, чтобы каждый раз
;не писать загрузку регистров для системного вызова 4
%macro write 2
mov eax,4
mov ebx,1
mov ecx,%1
mov edx,%2
int 80h
%endmacro

main:
write msg, msg.len

mov al,[l_byte]
mov bl,[h_byte]
add al,bl

;Вывод содержимого регистра eax в десятичной системе
;c помощью системного вызова
pusha
mov edi,buff+10
mov ebx,10
mov [edi+1],bl
mov ecx,1
std
Repeat:
xor edx,edx
div ebx
add dl,30h
xchg al,dl
stosb
xchg dl,al
inc ecx
test eax,eax
jnz Repeat
inc edi
push ecx
push edi
write tReax, 6
pop ecx
pop edx
write ecx, edx
popa

;Вывод содержимого регистра eax в десятичной системе
;c помощью внешней функции из библиотеки Си
push eax
push dword tReax
call printf
add esp,8

mov eax, 1
mov ebx, 0
int 0x80

Компиляция, сборка и запуск:

Похожие вопросы
Как на TASM Assembler вывести число 12345 с помощью цикла ?
Assembler: Взаимодействие с пользователем
Assembler!!! help me!!
С чего начать? Assembler
Assembler. Как описать переменную?
Как вывести информацию на экран в Делфи?
Где ошибка в коде assembler!!!
Как вывести на экран
Как в программе вывести переменную на экран?
Взгляните на мой плохой Assembler