Sunday, 19 April 2015

succadd



section .data

    msg_enter db 10,'Enter two digit Number::'
    msg_enter_len equ $-msg_enter
    res db 10,'Multiplication of elements is::'
    res_len equ $-res
   


section .bss
    num resb 03
    num1 resb 01
    result resb 04
    numascii resb 2


%macro dispmsg 2
    mov rax,1
    mov rdi,1
    mov rsi,%1
    mov rdx,%2
    syscall
%endmacro

%macro accept 2
    mov rax,0
    mov rdi,0
    mov rsi,%1
    mov rdx,%2
    syscall
%endmacro


section .text

global _start
_start:

       
    xor rax,rax       
    xor rbx,rbx
    xor rcx,rcx
    xor rdx,rdx
    mov byte[result],0
    mov byte[num],0
    mov byte[num1],0

    
    call succ_add_proc
    jmp exit

   



exit:
    mov rax,60
    mov rdi,0
    syscall

succ_add_proc:

    dispmsg msg_enter,msg_enter_len       
    accept num,3           
    call packnum                   

    mov [num1],bl               
   
    dispmsg msg_enter,msg_enter_len       
    accept num,3   
    call packnum                   
                       

    xor rcx,rcx               
    xor rax,rax               
    mov rax,[num1]               
   
repet:
    add rcx,rax           
    dec bl                   
    jnz repet           

    mov [result],rcx           
    dispmsg res,res_len           
    mov rbx,[result]           

    call display_16bit_proc           
ret

packnum:
    xor rbx,rbx
    xor rcx,rcx
    xor rax,rax

    mov rcx,02
    mov rsi,num
up1:
    rol bl,04

    mov al,[rsi]
    cmp al,39h
    jg p1
    sub al,30h
    jmp p2
p1:     sub al,37h
p2:    add bl,al
    inc rsi
    loop up1
ret

display_16bit_proc:
    mov rcx,4
    mov rdi,result
dup1:
    rol bx,4
    mov al,bl
    and al,0fh
    cmp al,09h
    jg p3
    add al,30h
    jmp p4
p3:     add al,37h
p4:    mov [rdi],al
    inc rdi
    loop dup1

    dispmsg result,4
ret


No comments:

Post a Comment