Shakken

Untitled

Jan 4th, 2017
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.83 KB | None | 0 0
  1. .model small
  2. .stack 256
  3. .data
  4. Mess1 db 'Enter number in 10c: $'
  5. Mess2 db 0Dh, 0Ah,'Result in 16c: $'
  6. .code
  7. start:
  8. mov ax,@data
  9. mov ds,ax
  10. mov ah,9
  11. mov dx,offset Mess1
  12. int 21h; Выводим первое сообщение
  13. xor bx,bx
  14. num_in:
  15. ; Вводим символы числа, пока не нажмется энтэр
  16. mov ah,01h
  17. int 21h
  18. cmp al,0Dh
  19. je end_num_in
  20. sub al,'0' ; переводим в десятичный вид
  21. xor ah,ah
  22. push ax ; и ложим его в стек
  23. inc bx
  24. jmp num_in
  25. end_num_in:
  26. mov cx,1
  27. num_preobr:
  28. cmp bx,0
  29. je end_num_preobr ; если цифры ;числа закончились, то переходим на ;end_num_preobr
  30. pop ax
  31. xor dx,dx ; умножаем на число в cx (1, 10, 100, 1000, …)
  32. mul cx
  33. ; и добавляем к конечному числу
  34. add di,ax
  35. dec bx
  36. ; умножаем на 10, чтобы получить 10, 100, 1000, …
  37. mov ax,10
  38. mul cx
  39. mov cx,ax
  40. jmp num_preobr
  41. end_num_preobr:
  42. ; Выводится сообщение 2
  43. mov ah,9
  44. mov dx,offset Mess2
  45. int 21h
  46. ; начало коныертации в 16 систему
  47. mov ax,di
  48. mov bx,0
  49. mov cx,16
  50. num_convert:
  51. ; непосредственно перевод
  52. cmp ax,0
  53. je end_convert
  54. xor dx,dx
  55. ; делим на систему счисления
  56. div cx
  57. ; сравниваем остаток от деления с 9, если больше, добавляем ‘7’, иначе ‘0’
  58. cmp dx,9
  59. ja above_9
  60. add dx,'0'
  61. jmp next
  62. above_9:
  63. add dx,'7'
  64. next:
  65. push dx
  66. inc bx
  67. jmp num_convert
  68. end_convert:
  69. out_num:
  70. ; если цифры закончились, то переходим ;на end_out_num
  71. cmp bx,0
  72. je end_out_num
  73. pop dx
  74. mov ah,02h
  75. int 21h
  76. dec bx
  77. jmp out_num
  78. end_out_num:
  79. mov ax,4C00h
  80. int 21h
  81. end start
Add Comment
Please, Sign In to add comment