► Всем доброго времени суток)
начал я изучать ассемблер
научился вот чему
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 !!!
Другие языки программирования и технологии
Как вывести информацию на экран, assembler
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
Компиляция, сборка и запуск:

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
Компиляция, сборка и запуск:

Похожие вопросы
- Создать список. вывести его на экран.
- Как преобразуется обычная прога на си, где надо вывести слово на экран в маш.код и что процессор там считает?
- Как работают устройства ввода-вывода или как вывести пиксель на экран, не задействуя WinAPI и пр.?
- Как в Паскале можно описать курсор мыши? Именно вывести его на экран и определить его положение при выполнении программы
- Вопрос по Ассемблеру - Ввести с клавы 3 слова и вывести их на экран лесенкой Tasm
- Как в visual basic сделать запуск алгоритма щелчком прав. кнопки мыши? Как связать 2 формы и вывести их на экран вместе?
- Где найти готовый исходник простенькой операционной системы, которая умеет только-загрузится, вывести сообщение на экран
- C++ Как вывести вектор на экран и вообще обращаться к нему?
- 1.Заполнить массив случайными числами. Вывести элементы массива на экран. Заменить все его минимальные элементы нулями.
- Как на TASM Assembler вывести число 12345 с помощью цикла ?