OneCompiler

Find smallest and largest number from an array

97

section .data
a db 5,2,8,1,7,3,9
l equ $-a
n db 10
section .bss
s resb 1
g resb 1
b resb 5
section .text
global _start
_start:
mov al,[a]
mov [s],al
mov [g],al
mov rcx,l-1
lea rsi,[a+1]
l1:
mov al,[rsi]
cmp al,[s]
jl u
cmp al,[g]
jg v
nxt:inc rsi
loop l1
jmp p
u: mov [s],al
jmp nxt
v: mov [g],al
jmp nxt
p: movzx rdi,byte [s]
call pn
movzx rdi,byte [g]
call pn
mov rax,60
xor rdi,rdi
syscall
pn:
push rax
push rcx
push rdx
push rsi
mov rax,rdi
lea rsi,[b+4]
mov byte [rsi],0
mov rcx,10
.x: dec rsi
xor rdx,rdx
div rcx
add dl,'0'
mov [rsi],dl
test rax,rax
jnz .x
mov rdx,b+4
sub rdx,rsi
mov rax,1
mov rdi,1
mov rsi,rsi
syscall
mov rax,1
mov rdi,1
mov rsi,n
mov rdx,1
syscall
pop rsi
pop rdx
pop rcx
pop rax
ret