Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; adaptação do programa do capitulo 4 do livro
- ; linguagem assembly para IBM PC - Peter Norton.
- ; Imprimindo numeros binários
- ; Cacio José Gazola - Versão de teste 11ago2012
- ;***********************************************
- ; Correção realização com ajuda de Mounter, do osdevbrasil.net
- section .data
- descri: db "Adaptação do programa 'imprimindo números binários', CAP 4, \
- livro Linguagem assembly para IBM PC",10," de Peter Norton e John Socha",10
- cdes: equ $-descri
- linha: db 10
- ind: equ 8
- dado: equ 0x45
- section .bss
- bff: resb 8 ; buffer com 0's e 1's
- section .text
- global main
- ;Rotina de impressão do dados do buffer
- imprime:
- mov edx,8 ; imprime dados do buffer
- mov ecx,bff
- mov ebx,1
- mov eax,4
- int 0x80 ; usando a syscall write
- mov edx,1
- mov ecx,linha
- mov ebx,1
- mov eax,4
- int 0x80
- ret
- ;Rotina principal do programa, em conformação com as especificações do GCC
- main:
- mov edx,cdes ; imprime texto inicial do programa
- mov ecx,descri
- mov ebx,1
- mov eax,4
- int 0x80 ; usando a syscall write
- mov esi,bff ; si aponta para o inicio do buffer
- xor ecx,ecx
- mov cx,ind ; cx conta 8 bytes do buffer
- xor eax,eax ; zera eax
- mov al,dado ; al contem dados para rodar
- xor edx,edx
- aqui:
- mov dl,0 ; prepara o temporario
- rcl al,1 ; roda bit para carry
- adc dl,0x30 ; transforma bit em byte ASCII em al
- mov byte[esi],dl ; move dl para buf
- inc esi ; si aponta para proximo byte no buffer
- loop aqui ; roda 8 vezes
- call imprime ; imprime buffer
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement