Assignment 2
global _start
section .data
pmsg db 10,13,'Number of Positive Integers in Array :'
p_len equ -nmsg
newline db 10,13
newlen equ $-newline
array dq 12h,-2h,-4h,7h,-18h
n equ 5
section .bss
char_ans resb 2
pn resq 1
nn resq 1
%macro print 2
mov rax, 1
mov rdi, 1
mov rsi, %1
mov rdx, %2
syscall
%endmacro
%macro exit 0
mov rax, 60
mov rdi, 0
syscall
%endmacro
section .text
_start:
mov rsi, array
mov rcx, n
mov rbx, 00
mov rdx, 00
back:
mov rax, [rsi]
shl rax, 1
jc negative
inc rbx
jmp next
negative:
inc rdx
next:
add rsi, 8
dec rcx
jnz back
mov [pn], rbx
mov [nn], rdx
print pmsg, p_len
mov rax, [pn]
call display
print nmsg, n_len
mov rax, [nn]
call display
print newline, newlen
exit
display:
mov rbx, 16
mov rcx, 2
mov rsi, char_ans+1
next_no:
mov rdx, 0
div rbx
cmp dl, 09h
jbe add30
add dl, 07h
add30:
add dl, 30h
mov [rsi], dl
dec rsi
dec rcx
jnz next_no
print char_ans, 2
ret