Guest User

Untitled

a guest
Aug 10th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. MYCODE SEGMENT 'CODE'
  2.     ASSUME CS:MYCODE,DS:MYCODE
  3.     msg     db  'Input the number> ','$'
  4.     table   db  '0123456789ABCDEF','$'
  5.     symb    db  4 dup(?)
  6.     strr    db  4 dup('0')
  7.     car     db  0Ah,0Dh,'$'
  8.     ten     dw  000Ah
  9.    
  10. START:
  11. ; Загрузка сегментного регистра данных
  12.     PUSH CS
  13.     POP DS
  14. ;  
  15.     CALL CLRSCR
  16.     MOV DX, OFFSET msg
  17.     CALL STR_OUT
  18. BEG:
  19. ; Ввод данных
  20.     MOV DI, 0
  21. m1:
  22.     CALL GETCH
  23.     CMP AL, '*'
  24.     JE cont
  25.     CALL CLRSCR
  26.     MOV AX, 4C00h
  27.     INT 21h
  28. cont:
  29.     MOV BYTE PTR symb[DI], AL
  30.     INC DI
  31.     CMP DI, 4
  32.     JNE m1 
  33. ; Вывод данных
  34.     MOV DL, ' '
  35.     CALL PUTCH
  36.     MOV DL, '='
  37.     CALL PUTCH
  38.     MOV DL, ' '
  39.     CALL PUTCH
  40.     MOV DX, OFFSET symb
  41.     CALL STR_OUT   
  42. ; Перевод числа в HEX
  43.     MOV DI, 0h
  44.     MOV CX, 0h
  45. toHEX:
  46.     SHL CX, 4
  47.     MOV BL, symb[DI]
  48.     CALL HEX
  49.     ADD CX, SI
  50.     INC DI
  51.     CMP DI, 4
  52.     JNE toHEX
  53.     MOV DL, ' '
  54.     CALL PUTCH
  55. ; Перевод числа в DEC
  56.     MOV SI, 0
  57. m2:
  58.     MOV BX, CX
  59.     MOV AX, CX
  60.     MOV DX, 0
  61.     DIV ten
  62.     PUSH AX
  63.     MUL ten
  64.     SUB BX, AX
  65.     XLATB
  66.     MOV BYTE PTR strr[SI], AL
  67.     INC SI
  68.     POP CX
  69.     CMP CX, 0
  70.     JNE m2
  71. ;  
  72.     MOV SI, 3
  73.     MOV CX, 4
  74. m3:
  75.     MOV DL, strr[SI]
  76.     MOV strr[SI], '0'
  77.     CALL PUTCH
  78.     DEC SI
  79.     LOOP m3
  80.    
  81.     MOV DX, OFFSET car
  82.     CALL STR_OUT
  83.     JMP BEG
  84.  
  85. ; Процедура ввода символа
  86. GETCH PROC
  87.     MOV AH, 01H         ; функция ввода символа (символ на экран не выводится)
  88.     INT 21H
  89.     RET
  90. GETCH ENDP
  91.  
  92. ; Процедура вывода символа
  93. PUTCH PROC
  94.     MOV AH, 02H         ; функция вывода символа
  95.     INT 21H
  96.     RET
  97. PUTCH ENDP
  98.  
  99. ; Процедура перевода строки 
  100. CLRF PROC
  101.     MOV DL, 10          ; перевод строки
  102.     CALL PUTCH
  103.     MOV DL, 13          ; возврат каретки
  104.     CALL PUTCH
  105.     RET
  106. CLRF ENDP
  107.  
  108. ; Процедура очистки экрана
  109. CLRSCR PROC
  110.     MOV AX, 0600H       ; очистка экрана
  111.     MOV BH, 7
  112.     MOV CX, 0
  113.     MOV DH, 24
  114.     MOV DL, 79
  115.     INT 10H
  116.     MOV AH, 02H         ; перевод курсора в верхний левый угол
  117.     MOV BH, 00H         ; номер экрана
  118.     MOV DX, 00H         ; DH - строка, DL - столбец
  119.     INT 10H
  120.     RET
  121. CLRSCR ENDP
  122.  
  123. STR_OUT PROC
  124.     MOV ah, 09h
  125.     INT 21h
  126.     RET
  127. STR_OUT ENDP
  128.  
  129. HEX PROC
  130.     MOV SI, 0
  131. comp:
  132.     CMP BL, table[SI]
  133.     JE ret1
  134.     INC SI
  135.     JMP comp
  136. ret1:
  137.     RET
  138. HEX ENDP
  139.  
  140. RETURN PROC
  141.     MOV AX, 4c00h
  142.     INT 21h
  143.     RET
  144. RETURN ENDP
  145.  
  146.     MYCODE ENDS
  147. END START
Add Comment
Please, Sign In to add comment