Guest User

Untitled

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