Non Overlap Block Transfer : MIT


;Non Overlap Block Transfer

section .data
msg1 db "Intitial block is : "
msg1len equ $-msg1
msg2 db "Transfered block is : "
msg2len equ $-msg2
nline db 10
space db 20h

srcblk db 10h,20h,30h,40h,50h
dstblk times 5 db 00

section .bss
dispbuff resb 03

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

section .text

global _start
_start:
print msg1,msg1len
print nline,01

mov rsi,srcblk

call dispblk_proc
print nline,01

mov rsi,srcblk
mov rdi,dstblk
mov rcx,05

up1:
mov al,[rsi]
mov [rdi],al
inc rsi
inc rdi
loop up1

print msg2,msg2len
mov rsi,dstblk
call dispblk_proc
print nline,01

mov rax,60
mov rdi,00
syscall

dispblk_proc:
 mov rcx,05
repeat: mov bl,[rsi]
 push rsi
 push rcx
 call disp_proc
 print space,01
 pop rcx
 pop rsi
 inc rsi
 loop repeat
ret

disp_proc:
mov rcx,02
mov rsi,dispbuff

up:
rol bl,04
mov al,bl
and al,0fh
cmp al,09
jbe add30
add al,07h
add30: add al,30h
 mov [rsi],al
 inc rsi
 loop up
print dispbuff,02
ret
SHARE
    Blogger Comment
    Facebook Comment