;Se da un sir de octeti.
;Sa se copieze din acest sir intr-un altul toate elementele
;pana la intalnirea primului caracter '0' (sau toate), dupa care,
;in locurile ramase libere pana la lungimea initiala,
;sa se completeze cu 'Z'.

assume ds:data,cs:code
data segment
     s1 db 'abc0def'    ;sirul initial
     d equ $-s1        ;dim. sir initial
     s2 db d dup(?)    ;sir rezultat
data ends
code segment
start:
     mov ax,data
     mov ds,ax
     mov es,ax
     mov si,offset s1
     mov di,offset s2
     cld        ;parcurgere de la adr. mai mica la adr. mai mare
     mov cx,d
again:
     lodsb
     cmp al,'0'
     je dupa
     stosb        ;daca nu e '0', se incarca in s2
loop again
dupa:
     mov cx,offset s1
     add cx,d
     sub cx,si
     add cx,1    ;...pt. restul pozitiilor
     ;puteti sa gasiti o varianta mai rapida
     mov al,'Z'
     jcxz sf
rep stosb
sf:
     mov ax,4C00h
     int 21h
code ends
end start