Advertisement
LIA00

Untitled

Sep 11th, 2023 (edited)
1,230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .model small
  2. .stack 100h
  3. .186
  4. .data
  5.     StrJump db 'dsads','$'      ; строка с символами перехода на новую строку
  6.     row db 5                    ; Y начала ввода (5)
  7.     col db 10                   ; X начала ввода (10)
  8.     ;ch_num db 4Dh              ; текущий символ (латинская M)
  9.     ch_num db 65                ; текущий символ (латинская M == 77!)
  10.     colour db 0FDh              ; цвет строки (синий -   01h, светло-синий - 09h)
  11.     spaces dw 146               ; (80 - 7) * 2
  12. .code
  13.  
  14. start:
  15.     mov AX, @data
  16.     mov DS, AX
  17.    
  18.     mov AX,0B900h           ; Используя сегментный регистр ES,  
  19.     mov ES,AX               ;  организовать запись данных в видеопамять
  20.                             ;  по адресу В900h:0000h (страница 1)
  21.     call SetMode
  22.    
  23.    
  24.     ;call output
  25.    
  26.     ;После завершения вывода программа ожидает нажатия клавиши
  27.     ;и, восстановив исходную страницу и видеорежим, завершается
  28.    
  29.     ;mov AH, 0Ah ; когда это есть, он хотя бы перестаёт работать...
  30.     ;int 10
  31.    
  32.     call output
  33.    
  34.     mov AX, 4C00h
  35.     int 21
  36.    
  37.  
  38. SetMode proc
  39.     ;mov AH, 0Fh                ; Определить текущий видеорежим
  40.     ;push AX                    ;   и сохранить их в стеке
  41.     ;int 10h
  42.    
  43.     ;mov AH, 00h                ;Установить видеорежим 03 (функция 00h прерывания int 10h)
  44.     ;mov AL, 03            
  45.     ;int 10h
  46.    
  47.     mov AH, 05h             ;и текущую страницу 01 (функция 05h прерывания int 10h)
  48.     mov AL, 01h
  49.     int 10h
  50.    
  51.    
  52.     mov AH, 02h             ;Установить видеорежим 03 (функция 00h прерывания int 10h)
  53.     mov BH, 0      
  54.     ;mov DH, 5
  55.     ;mov DL, 10
  56.     int 10h
  57. SetMode endp
  58.  
  59. output proc
  60.     pusha
  61.    
  62.     ;mov AL, ch_num
  63.     ;mov AH, 00Dh
  64.     mov DI, 0820        ; начальное смещение для строки 5 столбца 10
  65.     xor CX, CX
  66. new_line:
  67.  
  68.     mov AL, ch_num
  69.     mov AH, colour
  70.     ;mov DI, 0820       ; начальное смещение для строки 5 столбца 10
  71.  
  72.     push CX
  73.     mov CX, 7       ; 7 столбцов
  74.     cycle:
  75.         mov ES:word ptr[DI], AX
  76.         add DI, 2
  77.         loop cycle
  78.        
  79.     add DI, spaces
  80.    
  81.     pop CX
  82.     inc CX
  83.     inc ch_num
  84.     inc colour
  85.     cmp CX, 6       ; 5 строк
  86.     jne new_line
  87.    
  88.     popa
  89.     ret
  90. output endp
  91.  
  92. end start
  93.  
  94.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement