Guest User

Untitled

a guest
Dec 9th, 2018
84
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; zamiana z 10 na 16 ------------------------------------------------------------------
  2. ;zamiana z systemu 10 na 16
  3. ; w tym bloku kodu programu rejestr CL pelni role licznika przesuniecia
  4. ;logicznego wartosci liczby, rejestr CH jest ogolnym licznikiem petli
  5. ;natomiast si jest wskazaniem pozycji w lancuchu tekstu ktory ma byc zmieniony
  6. ;przygotowanie rejestrow
  7. ;=======================================================================================
  8.  
  9.     xor cl,cl; zerowanie przesuniecia logicznego
  10.     mov ch,3; ustaw licznik na 3
  11.     mov si,3; ustaw index na 3
  12. hexa:
  13.     mov ax,suma;
  14.     shr ax,cl; przesuniecie rejestru ax o cl miejsc w prawo =>AX:=AX/(2^CL)
  15.     and ax,1111b; maska ktora zeruje czesc liczby wieksza od 15
  16.     cmp al,9; porownanie liczby z 9
  17.     ja litery; jesli liczba > 9 to skocz do etykiety litery
  18.     add al,30h; w przeciwnym wypadku do liczby dodaj kod ASCII znaku '0'
  19. dalej_hexa:
  20.     lea bx,liczba16; w rejestrze bx jest offset zmiennej liczba16;
  21.     mov ds:[bx+si],al; przekazanie znaku do zmiennej lancuchowej
  22.     cmp ch,0; porownaj licznik z 0
  23.     je end_hexa; jesli licznik = 0 to wyjdz z petli
  24.     dec si; si:=si-1;
  25.     dec ch; zmniejsz licznik o 1;
  26.     add cl,4; zwieksz wartosc przesuniecia 0 4
  27.     jmp hexa; nastepna iteracja
  28. litery:
  29.     sub al,10; od liczby odejmnij 10;
  30.     add al,'A'; do liczby dodaj kod ASCII znaku 'A'
  31.     jmp dalej_hexa; skocz do etykiety
  32. end_hexa:
  33.     mov al,'H'; w AL umiesc kod znaku 'H'
  34.     lea bx,liczba16; w rejestrze bx jest offset zmiennej liczba16;
  35.     mov ds:[bx+4],al; przekazanie znaku do zmiennej lancuchowej
RAW Paste Data