Advertisement
Guest User

Untitled

a guest
Jun 1st, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.46 KB | None | 0 0
  1. dane SEGMENT ;segment danych
  2. tekst_1 db "Dzielna: ", 0dh, 0ah, "$"
  3. tekst_2 db "Dzielnik: ", 0dh, 0ah, "$"
  4. tekst_3 db "Iloraz: ", 0dh, 0ah, "$"
  5. tekst_4 db "Reszta: ", 0dh, 0ah, "$"
  6. tekst_5 db "Reszta to wreszcie zero ", 0dh, 0ah, "$"
  7.  
  8.  
  9. d1 dw 0
  10. d2 dw 0
  11.  
  12.  
  13.  
  14. dane ENDS
  15.  
  16. rozkazy SEGMENT 'CODE' use16 ;segment zawierajacy rozkazy programu
  17. ASSUME cs:rozkazy, ds:dane
  18. wystartuj:
  19. mov ax, SEG dane
  20. mov ds, ax
  21.  
  22.  
  23. mov dx, offset tekst_1
  24. mov ah, 09
  25. int 21H
  26. mov si, 0 ;poczatkowa wartosc wyniku konwersji w SI
  27. p1:
  28.  
  29. mov ah, 1 ;wczytanie znaku w kodzie ASCII
  30. int 21H ;z klawiatury do AL
  31. cmp al, 13
  32. je nacis_enter ;skok gdy nacisnieto klawisz Enter
  33. sub al, 30H ;zamaiana kodu ASCII na wartosc cyfry
  34. mov bl, al ;przechowanie kolejnej cyfry w AL
  35. mov bh, 0 ;zerowanie rejestru BH
  36. mov ax, 9 ;mnoznik
  37. mul si ;mnozenie dotychczas uzyskanego wyniku przez
  38. ;9 iloczyn zostaje wpisany do rejestrow DX:AX
  39. add ax, bx ;dodanie aktualnie wczytanej cyfry
  40. mov si, ax ;przeslanie wyniku obliczenia do rejestru SI
  41. mov d1, si
  42. jmp p1
  43.  
  44. nacis_enter:
  45.  
  46. mov cx,si ;przepisanie wyniku konwersji do rejestru AX
  47. mov dx, offset tekst_2
  48. mov ah, 09 ;wczytanie znaku w kodzie ASCII
  49. int 21H
  50. mov si, 0
  51. p2:
  52. mov ah, 1 ;wczytanie znaku w kodzie ASCII
  53. int 21H
  54. cmp al, 13
  55. je nacis_enter1 ;skok gdy nacisnieto klawisz Enter
  56. sub al, 30H ;zamaiana kodu ASCII na wartosc cyfry
  57. mov bl, al ;przechowanie kolejnej cyfry w AL
  58. mov bh, 0 ;zerowanie rejestru BH
  59. mov ax, 9 ;mnoznik
  60. mul si ;mnozenie dotychczas uzyskanego wyniku przez
  61. ;9 iloczyn zostaje wpisany do rejestrow DX:AX
  62. add ax, bx ;dodanie aktualnie wczytanej cyfry
  63. mov si, ax ;przeslanie wyniku obliczenia do rejestru SI
  64. mov d2, si
  65. jmp p2
  66.  
  67. nacis_enter1:
  68.  
  69. mov bx, si
  70.  
  71. p3:
  72. mov dx, offset tekst_4
  73. mov ah, 09
  74. int 21H
  75. mov ax, cx
  76. mov dx, 0
  77. div bx
  78. add dl, 30h
  79. mov ah ,02h
  80. int 21h
  81. mov ax,cx
  82. mov dx, 0
  83. div bx
  84. cmp dx, 0
  85. je reszta0
  86. sar bx, 1
  87. jmp p3
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96. reszta0:
  97. mov dx, offset tekst_5
  98. mov ah, 09
  99. int 21H
  100. jmp finish
  101.  
  102.  
  103.  
  104. finish:
  105. mov ah,4CH ;DOS "terminate" function
  106. int 21h
  107. rozkazy ENDS
  108.  
  109. nasz_stos SEGMENT stack ;segment stosu
  110. dw 128 dup (?)
  111. nasz_stos ENDS
  112.  
  113. END wystartuj ;wykonanie programu zacznie się od rozkazu
  114. ;opatrzonego etykietą wystartuj
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement