;SUMA DE DOS NUMEROS LA RESTA ES EL PRIMERO AL SEGUNDO
section .data
; Mensaje de resultado
mensaje db "Resultado: "
longitud equ $ - mensaje
;Reserva del resultado delimita a 64 byts pero podemos ponerlo en equ $ - resultado
resultado times 64 db 0
resultado_lem equ 64
section .text
global _start
_start:
;Mostrar mensaje de resultado
mov rax, 1
mov rdi, 1
mov rsi, mensaje
mov rdx, longitud
syscall
;Sumar los numeros
mov rax, 561561561
add rax, 5155
;Divisición para obtener la unidades, decenas, centenas, etc
mov rbx, 10 ;Divisor
mov rsi, resultado_lem ;Cuanto va imprimer/tamaño
mov rcx, 0 ;Contador cuantos digitos almacenamos
;El resultado se convierte de derecha a izquierda
convertir:
xor rdx, rdx ;Limpiar y colocar 0
div rbx ;Dividir
add dl, '0' ;Convertir residuo a caracter ASCII
dec rsi ;Retroceder una posicion
mov [resultado + rsi], dl ;Guarda el caracter en resultado sumando el retroceso de posición
inc rcx ;Contador del los digitos
test rax, rax ;Comprueba que el cociente es cero
jnz convertir ;Si no es cero repite, cuando todo se almaceno y es 0 sale para imprimir
;Impresion del resultado
mov rax, 1
mov rdi, 1
lea rsi, [resultado + rsi] ;Movemos los datos a rsi para su impresión
mov rdx, rcx ;Cantidad real de digitos
syscall
; Terminar programa
mov rax, 60
xor rdi, rdi
syscall
To embed this project on your website, copy the following code and paste it into your website's HTML: