Advertisement
Guest User

Untitled

a guest
May 20th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.23 KB | None | 0 0
  1. dane SEGMENT ;segment danych
  2.  
  3. Buf_1 db 4 dup (0)
  4. LBin dw 0
  5. Buf_2 db 128 dup(0)
  6.  
  7. dane ENDS
  8.  
  9. rozkazy SEGMENT 'CODE' use16;segment rozkazu
  10. ASSUME cs:rozkazy, ds:dane, es:dane
  11. startuj: mov ax, SEG dane
  12. mov ds, ax
  13. mov es, ax
  14. mov bx, SEG dane
  15. mov ds, bx
  16. ; wczytywanie liczby do AX, zakończenie wczytywania po Enter
  17. mov si, 0 ;początkowa wartość wyniku konwersji w SI
  18. p1: mov ah, 1 ;wczytanie znaku w kodzie ASCII
  19. int 21H ;z klawiatury do AL
  20. cmp al, 13
  21. je nacis_enter ;skok gdy naciśnięto klawisz Enter
  22. sub al, 30H ;zamaiana kodu ASCII na wartość cyfry
  23. mov bl, al ;przechowanie kolejnej cyfry w AL
  24. mov bh, 0 ;zerowanie rejestru BH
  25. mov ax, 7 ;mnożnik
  26. mul si ;mnożenie dotychczas uzyskanego wyniku przez
  27. ;10 iloczyn zostaje wpisany do rejestrów DX:AX
  28. add ax, bx ;dodanie aktualnie wczytanej cyfry
  29. mov si, ax ;przesłanie wyniku obliczenia do rejestru SI
  30. jmp p1 ;
  31. nacis_enter:
  32. mov ax, si ;przepisanie wyniku konwersji do rejestru AX
  33.  
  34. mov cx, 0 ;licznik cyfr
  35. mov bx, 2 ;dzielnik
  36. p2: mov dx, 0 ;zerowanie starszej części dzielnej
  37. div bx ;dzielenie przez 10 – iloraz w AX, reszta w DX
  38. add dx, 30H ;zamiana reszty na kod ASCII
  39. push dx ;zapisanie cyfry na stosie
  40. mov LBin, dx
  41. inc cx ;inkrementacja licznika cyfr
  42. cmp ax, 0 ;porównanie uzyskanego ilorazu
  43. jnz p2 ;skok gdy iloraz jest różny od zera
  44. p3: pop dx ;pobranie kodu ASCII kolejnej cyfry
  45. mov ah, 2
  46. int 21H ;wyświetlenie cyfry na ekranie
  47. loop p3 ; sterowanie pętlą wyświetlania
  48.  
  49. mov dl,13
  50. mov ah,2
  51. int 21H
  52. mov dl,10
  53. mov ah,2
  54. int 21H
  55.  
  56. mov ax,si
  57. mov cx, 0 ;licznik cyfr
  58. mov bx, 6 ;dzielnik
  59. p4: mov dx, 0 ;zerowanie starszej części dzielnej
  60. div bx ;dzielenie przez 10 – iloraz w AX, reszta w DX
  61. add dx, 30H ;zamiana reszty na kod ASCII
  62. push dx ;zapisanie cyfry na stosie
  63. inc cx ;inkrementacja licznika cyfr
  64. cmp ax, 0 ;porównanie uzyskanego ilorazu
  65. jnz p4 ;skok gdy iloraz jest różny od zera
  66. p5: pop dx ;pobranie kodu ASCII kolejnej cyfry
  67. mov ah, 2
  68. int 21H ;wyświetlenie cyfry na ekranie
  69. loop p5 ; sterowanie pętlą wyświetlania
  70.  
  71.  
  72.  
  73. koncz PROC near
  74. mov al, 0
  75. mov ah, 4CH
  76. int 21H
  77. koncz ENDP
  78. call koncz
  79.  
  80. rozkazy ENDS
  81. stosik SEGMENT stack
  82. stosik ENDS
  83. END startuj
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement