Advertisement
Guest User

Untitled

a guest
Nov 6th, 2021
98
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.  
  18. numb dw ?
  19. indent db '', 0Dh,0Ah,'$'
  20.  
  21.  
  22. AskClient db 'Put your numbers to convert: $'
  23.  
  24.   InBuff    label  byte
  25.    MaxSymb   Db  9
  26.     RealSymb  Db  ?
  27.   StringT db 1 dup ('$')
  28.  
  29.  
  30. DATASG  ENDS            ; конец сегмента данных
  31. ;---------------------------------------
  32. CODESG  SEGMENT PARA use16      ; определение сегмента кода
  33. ; исполнима¤ часть программы
  34. MAIN    PROC    FAR
  35.         ASSUME  CS:CODESG, SS:STACKSG, DS:DATASG, ES:DATASG
  36.         ; стандартное начало EXE-программы
  37.     mov ax, DATASG
  38.     mov ds,ax
  39.     xor ax,ax
  40.    
  41.     MOV   AX,0600H   ;Запрос на очистку экрана.
  42.     MOV   BH,07      ;Нормальный атрибут (черно/белый).
  43.     MOV   CX,0000    ;Верхняя левая позиция.
  44.     MOV   DX,184FH   ;Нижняя правая позиция.
  45.     INT   10H        ;Передача управления в BIOS.
  46.    
  47.     xor ax,ax
  48.     xor bx,bx
  49.     xor cx,cx
  50.     xor dx,dx
  51.    
  52.     mov dx, offset AskClient
  53.     mov ah,9
  54.     int 21h
  55.     xor dx,dx
  56.    
  57.  
  58.     xor ax,ax
  59.     mov dx, offset InBuff
  60.     mov ah, 0ah
  61.     int 21h
  62.     xor dx,dx
  63.  
  64.  
  65.     mov dx, offset indent
  66.     mov ah, 09
  67.     int 21h
  68.     xor dx,dx
  69.    
  70.    
  71.     MOV DH, 10 ; позиция по вертикали
  72.     MOV DL, 35 ; позиция по горизонтали
  73.     MOV AH, 02H ; установить положение курсора
  74.     INT 10H ; вызов прерывания BIOS 10H
  75.    
  76.     ;mov cx, offset n
  77.     ;sub cx, 31
  78.     mov cl, [RealSymb]
  79.  
  80.    
  81. metka: 
  82.     mov ax,0
  83.     mov al, StringT[si]
  84.     sub al, 49
  85.    
  86.     mov bl, al
  87.     shl bl, 1 ;умножение на 2, т.к. размер адреса - 2 байта
  88.    
  89.     xor ax, ax
  90.    
  91.     mov dx, offset List[bx]
  92.     mov ah, 09h
  93.     int 21h
  94.     add si, 1
  95.     loop metka
  96.    
  97.     mov dx, offset indent
  98.     mov ah, 09
  99.     int 21h
  100.     xor dx,dx
  101.    
  102.     mov dx, offset AskClient
  103.     mov ah,9
  104.     int 21h
  105.     xor dx,dx
  106.     ; стандартное окончание программы
  107.     MOV AX,4C00h
  108.     INT 21h
  109. MAIN    ENDP                ; конец исполнимой части программы
  110. CODESG  ENDS            ; конец сегмента кода
  111.         END     MAIN        ; указывает, что исполнима¤ часть программы
  112.                 ; начинаетс¤ с метки MAIN
  113.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement