69 lines
2.0 KiB
C++
Executable File
69 lines
2.0 KiB
C++
Executable File
/* Labv8: Ass, and Ci functions
|
||
Шаблон программы для работы с видеосистемой
|
||
Текстовый режим
|
||
*/
|
||
|
||
#include <dos.h>
|
||
#include <stdio.h>
|
||
#include <stdlib.h>
|
||
#include <conio.h>
|
||
|
||
|
||
#include <iostream.h>
|
||
|
||
void page(char a) // Установка номера активной дисплейной стр.
|
||
{
|
||
asm {
|
||
mov ah,0x05
|
||
mov al,a
|
||
int 0x10
|
||
}
|
||
|
||
}
|
||
|
||
void main()
|
||
{
|
||
// установка видеорежима
|
||
asm{
|
||
mov al,02h
|
||
mov ah,00h
|
||
int 10h
|
||
} page(0);
|
||
clrscr();
|
||
// Вывод текста средствами Си
|
||
for(char n = 1; n <= 100; n++)
|
||
// -- здесь сам вывод -
|
||
|
||
// Выод текста в режиме непосредств работы с видеопамятью
|
||
page(0);
|
||
asm mov cx,1000 // Задаем количество символов
|
||
asm mov di,0 // Обнуляем индекс
|
||
e1: asm { add di, 2
|
||
mov ax, 0xb800 // Определяем начальный адрес
|
||
mov es, ax
|
||
mov al, cl
|
||
mov es: [di],al // Пересылаем четный первый байт в видеопамять
|
||
mov al, 4
|
||
mov es: [di+1],al // Пересылаем нечетный второй байт
|
||
};
|
||
asm loop e1
|
||
|
||
getch();
|
||
|
||
|
||
// Задания
|
||
// 1 Выведите текст с использ Си.
|
||
// Раскрасте его зеленым цветом с использованием Асс.
|
||
// Определите время вывода в обоих случаях
|
||
// 2 Протестируйте размер текстовой дисплейной страницы.(Напишите
|
||
// программу на Асс вывода символов в начале и в конце дисплейной страницы)
|
||
// 3 Выведите текст на вторую дисп страницу
|
||
// 4 Организуйте переключение страниц
|
||
/* while (bioskey(1) == 0)
|
||
{
|
||
page(0); delay(1000);
|
||
|
||
} */
|
||
return;
|
||
}
|