SHARE
TWEET

Untitled

a guest May 20th, 2019 58 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. dane SEGMENT    ;segment danych
  2.     Buf_1 db 4 dup(0)
  3.     LBin dw 0
  4.     Buf_2 db 128 dup(0)
  5. dane ENDS
  6.  
  7. rozkazy SEGMENT 'CODE' use16    ;segment zawierający rozkazy programu
  8.         ASSUME cs:rozkazy, ds:dane
  9. wystartuj:
  10.         mov ax, SEG dane
  11.         mov ds, ax
  12.         ; wczytywanie liczby do AX, zakonczenie wczytywania po Enter
  13.         mov si, 0 ;poczatkowa wartosc wyniku konwersji w SI
  14.     p1: mov ah, 1 ;wczytanie znaku w kodzie ASCII
  15.         int 21H ;z klawiatury do AL
  16.         cmp al, 13
  17.         je nacis_enter ;skok gdy nacisnieto klawisz Enter
  18.         sub al, 30H ;zamiana kodu ASCII na wartosc cyfry
  19.         mov bl, al ;przechowanie kolejnej cyfry w AL
  20.         mov bh, 0 ;zerowanie rejestru BH
  21.         mov ax, 8 ;mnoznik
  22.         mul si ;mnozenie dotychczas uzyskanego wyniku przez
  23.                 ;8 iloczyn zostaje wpisany do rejestrów DX:AX
  24.         add ax, bx ;dodanie aktualnie wczytanej cyfry
  25.         mov si, ax ;przesłanie wyniku obliczenia do rejestru SI   
  26.         jmp p1 ;
  27.        
  28.     nacis_enter:
  29.         mov ax, si ;przepisanie wyniku konwersji do rejestru AX
  30.         mov LBin, ax
  31.         mov cx, 0 ;licznik cyfr
  32.         mov bx, 9 ;dzielnik 9
  33.     p2: mov dx, 0 ;zerowanie starszej czesci dzielnej
  34.         div bx    ;dzielenie przez 9 – iloraz w AX, reszta w DX
  35.         add dx, 30H ;zamiana reszty na kod ASCII
  36.         push dx   ;zapisanie cyfry na stosie
  37.         inc cx    ;inkrementacja licznika cyfr
  38.         cmp ax, 0 ;porównanie uzyskanego ilorazu
  39.         jnz p2    ;skok gdy iloraz jest rózny od zera
  40.     p3: pop dx    ;pobranie kodu ASCII kolejnej cyfry
  41.         mov ah, 2
  42.         int 21H   ;wyswietlenie cyfry na ekranie
  43.         loop p3   ; sterowanie petla wyswietlania  
  44.         mov al, 0
  45.         mov ah, 4CH
  46.         int 21H
  47.        
  48. rozkazy ENDS
  49.  
  50. nasz_stos SEGMENT stack     ;segment stosu
  51. dw 128 dup (?)
  52. nasz_stos ENDS
  53.  
  54. END wystartuj           ;wykonanie programu zacznie się od rozkazu
  55.                 ;opatrzonego etykietą wystartuj
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top