section .data
nline db 10,10
nline_len equ $-nline
space db " "
ano db 10," Assignment no :2-A by Ganesh Kendre",
db 10,"-------------------------------------------------------------------",
db 10," Block Transfer-Non overlapped without String instruction.",
db 10,"-------------------------------------------------------------------",10
ano_len equ $-ano
bmsg db 10,"Before Transfer::"
bmsg_len equ $-bmsg
amsg db 10,"After Transfer::"
amsg_len equ $-amsg
smsg db 10," Source Block :"
smsg_len equ $-smsg
dmsg db 10," Destination Block :"
dmsg_len equ $-dmsg
sblock db 11h,22h,33h,44h,55h
dblock times 5 db 0
;------------------------------------------------------------------------------
section .bss
char_ans resB 2 ;char_ans is of 2 byte because we have 2 byte nos
;-----------------------------------------------------------------------------
%macro Print 2
MOV RAX,1
MOV RDI,1
MOV RSI,%1
MOV RDX,%2
syscall
%endmacro
%macro Read 2
MOV RAX,0
MOV RDI,0
MOV RSI,%1
MOV RDX,%2
syscall
%endmacro
%macro Exit 0
Print nline,nline_len
MOV RAX,60
MOV RDI,0
syscall
%endmacro
;---------------------------------------------------------------
section .text
global _start
_start:
Print ano,ano_len
Print bmsg,bmsg_len ;Block values before transfer
Print smsg,smsg_len
mov rsi,sblock ;As rsi is used to point source as well as destination block
call disp_block ;assign source and destination block separately before call
Print dmsg,dmsg_len
mov rsi,dblock
call disp_block
call BT_NO ;call for actual block transfer
Print amsg,amsg_len ;Block values after transfer
Print smsg,smsg_len
mov rsi,sblock
call disp_block
Print dmsg,dmsg_len
mov rsi,dblock
call disp_block
Exit
;-----------------------------------------------------------------
BT_NO:
mov rsi,sblock
mov rdi,dblock
mov rcx,5
back: mov al,[rsi] ;moves 1 value from rsi to rdi
mov [rdi],al ;(memory-memory transfer is not allowed)
inc rsi
inc rdi
dec rcx
jnz back
RET
;-----------------------------------------------------------------
disp_block:
mov rbp,5 ;counter as 5 values
next_num:
mov al,[rsi] ;moves 1 value to rsi
push rsi ;push rsi on stack as it get modified in Disp_8
call Disp_8
Print space,1
pop rsi ;again pop rsi that pushed on stack
inc rsi
dec rbp
jnz next_num
RET
;---------------------------------------------------------------
Disp_8:
MOV RSI,char_ans+1
MOV RCX,2 ;counter
MOV RBX,16 ;Hex no
next_digit:
XOR RDX,RDX
DIV RBX
CMP DL,9
JBE add30
ADD DL,07H
add30 :
ADD DL,30H
MOV [RSI],DL
DEC RSI
DEC RCX
JNZ next_digit
Print char_ans,2
ret
c2VjdGlvbiAuZGF0YQogICAgICAgIG5saW5lIAkJZGIJMTAsMTAKCW5saW5lX2xlbgllcXUJJC1ubGluZQoKCXNwYWNlCQlkYgkiICIKCglhbm8JCWRiCTEwLCIJQXNzaWdubWVudCBubwk6Mi1BIGJ5IEdhbmVzaCBLZW5kcmUiLCAKCQkJZGIJMTAsIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iLAoJCQlkYiAgICAgIDEwLCIJQmxvY2sgVHJhbnNmZXItTm9uIG92ZXJsYXBwZWQgd2l0aG91dCBTdHJpbmcgaW5zdHJ1Y3Rpb24uIiwKCQkJZGIgICAgICAxMCwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIsMTAKCWFub19sZW4JCWVxdQkkLWFubwoKCWJtc2cJCWRiCTEwLCJCZWZvcmUgVHJhbnNmZXI6OiIKCWJtc2dfbGVuCWVxdQkkLWJtc2cKCglhbXNnCQlkYgkxMCwiQWZ0ZXIgVHJhbnNmZXI6OiIKCWFtc2dfbGVuCWVxdQkkLWFtc2cKCQoJc21zZwkJZGIJMTAsIglTb3VyY2UgQmxvY2sJCToiCglzbXNnX2xlbgllcXUJJC1zbXNnCgoJZG1zZwkJZGIJMTAsIglEZXN0aW5hdGlvbiBCbG9jawk6IgoJZG1zZ19sZW4JZXF1CSQtZG1zZwoKCXNibG9jawkJZGIJMTFoLDIyaCwzM2gsNDRoLDU1aAoJZGJsb2NrCQl0aW1lcwk1CWRiCTAKCQo7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnNlY3Rpb24gLmJzcwoKCWNoYXJfYW5zIHJlc0IJMgk7Y2hhcl9hbnMgaXMgb2YgMiBieXRlIGJlY2F1c2Ugd2UgaGF2ZSAyIGJ5dGUgbm9zCQo7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiVtYWNybwlQcmludAkyCgkgTU9WCVJBWCwxCgkgTU9WCVJESSwxCiAgICAgICAgIE1PVglSU0ksJTEKICAgICAgICAgTU9WCVJEWCwlMgogICAgc3lzY2FsbAolZW5kbWFjcm8KCiVtYWNybwlSZWFkCTIKCSBNT1YJUkFYLDAKCSBNT1YJUkRJLDAKICAgICAgICAgTU9WCVJTSSwlMQogICAgICAgICBNT1YJUkRYLCUyCiAgICBzeXNjYWxsCiVlbmRtYWNybwoKJW1hY3JvIEV4aXQgMAoJUHJpbnQJbmxpbmUsbmxpbmVfbGVuCglNT1YJUkFYLDYwCiAgICAgICAgTU9WCVJESSwwCiAgICBzeXNjYWxsCiVlbmRtYWNybwo7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgICAgIAoKc2VjdGlvbiAudGV4dAoJZ2xvYmFsIF9zdGFydApfc3RhcnQ6CiAgICAgICAJUHJpbnQJYW5vLGFub19sZW4KCglQcmludAlibXNnLGJtc2dfbGVuCTtCbG9jayB2YWx1ZXMgYmVmb3JlIHRyYW5zZmVyCgoJUHJpbnQgCXNtc2csc21zZ19sZW4KCW1vdglyc2ksc2Jsb2NrCTtBcyByc2kgaXMgdXNlZCB0byBwb2ludCBzb3VyY2UgYXMgd2VsbCBhcyBkZXN0aW5hdGlvbiBibG9jawoJY2FsbAlkaXNwX2Jsb2NrCTthc3NpZ24gc291cmNlIGFuZCBkZXN0aW5hdGlvbiBibG9jayBzZXBhcmF0ZWx5IGJlZm9yZSBjYWxsCgoJUHJpbnQJZG1zZyxkbXNnX2xlbgoJbW92CXJzaSxkYmxvY2sKCWNhbGwJZGlzcF9ibG9jawoJCgljYWxsCUJUX05PCQk7Y2FsbCBmb3IgYWN0dWFsIGJsb2NrIHRyYW5zZmVyCgoJUHJpbnQJYW1zZyxhbXNnX2xlbgk7QmxvY2sgdmFsdWVzIGFmdGVyIHRyYW5zZmVyIAoKCVByaW50IAlzbXNnLHNtc2dfbGVuCgltb3YJcnNpLHNibG9jawoJY2FsbAlkaXNwX2Jsb2NrCgoJUHJpbnQJZG1zZyxkbXNnX2xlbgoJbW92CXJzaSxkYmxvY2sKCWNhbGwJZGlzcF9ibG9jawoKRXhpdAo7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQlRfTk86Cgltb3YJcnNpLHNibG9jawoJbW92CXJkaSxkYmxvY2sKCW1vdglyY3gsNQpiYWNrOgltb3YJYWwsW3JzaV0JO21vdmVzIDEgdmFsdWUgZnJvbSByc2kgdG8gcmRpIAoKCW1vdglbcmRpXSxhbAk7KG1lbW9yeS1tZW1vcnkgdHJhbnNmZXIgaXMgbm90IGFsbG93ZWQpCglpbmMJcnNpCglpbmMJcmRpCglkZWMJcmN4CglqbnoJYmFjawpSRVQKOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpc3BfYmxvY2s6Cgltb3YJcmJwLDUJCTtjb3VudGVyIGFzIDUgdmFsdWVzCgpuZXh0X251bToKCW1vdglhbCxbcnNpXQk7bW92ZXMgMSB2YWx1ZSB0byByc2kKCXB1c2gJcnNpCQk7cHVzaCByc2kgb24gc3RhY2sgYXMgaXQgZ2V0IG1vZGlmaWVkIGluIERpc3BfOAoKCWNhbGwJRGlzcF84CglQcmludAlzcGFjZSwxCgkKCXBvcAlyc2kJCTthZ2FpbiBwb3AgcnNpIHRoYXQgcHVzaGVkIG9uIHN0YWNrCglpbmMJcnNpCglkZWMJcmJwCglqbnoJbmV4dF9udW0KUkVUCjstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRGlzcF84OgoJTU9WCVJTSSxjaGFyX2FucysxCglNT1YJUkNYLDIgICAgICAgICAgIDtjb3VudGVyCglNT1YJUkJYLDE2CQk7SGV4IG5vCgpuZXh0X2RpZ2l0OgoJWE9SCVJEWCxSRFgKCURJVglSQlgKCUNNUAlETCw5CQoJSkJFCWFkZDMwCglBREQJREwsMDdICmFkZDMwCToKCUFERAlETCwzMEgKCU1PVglbUlNJXSxETAoJREVDCVJTSQoJREVDCVJDWAoJSk5aCW5leHRfZGlnaXQKCglQcmludAljaGFyX2FucywyCnJldAo=