Advertisement
Guest User

Untitled

a guest
Nov 29th, 2015
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.64 KB | None | 0 0
  1. .model small
  2. .stack 100h
  3. .data
  4. osemkowa db "Liczba osemkowa: $"
  5. decymalna db 0dh,0ah,"Liczba decymalna (ENTER aby zako�czy�): $"
  6. koncowy db 0dh,0ah,"Program zostanie zako�czony po naci�ni�ciu dowolnego klawisza$"
  7. znak dw 0
  8. cyfra_znaczaca dw 0
  9.  
  10. .386
  11. .code
  12. czytaj_cyfre:
  13. mov eax,00000000
  14. int 16h
  15. cmp al,0Dh;enter
  16. je koniec
  17. cmp al,'-'
  18. je minus
  19. cmp al, '0'
  20. jb czytaj_cyfre
  21. cmp al, '9'
  22. jbe wczytano
  23. ja czytaj_cyfre
  24.  
  25. minus:
  26. cmp [znak],0
  27. jg czytaj_cyfre
  28. inc [znak]
  29. RET
  30.  
  31. wczytano:
  32. mov ah,0
  33. sub al,'0'
  34. push ax
  35. mov ax,bx
  36. mov bx,000ah
  37. mul bx
  38. cmp dx, 0
  39. ja koniec
  40. mov ebx,eax
  41. pop ax
  42. add bx,ax
  43. jc koniec
  44. cmp [znak],0
  45. jne przeskok
  46. mov [znak],2
  47. przeskok:
  48. RET
  49.  
  50. wypisz_oct:
  51. cmp [znak], 1
  52. jne bez_minusa2
  53. mov al,'-'
  54. mov ah,0eh
  55. int 10h
  56. bez_minusa2:
  57. mov [cyfra_znaczaca],0
  58. push bx
  59. shr bx,15
  60. cmp bx,0
  61. je przeskocz2
  62. mov [cyfra_znaczaca],1
  63. przeskocz2:
  64. cmp [cyfra_znaczaca],1
  65. jne przeskocz3
  66. add bx,'0'
  67. mov ax,bx
  68. mov ah,0eh
  69. int 10h
  70. przeskocz3:
  71. pop bx
  72. push bx
  73. shl bx,1
  74. shr bx,13
  75. cmp bx,0
  76. je przeskocz4
  77. mov [cyfra_znaczaca],1
  78. przeskocz4:
  79. cmp [cyfra_znaczaca],1
  80. jne przeskocz5
  81. add bx,'0'
  82. mov ax,bx
  83. mov ah,0eh
  84. int 10h
  85. przeskocz5:
  86. pop bx
  87. push bx
  88. shl bx,4
  89. shr bx,13
  90. cmp bx,0
  91. je przeskocz6
  92. mov [cyfra_znaczaca],1
  93. przeskocz6:
  94. cmp [cyfra_znaczaca],1
  95. jne przeskocz7
  96. add bx,'0'
  97. mov ax,bx
  98. mov ah,0eh
  99. int 10h
  100. przeskocz7:
  101. pop bx
  102. push bx
  103. shl bx,7
  104. shr bx,13
  105. cmp bx,0
  106. je przeskocz8
  107. mov [cyfra_znaczaca],1
  108. przeskocz8:
  109. cmp [cyfra_znaczaca],1
  110. jne przeskocz9
  111. add bx,'0'
  112. mov ax,bx
  113. mov ah,0eh
  114. int 10h
  115. przeskocz9:
  116. pop bx
  117. push bx
  118. shl bx,10
  119. shr bx,13
  120. cmp bx,0
  121. je przeskocz10
  122. mov [cyfra_znaczaca],1
  123. przeskocz10:
  124. cmp [cyfra_znaczaca],1
  125. jne przeskocz11
  126. add bx,'0'
  127. mov ax,bx
  128. mov ah,0eh
  129. int 10h
  130. przeskocz11:
  131. pop bx
  132. push bx
  133. shl bx,13
  134. shr bx,13
  135. cmp bx,0
  136. je przeskocz12
  137. mov [cyfra_znaczaca],1
  138. przeskocz12:
  139. cmp [cyfra_znaczaca],1
  140. jne przeskocz13
  141. add bx,'0'
  142. mov ax,bx
  143. mov ah,0eh
  144. int 10h
  145. przeskocz13:
  146. pop bx
  147. cmp [cyfra_znaczaca],0
  148. je przeskocz_ret
  149. RET
  150. przeskocz_ret:
  151. mov al,'0'
  152. mov ah,0eh
  153. int 10h
  154. RET
  155. wypisz_dec:
  156. cmp [znak], 1
  157. jne bez_minusa
  158. mov al,'-'
  159. mov ah,0eh
  160. int 10h
  161. bez_minusa:
  162.  
  163. push bx
  164.  
  165. mov [cyfra_znaczaca],0
  166. mov dx,0000
  167. mov ax,bx
  168. mov bx, 10000
  169. div bx
  170. cmp al,0
  171. je przeskocz14
  172. mov [cyfra_znaczaca],1
  173. przeskocz14:
  174. cmp [cyfra_znaczaca],1
  175. jne przeskocz15
  176. add al,'0'
  177. mov ah,0eh
  178. int 10h
  179. przeskocz15:
  180.  
  181. mov ax,dx
  182. mov dx,0
  183. mov bx, 1000
  184. div bx
  185. cmp al,0
  186. je przeskocz16
  187. mov [cyfra_znaczaca],1
  188. przeskocz16:
  189. cmp [cyfra_znaczaca],1
  190. jne przeskocz17
  191. add al,'0'
  192. mov ah,0eh
  193. int 10h
  194. przeskocz17:
  195.  
  196. mov ax,dx
  197. mov dx,0
  198. mov bx, 100
  199. div bx
  200. cmp al,0
  201. je przeskocz18
  202. mov [cyfra_znaczaca],1
  203. przeskocz18:
  204. cmp [cyfra_znaczaca],1
  205. jne przeskocz19
  206. add al,'0'
  207. mov ah,0eh
  208. int 10h
  209. przeskocz19:
  210.  
  211. mov ax,dx
  212. mov dx,0
  213. mov bx, 10
  214. div bx
  215. cmp al,0
  216. je przeskocz20
  217. mov [cyfra_znaczaca],1
  218. przeskocz20:
  219. cmp [cyfra_znaczaca],1
  220. jne przeskocz21
  221. add al,'0'
  222. mov ah,0eh
  223. int 10h
  224. przeskocz21:
  225.  
  226. mov ax,dx
  227. cmp al,0
  228. je przeskocz22
  229. mov [cyfra_znaczaca],1
  230. przeskocz22:
  231. cmp [cyfra_znaczaca],1
  232. jne przeskocz23
  233. add al,'0'
  234. mov ah,0eh
  235. int 10h
  236. przeskocz23:
  237.  
  238. pop bx
  239. RET
  240.  
  241.  
  242. main proc
  243. mov ax,@data
  244. mov ds,ax
  245. mov bx,0
  246.  
  247. petla:
  248. mov ah,0;clrscreen
  249. mov al,3
  250. int 10h
  251.  
  252. mov ah,9
  253. mov dx,offset osemkowa
  254. int 21h
  255. call wypisz_oct
  256.  
  257. mov ah,9
  258. mov dx,offset decymalna
  259. int 21h
  260. call wypisz_dec
  261. call czytaj_cyfre
  262.  
  263. loop petla
  264. koniec:
  265. mov ah,9
  266. mov dx,offset koncowy
  267. int 21h
  268.  
  269. mov ah,0
  270. int 16h
  271.  
  272. mov ax,4c00h
  273. int 21h
  274. main endp
  275. end main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement