Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; zamiana z 10 na 16 ------------------------------------------------------------------
- ;zamiana z systemu 10 na 16
- ; w tym bloku kodu programu rejestr CL pelni role licznika przesuniecia
- ;logicznego wartosci liczby, rejestr CH jest ogolnym licznikiem petli
- ;natomiast si jest wskazaniem pozycji w lancuchu tekstu ktory ma byc zmieniony
- ;przygotowanie rejestrow
- ;=======================================================================================
- xor cl,cl; zerowanie przesuniecia logicznego
- mov ch,3; ustaw licznik na 3
- mov si,3; ustaw index na 3
- hexa:
- mov ax,suma;
- shr ax,cl; przesuniecie rejestru ax o cl miejsc w prawo =>AX:=AX/(2^CL)
- and ax,1111b; maska ktora zeruje czesc liczby wieksza od 15
- cmp al,9; porownanie liczby z 9
- ja litery; jesli liczba > 9 to skocz do etykiety litery
- add al,30h; w przeciwnym wypadku do liczby dodaj kod ASCII znaku '0'
- dalej_hexa:
- lea bx,liczba16; w rejestrze bx jest offset zmiennej liczba16;
- mov ds:[bx+si],al; przekazanie znaku do zmiennej lancuchowej
- cmp ch,0; porownaj licznik z 0
- je end_hexa; jesli licznik = 0 to wyjdz z petli
- dec si; si:=si-1;
- dec ch; zmniejsz licznik o 1;
- add cl,4; zwieksz wartosc przesuniecia 0 4
- jmp hexa; nastepna iteracja
- litery:
- sub al,10; od liczby odejmnij 10;
- add al,'A'; do liczby dodaj kod ASCII znaku 'A'
- jmp dalej_hexa; skocz do etykiety
- end_hexa:
- mov al,'H'; w AL umiesc kod znaku 'H'
- lea bx,liczba16; w rejestrze bx jest offset zmiennej liczba16;
- mov ds:[bx+4],al; przekazanie znaku do zmiennej lancuchowej
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement