Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .model small
- .stack 50h
- date segment word public 'data'
- sir dw 7ABCh, 9865h, 0FDCEh, 1234h
- sir2 dw 7 dup ( ?)
- pozitia dw 4
- aux dw ?
- lungs equ $-sir dw 2 dup (?) ; spatiu pentru adaugare
- cuv dw 0F0Fh ; cuvantul de adaugat la sfarsitul sirului
- date ends
- prog segment word public 'code'
- assume cs: prog, ds: date
- start:
- mov ax,date
- mov ds,ax
- mov es,ax
- push ax
- lea si,sir
- mov bx,cuv
- push si
- push bx
- call insert
- mov ax,4C00h
- int 21h
- insert proc
- push bp
- mov bp,sp
- mov bx,[bp+4]
- mov si,[bp+6]
- push cx ; salvez cx
- mov cx,lungs
- push di ;salvez di
- lea di,sir2
- mov aux,cx ; salvez in aux contorul initial
- mov cx,pozitia ; fac contorul cat pozitia la care vreau sa inserez
- rep movs sir2,sir1 ; copiez sirul1 in sirul2 pana la pozitia pe care vreau sa inserez
- inc di ;incrementez offsetul cu 2= dimensiunea unui dw
- inc di
- mov sir2,cuv ;pun elementul in sir
- add si,pozitia ;deplasez offsetul sirului1 cu pozitia ( Nu sunt sigur ca mai e necesar)
- mov cx,aux ;refac contorul initial
- sub cx,pozitia ;scad din el cat am copiat pana acum
- add cx,2 ;adun 2 pentru elementul pe care l-am inserat
- rep movs sir2,sir1 ;copiez restul
- stos sir2
- push dx
- lea dx,sir1
- int21h ;afisez
- pop dx
- pop di
- pop cx
- ;descarc registri si ies
- ret 6
- insert endp
- end start
Add Comment
Please, Sign In to add comment