Advertisement
Guest User

Untitled

a guest
Dec 11th, 2021
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. STACKSG SEGMENT PARA    STACK   ; определение сегмента стека
  2.         DW      128 DUP(?)  ; под стек резервируем 128 слов
  3.         .386
  4. STACKSG ENDS            ; конец сегмента стека
  5. ;---------------------------------------
  6. DATASG  SEGMENT PARA    use16   ; определение сегмента данных
  7. _1 db "-I-", "$"
  8. _2 db "II-", "$"
  9. _3 db "III-", "$"
  10. _4 db 'IV-', '$'
  11. _5 db 'V-', '$'
  12. _6 db 'VI-', '$'
  13. _7 db 'VII-', '$'
  14. _8 db 'VIII-', '$'
  15. _9 db 'IX-', '$'
  16. List dw _1, _2, _3, _4,_5,_6,_7,_8,_9
  17. MAX_SYMB EQU 64
  18.  
  19.  
  20. AskClient db 'Put your numbers to convert: $'
  21.  
  22.   InBuff    label  byte
  23.    MaxSymb   Db  MAX_SYMB
  24.     RealSymb  Db  ?
  25.   StringT db MAX_SYMB dup ('$')
  26.  
  27.  
  28. DATASG  ENDS            ; конец сегмента данных
  29. ;---------------------------------------
  30. CODESG  SEGMENT PARA use16      ; определение сегмента кода
  31. ; исполнима¤ часть программы
  32. MAIN    PROC    FAR
  33.         ASSUME  CS:CODESG, SS:STACKSG, DS:DATASG, ES:DATASG
  34.         ; стандартное начало EXE-программы
  35.     mov ax, DATASG
  36.     mov ds,ax
  37.     xor ax,ax
  38.    
  39.     MOV   AX,0600H   ;Запрос на очистку экрана.
  40.     MOV   BH,07      ;Нормальный атрибут (черно/белый).
  41.     MOV   CX,0000    ;Верхняя левая позиция.
  42.     MOV   DX,184FH   ;Нижняя правая позиция.
  43.     INT   10H        ;Передача управления в BIOS.
  44.    
  45.     xor ax,ax
  46.     xor bx,bx
  47.     xor cx,cx
  48.     xor dx,dx
  49.    
  50.     mov dx, offset AskClient
  51.     mov ah,9
  52.     int 21h
  53.     xor dx,dx
  54.  
  55.     xor ax,ax
  56.     mov dx, offset InBuff
  57.     mov ah, 0ah
  58.     int 21h
  59.     xor dx,dx
  60.    
  61.     MOV DH, 10 ; позиция по вертикали
  62.     MOV DL, 35 ; позиция по горизонтали
  63.     MOV AH, 02H ; установить положение курсора
  64.     INT 10H ; вызов прерывания BIOS 10H
  65.        
  66.     xor si, si
  67.     mov cl, RealSymb
  68. metka:  
  69.    
  70.     mov ax, 0
  71.     mov al, StringT[si]  
  72.  
  73.     sub al, 49
  74.    
  75.     jl next      ; перейти к следующей цифре, если код текущей меньше '1'
  76.     cmp al, 9
  77.     jnl next     ; перейти к следующей цифре, если текущая больше 9
  78.    
  79.     mov bl, al
  80.     shl bl, 1 ;умножение на 2, т.к. размер адреса - 2 байта
  81.    
  82.     xor ax, ax
  83.  
  84.     mov dx, offset List[bx]
  85.     mov ah, 09h
  86.     int 21h
  87.    
  88. next:  
  89.     add si, 1
  90.     loop metka
  91.  
  92.     ; стандартное окончание программы
  93.     MOV AX,4C00h
  94.     INT 21h
  95. MAIN    ENDP                ; конец исполнимой части программы
  96. CODESG  ENDS            ; конец сегмента кода
  97.         END     MAIN        ; указывает, что исполнима¤ часть программы
  98.                 ; начинаетс¤ с метки MAIN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement