Advertisement
SquirrelInBox

Untitled

Nov 15th, 2015
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     .model  tiny
  2.     .code
  3.     org 100h
  4.  
  5. main:
  6.     ;; аргументы нормер режима 01 02 07, номер страницы
  7.     ;; в нем выводить
  8.    
  9.     ; считали аргументы
  10.     ;mov si, 82h
  11.    
  12.     ;mov cx, 1
  13.     ;mov di, offset our_vm
  14.     ;rep movsb
  15.    
  16.     ;mov cx, 1
  17.     ;mov si, 84h
  18.     ;mov di, offset our_ap
  19.     ;rep movsb
  20.    
  21.     mov al, cs:[82h]
  22.     ;xor ah, ah
  23.     sub al, '0'
  24.     mov [our_vm], al
  25.    
  26.     mov al, cs:[84h]
  27.     ;xor ah, ah
  28.     sub al, '0'
  29.     mov [our_ap], al
  30.    
  31.     ; узнали, сколько колонок надо отступить
  32.     mov al, 1
  33.     mov bl, cs:[82h]
  34.     ;xor bh, bh
  35.     sub bl, '0'
  36.     call get_column
  37.    
  38.     ; поменяли режим на новый, старый запомнили
  39.     mov ah, 0fh
  40.     int 10h
  41.     mov [old_vm], al
  42.     mov [old_ap], bh
  43.     xor ax, ax
  44.     mov al, [our_vm]
  45.     push ax
  46.     mov al, [our_ap]
  47.     push ax
  48.     call change_vm
  49.    
  50.     ;32, 4 - начальные координаты курсора
  51.     mov bh, [our_ap]
  52.     mov cx, 10h
  53. l:
  54.     push ax
  55.     push bx
  56.    
  57.     mov al, 1
  58.     mov bl, cs:[82h]
  59.     ;xor bh, bh
  60.     sub bl, '0'
  61.     call get_column
  62.     pop bx
  63.     pop ax
  64.     push cx
  65.     mov cx, 10h
  66.     l_2:
  67.         ; установили курсор
  68.         mov ah, 02h
  69.         mov dh, row
  70.         mov dl, column
  71.         int 10h
  72.        
  73.         ; выводим символ
  74.         mov ah, 09h
  75.         mov al, symb
  76.         mov bl, 02h
  77.         push cx
  78.         mov cx, 01h
  79.         int 10h
  80.        
  81.         pop cx
  82.         inc symb
  83.         inc column
  84.         inc dh
  85.         loop l_2
  86.        
  87.         ;inc column
  88.         pop cx
  89. ;       xchg cx, dx
  90.     inc row
  91.     loop l
  92.    
  93.    
  94.     xor ax, ax
  95.     int 16h     ; Ждет нажатия клавиши
  96.    
  97.     xor ax, ax
  98.     mov al, old_vm
  99.     push ax
  100.     mov al, old_ap
  101.     push ax
  102.     call change_vm
  103.     ret
  104.  
  105. get_column proc
  106.     cmp al, bl
  107.     jz get1vm
  108.     jmp get_other_vm
  109.    
  110.     get1vm:
  111.         mov column, 12
  112.         jmp pass
  113.  
  114.     get_other_vm:
  115.         mov column, 32
  116.     pass:
  117.         ret
  118. get_column endp
  119.    
  120. change_vm proc
  121.     push bp
  122.     mov bp, sp
  123.     push ax
  124.     mov ah, 00h
  125.     mov al, [bp+6] ;vm
  126.     int 10h
  127.     mov ah, 05h
  128.     mov al, [bp+4] ;ap
  129.     int 10h
  130.     pop ax
  131.     pop bp
  132.     ret 4
  133. change_vm endp
  134.  
  135. our_vm  db  ?
  136. our_ap  db  ?
  137. old_vm  db  ?
  138. old_ap  db  ?
  139. column  db  ?
  140. row     db  4
  141. symb    db  00h
  142. buffer  db  ?
  143.  
  144.  
  145. end main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement