Sunteți pe pagina 1din 2

; Pentru a afisa un numar, acesta trebuie convertit la un sir de caractere

( caracterele din sir vor fi de fapt cifrele numarului).


; Vom considera urmatorul algoritm care transforma o variabila pe 16 biti de tip
intreg fara semn intr-un sir de caractere.
; Numarul maxim ce poate fi memorat pe 16 biti este 65535 ( 5 cifre), deci sirul
care trebuie sa tina cifrele oricarui astfel
; de numar trebuie sa fie de maxim 6 caractere(5 pentru cifre si unul pentru
terminator de sir ).
;----------------------------------------------------------------------------------
----------------
.model small
.data
nr dw 12348
sir_nr db 6 dup(' ') ; initializare sir cu spatiu
imp dw 10 ; impartitorul este 10
.code
; initializare ds
mov ax, dgroup
mov ds, ax

; terminatorul de sir este asezat pe pozitia din sir cu indicele 5 ( este ; de fapt
pozitia 6 deoarece elementele sunt numerotate incepand de la 0)
mov si,5
mov sir_nr[si], '$'

; incepand de la indicele 4 spre 0 vor fi asezate cifrele numarului


dec si

; la impartire se considera ca numarul se gaseste in DX:AX


mov ax, nr
mov dx,0
repeta:
div imp

; catul impartirii este in ax, iar restul in dx.Deoarece restul nu poate


; fi mai mare de 9, putem lua in considerare numai valoarea aflata in dl.
; pentru a converti numarul aflat in al intr-o cifra de la 0 la 9,
; adunam codul caracterului '0'
add dl, '0'
mov sir_nr[si],dl

dec si

mov dx,0

; compara catul cu 0...Catul va fi egal cu 0 cand vor fi determinate


; toate cifrele numarului
cmp ax,0
jne repeta

afisare_nr:
mov ah, 09h
mov dx, offset sir_nr
int 21h

terminare_program:
mov ah, 4ch
int 21h
end
https://www.itcsolutions.eu/ro/2010/02/04/tutorial-limbaj-de-asamblare-assembler-
intel-8086-partea-1-elemente-de-baza/

S-ar putea să vă placă și