Last active
May 6, 2026 22:51
-
-
Save reginaldojunior/9eaa61ab8b04d914e2aff57d5d5876fb to your computer and use it in GitHub Desktop.
exemplos assemblys
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| default rel | |
| section .data | |
| valorA dd 42 | |
| valorB dd 17 | |
| msg_maior db "valorA e maior que valorB", 10 | |
| len_maior equ $ - msg_maior | |
| msg_menor db "valorA e menor ou igual a valorB", 10 | |
| len_menor equ $ - msg_menor | |
| section .bss | |
| written resd 1 | |
| section .text | |
| global _start | |
| extern GetStdHandle | |
| extern WriteFile | |
| extern ExitProcess | |
| _start: | |
| sub rsp, 40 | |
| ; pegar stdout handle | |
| mov ecx, -11 ; STD_OUTPUT_HANDLE | |
| call GetStdHandle | |
| mov rbx, rax ; salvar handle | |
| mov eax, [valorA] | |
| mov edx, [valorB] | |
| cmp eax, edx | |
| jle menor | |
| maior: | |
| mov rcx, rbx ; handle | |
| lea rdx, [msg_maior] ; buffer | |
| mov r8d, len_maior ; tamanho | |
| lea r9, [written] ; bytes escritos | |
| mov qword [rsp+32], 0 ; lpOverlapped = NULL | |
| call WriteFile | |
| jmp fim | |
| menor: | |
| mov rcx, rbx | |
| lea rdx, [msg_menor] | |
| mov r8d, len_menor | |
| lea r9, [written] | |
| mov qword [rsp+32], 0 | |
| call WriteFile | |
| fim: | |
| xor ecx, ecx | |
| call ExitProcess |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ; montar: nasm -f win64 loop.asm -o loop.obj | |
| ; linkar: ld loop.obj -o loop.exe -lkernel32 -e _start | |
| extern GetStdHandle | |
| extern WriteConsoleA | |
| extern ExitProcess | |
| section .bss | |
| char resb 1 | |
| written resd 1 | |
| section .text | |
| global _start | |
| _start: | |
| ; HANDLE = GetStdHandle(-11) | |
| mov rcx, -11 | |
| call GetStdHandle | |
| mov rbx, rax | |
| xor rsi, rsi ; contador = 0 | |
| loop: | |
| cmp rsi, 11 ; até 10 | |
| jge fim | |
| ; ---- conversão número → ASCII ---- | |
| mov rax, rsi | |
| add al, '0' ; transforma em caractere | |
| mov [char], al | |
| ; WriteConsoleA(handle, &char, 1, &written, NULL) | |
| mov rcx, rbx | |
| lea rdx, [char] | |
| mov r8, 1 | |
| lea r9, [written] | |
| sub rsp, 40 | |
| mov qword [rsp+32], 0 | |
| call WriteConsoleA | |
| add rsp, 40 | |
| ; imprimir espaço (opcional) | |
| mov byte [char], ' ' | |
| mov rcx, rbx | |
| lea rdx, [char] | |
| mov r8, 1 | |
| lea r9, [written] | |
| sub rsp, 40 | |
| mov qword [rsp+32], 0 | |
| call WriteConsoleA | |
| add rsp, 40 | |
| inc rsi | |
| jmp loop | |
| fim: | |
| mov rcx, 0 | |
| call ExitProcess |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| default rel | |
| section .data | |
| numero dd 7 | |
| prefixo db " x ", 0 | |
| igual db " = ", 0 | |
| newline db 10, 0 | |
| section .bss | |
| buffer resb 32 | |
| written resd 1 | |
| section .text | |
| global _start | |
| extern GetStdHandle | |
| extern WriteFile | |
| extern ExitProcess | |
| ;--------------------------------------- | |
| ; imprime string (rcx=handle, rdx=ptr, r8=tamanho) | |
| print: | |
| mov r9, written | |
| mov qword [rsp+32], 0 | |
| call WriteFile | |
| ret | |
| ;--------------------------------------- | |
| ; converte inteiro em string (eax → buffer) | |
| ; retorna: rdx=ponteiro, r8=tamanho | |
| itoa: | |
| lea rsi, [buffer+31] | |
| mov byte [rsi], 0 | |
| mov ecx, 10 | |
| .convert: | |
| dec rsi | |
| xor edx, edx | |
| div ecx | |
| add dl, '0' | |
| mov [rsi], dl | |
| test eax, eax | |
| jnz .convert | |
| mov rdx, rsi | |
| lea r8, [buffer+31] | |
| sub r8, rsi | |
| ret | |
| ;--------------------------------------- | |
| _start: | |
| sub rsp, 40 | |
| ; stdout handle | |
| mov ecx, -11 | |
| call GetStdHandle | |
| mov rbx, rax | |
| mov r12d, 0 | |
| mov r13d, [numero] | |
| .loop: | |
| cmp r12d, 10 | |
| jg .fim | |
| ; imprime numero | |
| mov eax, r13d | |
| call itoa | |
| mov rcx, rbx | |
| call print | |
| ; " x " | |
| mov rcx, rbx | |
| lea rdx, [prefixo] | |
| mov r8d, 3 | |
| call print | |
| ; imprime contador | |
| mov eax, r12d | |
| call itoa | |
| mov rcx, rbx | |
| call print | |
| ; " = " | |
| mov rcx, rbx | |
| lea rdx, [igual] | |
| mov r8d, 3 | |
| call print | |
| ; resultado | |
| mov eax, r13d | |
| imul eax, r12d | |
| call itoa | |
| mov rcx, rbx | |
| call print | |
| ; newline | |
| mov rcx, rbx | |
| lea rdx, [newline] | |
| mov r8d, 1 | |
| call print | |
| inc r12d | |
| jmp .loop | |
| .fim: | |
| xor ecx, ecx | |
| call ExitProcess |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment