47 lines
1.1 KiB
NASM
47 lines
1.1 KiB
NASM
; A simple program that print in output
|
|
; the max between two numbers.
|
|
;
|
|
; Author: Fabio Scotto di Santolo
|
|
; Date: 02/07/2025
|
|
|
|
global _start
|
|
|
|
section .text
|
|
_start:
|
|
mov eax, [a] ; load a value in eax register
|
|
mov ebx, [b] ; load b value in ebx register
|
|
cmp eax, ebx ; compare a and b values
|
|
jg greater
|
|
jle less_or_equal
|
|
|
|
less_or_equal: ; print b is greater or equal than b
|
|
mov eax, 0x04 ; write syscall
|
|
mov ebx, 1 ; STDOUT file descriptor
|
|
mov ecx, msg1
|
|
mov edx, len1
|
|
int 0x80 ; trigger syscall
|
|
jmp end
|
|
|
|
greater: ; print a is greater than b
|
|
mov eax, 0x04 ; write syscall
|
|
mov ebx, 1 ; STDOUT file descriptor
|
|
mov ecx, msg2
|
|
mov edx, len2
|
|
int 0x80 ; trigger syscall
|
|
jmp end
|
|
|
|
end:
|
|
; call syscall exit
|
|
mov eax, 0x1
|
|
xor ebx, ebx ; reset register to 0
|
|
int 0x80 ; trigger syscall
|
|
|
|
section .data
|
|
a: dd 10
|
|
b: dd 40
|
|
msg1: db "A is less or equal than B", 0xA
|
|
len1: equ $ - msg1
|
|
msg2: db "A is greater than B", 0xA
|
|
len2: equ $ - msg2
|
|
|