Sunday, 19 April 2015

shiftadd



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 add_shift_proc
    call exit
   

exit:
    mov rax,60
    mov rdi,0
    syscall



add_shift_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                   

    mov [num],bl           

    xor rbx,rbx               
    xor rcx,rcx               
    xor rdx,rdx               
    xor rax,rax               
   
    mov dl,08               
    mov al,[num1]               
    mov bl,[num]               

p11:    shr bx,01               
    jnc p                   
    add cx,ax               
p:    shl ax,01               
    dec dl                   
    jnz p11                   

    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