; Se da un sir de numere reprezentate pe 16 biti fara semn ; fiecare. Se cere sa se afiseze toate numerele din sir. _data segment tipar_tmp db 5 dup (?), 13, 10, '$' sir dw 20, 01234h, 0, 15, 65530, 0111010111b final_sir label word _data ends _text segment assume cs:_text assume ds:_data tipar: ; intrare: ax = numarul de tiparit ; tipareste numarul din ax ; nu modifica restul registrilor; poate modifica ax ; salvam registrii ca sa-i putem folosi in procedura push bx push cx push dx ; calculam reprezentarea in baza 10 mov bx, offset tipar_tmp+5 ; bx=adresa ultimei cifre scrise deja mov cx, 10 ; cx = 10 (constant) tipar_bucla: mov dx, 0 div cx ; dl=cifra curenta, ax=restul numarului dec bx add dl, '0' mov byte ptr [bx], dl cmp ax, 0 jne tipar_bucla ; tiparim mov dx, bx mov ah, 09h int 21h ; refacem contextul pop dx pop cx pop bx retn ; sfarsitul procedurii tipar ; programul principal ; facem o bucla in care parcurgem sirul, tiparind fiecare element start: mov ax, _data mov ds, ax mov si, offset sir cld bucla: cmp si, offset final_sir je final lodsw call tipar jmp bucla final: mov ax, 4C00h int 21h _text ends _stack segment stack db 512 dup (?) _stack ends end start