10-31-2018, 09:29 PM
.model small
.stack 100
.data
text3 db '$'
lenText3 equ $ - text3
text2 db 'World'
lenText2 equ $ - text2
text1 db 'Hello '
lenText1 equ $ - text1
buffer db 100 dup(0)
.code
; param [in] si sursa
; param [in] di destinatie
; param [in] cx lungime
; datele de intrare sunt restaurate la iesirea din procedura
copy proc
push si
push di
push cx
cld
rep movsb
pop cx
pop di
pop si
ret
copy endp
start:
mov ax, @data
mov ds, ax
mov es, ax
cld ; setam directia decopiere
mov si, offset text1 ; setam sursa
mov di, offset buffer ; setam destinatia
mov cx, lenText1 ; setam numarul de caractere ce urmeaza a fi copiate
rep movsb ; copiem
; buffer = Hello
; Concatenam: "World" la textul anterior
mov si, offset text2 ; setam sursa
; destinatia ramane nemodificata. a fost actualizata de instructiunea anterioara: 'movsb'
mov cx, lenText2 ; setam numarul de caractere ce urmeaza a fi copiate
rep movsb ; copiem
; buffer = Hello World
; Concatenam: "$" / caracter terminal pt prin string
mov si, offset text3 ; sursa
; destinatie ramane di
mov cx, lenText3 ; setam numarul de caractere ce urmeaza a fi copiate
call copy ; apelam o metoda de copiere
; buffer = Hello World$
; afisam datele copiate
mov ah, 9
lea dx, buffer
int 21h
; rutina exit
mov ah, 4ch
int 21h
end start
.stack 100
.data
text3 db '$'
lenText3 equ $ - text3
text2 db 'World'
lenText2 equ $ - text2
text1 db 'Hello '
lenText1 equ $ - text1
buffer db 100 dup(0)
.code
; param [in] si sursa
; param [in] di destinatie
; param [in] cx lungime
; datele de intrare sunt restaurate la iesirea din procedura
copy proc
push si
push di
push cx
cld
rep movsb
pop cx
pop di
pop si
ret
copy endp
start:
mov ax, @data
mov ds, ax
mov es, ax
cld ; setam directia decopiere
mov si, offset text1 ; setam sursa
mov di, offset buffer ; setam destinatia
mov cx, lenText1 ; setam numarul de caractere ce urmeaza a fi copiate
rep movsb ; copiem
; buffer = Hello
; Concatenam: "World" la textul anterior
mov si, offset text2 ; setam sursa
; destinatia ramane nemodificata. a fost actualizata de instructiunea anterioara: 'movsb'
mov cx, lenText2 ; setam numarul de caractere ce urmeaza a fi copiate
rep movsb ; copiem
; buffer = Hello World
; Concatenam: "$" / caracter terminal pt prin string
mov si, offset text3 ; sursa
; destinatie ramane di
mov cx, lenText3 ; setam numarul de caractere ce urmeaza a fi copiate
call copy ; apelam o metoda de copiere
; buffer = Hello World$
; afisam datele copiate
mov ah, 9
lea dx, buffer
int 21h
; rutina exit
mov ah, 4ch
int 21h
end start