Arquitectura de computadores
str_pede db "Introduza numero em hexadecimal: "
TAM_PEDE equ $ - str_pede
str_resultado db "Resultado: "
TAM_RESULTADO equ $ - str_resultado
str_op db "Introduza o operador (+,-,*,/): "
TAM_OP equ $ - str_op
str_eol db 0xA, 0xA
TAM_EOL equ $ - str_eol
num1 dd 0 num2 dd 0 resultado dd 0
tam_buffer dd 0
MAX_BUFFER equ 80+2
;----------------------------------------------------------------------------- section .bss
buffer resb MAX_BUFFER
;----------------------------------------------------------------------------- section .text
global _start
_start:
mov eax, ds mov es, eax
; BLOCO 1
; Pede os numeros e o operador
; pede, le^ e converte num1 call pede_num mov [num1], eax
; pede, le^ e converte num2 call pede_num mov [num2], eax
; pede operador mov edx, TAM_OP mov ecx, str_op mov ebx, 1 mov eax, 4 int 0x80
; le^ operador mov edx, MAX_BUFFER mov ecx, buffer mov ebx, 0 mov eax, 3 int 0x80
; BLOCO 2
; Executa a operacao
mov eax, [num1] mov ebx, [num2] mov dl, [buffer] ; le^ o 1.o caracter do "operador"
cmp dl, '+' je soma cmp dl, '-' je subtrai cmp dl, '*' je