; Progama que solicita por pantalla 2 numeros enteros, los divide entre si y muestra el cociente y el resto
segment .data
; mensajes que se mostraran en pantalla para solicitar o mostrar datos
mensaje1 db 'Ingresa dividendo : '
lon_mensaje1 equ $ - mensaje1
mensaje2 db 'Ingresa divisor : '
lon_mensaje2 equ $ - mensaje2
mensaje3 db 'El cociente es: '
lon_mensaje3 equ $ - mensaje3
mensaje4 db 'y el resto es: '
lon_mensaje4 equ $ - mensaje4
; macro para convertir los caracteres a numeros enteros
%define BASE 10
segment .bss
; datos ingresados por pantalla como cadena de caracteres
dividendostr resb 10
lon_dividendo equ $ - dividendo
divisorstr resb 10
lon_divisor equ $ - divisor
; datos que mostrara por pantalla como cadena de caracteres
cocientestr resb 10
lon_cociente equ $ - cociente
restostr resb 10
lon_resto equ $ - resto
; datos en enteros, se reserva para cada uno de ellos el lugar para una doble palabra
restonum resd 1
dividendonum resd 1
divisornum resd 1
cocientenum resd 1
segment .text
global _start
_start
; solicita por pantalla el dividendo
Mov eax, 4
Mov ebx, 1
Mov ecx, mensaje1
Mov edx, lon_mensaje1
Int 80h
; lee el dato ingresado y lo guarda en dividendostr
Mov eax, 3
Mov ebx, 0
Mov ecx, dividendostr
Mov edx, 10
Int 80h
; solicita por pantalla el divisor
Mov eax, 4
Mov ebx, 1
Mov ecx, mensaje2
Mov edx, lon_mensaje2
Int 80h
; lee el dato ingresado y lo guarda en divisorstr
Mov eax, 3
Mov ebx, 0
Mov ecx, divisor
Mov edx, 10
Int 80h
; muestra por pantalla el cociente como cadena de caracteres
Mov eax, 4
Mov ebx, 1
Mov ecx, mensaje3
Mov edx, lon_mensaje3
Int 80h
Mov eax, 4
Mov ebx, 1
Mov ecx, cocientestr
Mov edx, lon_cociente
Int 80h
; muestra por pantalla el resto como cadena de caracteres
Mov eax, 4
Mov ebx, 1
Mov ecx, mensaje4
Mov edx, lon_mensaje4
Int 80h
Mov eax, 4
Mov ebx, 1
Mov ecx, restostr
Mov edx, lon_resto
Int 80h
; salida del programa
Mov eax, 1
Mov ebx, 0
Int 80h