Advertisement
Guest User

tasm

a guest
Nov 3rd, 2021
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. ;---------------------------------------
  3. STACKSG SEGMENT PARA    STACK   ; определение сегмента стека
  4.         DW      128 DUP(?)  ; под стек резервируем 128 слов
  5.         .386
  6. STACKSG ENDS            ; конец сегмента стека
  7. ;---------------------------------------
  8. DATASG  SEGMENT PARA    use16   ; определение сегмента данных
  9.  
  10. result db ?
  11. indent db '', 0Dh,0Ah,'$'
  12. numb dw 1;
  13.   InBuff    label  byte
  14.    MaxSymb   Db  9
  15.     RealSymb  Db  ?
  16.   StringT db 9 dup ('$$$$')
  17.  
  18. AskClient db 'Put your numbers to convert: $'
  19. roman db '-I-$$$$-II-$$$-III-$$-IV-$$$-V-$$$$-VI-$$$-VII-$$-VIII-$-IX-$'  
  20. ;0-2 = I, 7-10 = II, 14-18 = III, 21-24 = IV, 28-30 = V,
  21. ;35-38 = VI, 42-46= VII, 49-54 = VIII,56-59 = IX
  22.  
  23. roman2 db '$$$$$$-I-$$$-II-$$-III-$-IV-$$-V-$$$-VI-$$-VII-$-VIII-$-IX-$$'  
  24. ;6-8 = I, 12-9 = II, 18-16 = III, 24 = IV, 30 = V,
  25. ;36 = VI, 42= VII, 48 = VIII,56 = IX
  26.  
  27. DATASG  ENDS            ; конец сегмента данных
  28. ;---------------------------------------
  29. CODESG  SEGMENT PARA use16      ; определение сегмента кода
  30. ; исполнима¤ часть программы
  31. MAIN    PROC    FAR
  32.         ASSUME  CS:CODESG, SS:STACKSG, DS:DATASG, ES:DATASG
  33.         ; стандартное начало EXE-программы
  34.     mov ax, DATASG
  35.     mov ds,ax
  36.     xor ax,ax
  37.  
  38.     mov dx, offset AskClient
  39.     mov ah,9
  40.     int 21h
  41.     xor dx,dx
  42.    
  43.     xor ax,ax
  44.     mov dx, offset InBuff
  45.     mov ah, 0ah
  46.     int 21h
  47.     xor dx,dx
  48.    
  49.  
  50.     mov dx, offset indent
  51.     mov ah, 09
  52.     int 21h
  53.     xor dx,dx
  54.    
  55.     xor ax,ax
  56.     mov al, StringT[2]
  57.     sub al, 48
  58.     mov bl, 6
  59.     mul bl
  60.  
  61.     mov si, ax
  62.    
  63.     mov dx, offset roman2[si]
  64.     mov ah,9
  65.     int 21h
  66.     xor dx,dx
  67.    
  68.     mov dx, offset indent
  69.     mov ah, 09
  70.     int 21h
  71.     xor dx,dx
  72.  ;========================================
  73.  ;«десь ввод трЄх арабских чисел, перевод из аски
  74.     ;xor ax,ax
  75.     ;xor bx,bx
  76.     ;mov al, numberA
  77.     ;sub al, 48
  78.     ;mov bl, numberB
  79.     ;sub bl, 48
  80.     ;mov cl, numberC
  81.     ;sub cl, 48
  82.  
  83.     xor ax,ax
  84.     mov ah, 2
  85.  
  86.     lea bx, roman2 ; BX - адрес римских чисел
  87.     ;mov al, 0
  88.     mov al, 3
  89.     XLATB
  90.     mov dl, al
  91.     int 21h
  92.    
  93.     ;mov al, StringT[2]
  94.     ;XLATB
  95.     ;mov dl, al
  96.     ;int 21h
  97.    
  98.     ;mov al, StringT[2]
  99.     ;XLATB
  100.     ;mov dl, al
  101.     ;int 21h
  102.    
  103.     ; стандартное окончание программы
  104.     MOV AX,4C00h
  105.     INT 21h
  106. MAIN    ENDP                ; конец исполнимой части программы
  107. CODESG  ENDS            ; конец сегмента кода
  108.         END     MAIN        ; указывает, что исполнима¤ часть программы
  109.                 ; начинаетс¤ с метки MAIN
  110.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement