fork download
  1. org 100h
  2.  
  3. start:
  4. mov ah, 9
  5. mov dx, info
  6. int 21h
  7.  
  8.  
  9. xor bx, bx ;miejsce na liczbę
  10. l_pentla:
  11.  
  12. ;call far _we_z ;pobierz znak z klawiatury
  13. mov ah, 01h
  14. int 21h
  15.  
  16. cmp al, 0dh ;czy Enter?
  17. je l_juz ;jesli tak to wychodzimy
  18.  
  19. cmp al, 20h ;przepuszczam spacje
  20. je l_pentla
  21.  
  22. cmp al, '0' ;jesli nie cyfra to błąd
  23. jb l_blad
  24. cmp al, '9'
  25. ja l_blad
  26.  
  27. and al, 0fh ;izolujemu wartosc (sub al, '0')
  28. mov cl, al
  29.  
  30. mov ax, bx
  31.  
  32. shl bx, 1 ;miejsce na nowa cyfre
  33. jc l_blad
  34.  
  35. shl ax, 1
  36. jc l_blad
  37. shl ax, 1
  38. jc l_blad
  39. shl ax, 1
  40. jc l_blad
  41.  
  42. add bx, ax ;bx=bx*10- bieżąca liczbę mnożymy przez 10
  43. jc l_blad
  44.  
  45. add bl, cl ;dadajemy cyfrę
  46. adc bh, 0
  47. jc l_blad ;jeśli przekroczymy limit, to błąd
  48.  
  49. jmp short l_pentla
  50.  
  51. l_juz:
  52. ; wynik w AX
  53.  
  54. wyswietl:
  55. ;mov ax, [liczba]
  56. xor dx, dx
  57. mov cx, 10000
  58. div cx
  59. or al, '0'
  60. ;wyswietl AL jako znak
  61. mov ax, dx
  62. xor dx, dx
  63. mov cx, 1000
  64. div cx,
  65. or al, '0'
  66. ;wyswietl AL jako znak
  67. mov ax, dx
  68. mov cl, 100
  69. div cl
  70. or al, '0'
  71. ;wyswietl AL jako znak
  72. mov al, ah
  73. xor ah, ah
  74. mov cl, 10
  75. div cl
  76. or ax, '00'
  77. ;wyswietl AL jako znak
  78. ;potem wyświetl AH jako znak
  79.  
  80. mov ah, 9
  81. mov dx, ax
  82. int 21h
  83.  
  84. mov ah, 9
  85. ;;mov dx, ah
  86. int 21h
  87.  
  88. l_blad:
  89. mov ah, 9
  90. mov dx, info
  91. int 21h
  92. stop:
  93.  
  94. mov ax, 4C00h ;EXIT
  95. int 21h ;wywołanie DOS
  96.  
  97. info db "Czesc.$"
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
1
2
0dh
compilation info
prog.asm:1: error: parser: instruction expected
stdout
Standard output is empty