TITLE   BIOS_FUNCTION

.MODEL  small

DOSSEG


.STACK  100h

.DATA
     message     DB      "INT 10h", 0
     video_page  DB      2

.CODE
.STARTUP



     ; выбираем режим 0 видиоадаптера

     xor     ah,ah
     xor     al,al
     int     10h

     ; изменяем форму курсора

     mov     ah,1
     mov     ch,0        ; начало курсора - линия 0
     mov     cl,7        ; конец курсора - линия 7
     int     10h

     ; выбираем активную страницу видиопамяти

     mov     ah,5
     mov     al,video_page     ; выбираем страницу video_page
     int     10h

     mov     ah,6
	  mov     al,0
     mov     bh,0ffh
     mov     cl,10
     mov     ch,5
     mov     dl,30
     mov     dh,15
     int     10h

	 ;устнанавливаем координаты курсора

     mov     ah,2
	  mov     bh,video_page     ; выбираем страницу video_page
     mov     dh,12       ; строка 12
     mov     dl,20       ; колонка 20
     int     10h

     ;отображаем на активной странице экрана строку message

     mov     si,OFFSET message
     call    WriteString

     .EXIT   0


; процедура WriteString выводит на экран строку, имеющую
; смещение si в сегменте ds

WriteString     PROC

     ; определяем текущую активную страницу экрана

     mov     ah,0Fh
	  int     10h         ; номер активной страницы в регистре bh

     ; получаем в dx координаты курсора

     mov     ah,3
     int     10h

     ; в цикле выводим на экран символы строки

next_char:

     mov     ah,9
     lodsb
     cmp     al,0        ; находим конец строки
	  je      exit_proc   ; если конец строки достигнут, то оканчиваем процедуру
	  mov     bl,7        ; для отображаемых символов используем атрибут 7
	  mov     cx,1        ; символы строки выводятся без повтора
     int     10h

     ; перемещаем курсор в следующую позицию строки

     mov     ah,2
     inc     dl
     int     10h

     jmp     next_char

exit_proc:

     ret

WriteString     ENDP

END



