- •354000 «Прикладная информатика»
- •Idiv Деление целых знаковых чисел
- •Imul Умножение целых знаковых чисел
- •In Ввод из порта
- •Inc Инкремент (увеличение на 1)
- •Int Программное прерывание
- •I into Прерывание по переполнению
- •Iret Возврат из программы обработки прерывания
- •Xchg Обмен данными между операндами
- •Xlat Табличная трансляция
- •Xor Логическое исключающее или
- •Загрузка и выполнение программ
- •Составление программы на языке Assembler и её размещение в памяти компьютера. Стандартное распределение памяти под программные сегменты.
- •Оператор Текст
- •Имя Операнд_1 ;
- •Имя Операнд_1
- •Загрузка и выполнение программ
- •Mov dl,10 ;Позиция X
- •In Считать данные из порта.
- •Исследование команд, выполняемых процессором. Программирование операций с помощью отладчика языка Assembler..
- •Исследование операций с памятью компьютера. Программирование на языка Assembler в операционной системе ms-dos. Обычная память
- •Косвенная адресация
- •Адресация по базе со сдвигом
- •Косвенная адресация с масштабированием
- •Адресация по базе с индексированием
- •Программирование прерываний на языке Assembler в операционной системе ms-dos.
- •Исследование механизмов работа с видеопамятью персонального компьютера типа ibm. Тестирование и отладка ассемблерных программ.
Исследование механизмов работа с видеопамятью персонального компьютера типа ibm. Тестирование и отладка ассемблерных программ.
Все, что изображено на мониторе – и графика, и текст, одновременно присутствует в памяти, встроенной в видеоадаптер. Чтобы изображение появилось на мониторе, оно должно быть записано в память видеоадаптера. Для этой цели отводится специальная область памяти, начинающаяся с абсолютного адреса 0В800h:0000h (для текстовых режимов) и заканчивающаяся 0В800h:0FFFFh. Все, что программы пишут в эти область памяти, немедленно пересылается в память видеоадаптера. В текстовых режимах для хранения каждого изображенного символа используются два байта: байт с ASCII кодом символа и байт с его атрибутом, так что по адресу 0В800h:0000h лежит байт с кодом символа, находящегося в верхнем левом углу экрана; по адресу 0В800h:0001h расположен атрибут этого символа; по адресу 0В800h:0002h – код второго символа в верхней строке экрана и т.д. Таким образом, любая программа может вывести текст на экран простой командой пересылки данных, не прибегая ни к каким специальным функциями DOS или BIOS.
;dirout.asm
;Выводит на экран все ASCII-символы без исключения, используя ;прямой вывод на экран.
;
.model tiny
.code
.386 ;Будет использоваться регистр ЕАХ
;и команда STOSD
org 100h ;Начало com-файла
start:
mov ax, 0003h
int 10h ;Видеорежим 3 (очистка экрана).
cld ;Обработка сток в прямом направлении
;Подготовка данных для вывода на экран:
mov eax, 1F201F00h;первый символ 00 с атрибутом 1Fh.
;затем пробел (20h) c атрибутом 1Fh
mov bx, 0F20h ;Пробел с атрибутом 0Fh
mov cx, offset ctable ;ES:DI – начало таблицы.
cloop:
stosd ;Записать символ и пробел в таблицу ctable.
inc al ;AL содержит следующий символ.
test cx, 0Fh ;Если СХ не кратен 16,
jnz continue_loop ;продолжить цикл.
push cx ;Иначе: сохранить значение счетчика.
mov cx, 80-32 ;Число оставшихся до конца строки символов.
xchg ax, bx
rep stosw ;Заполнить остаток строки пробелами
; с атрибутом 0F.
xchg bx, ax ;Восстановим значение ЕАХ.
pop cx ;Восстановим значение счетчика.
continue_loop
loop cloop
stosd ;Записать последний (256-й)символ и ;пробел.
;Вывод на экран.
mov ax, 0B800h ;Сегментный адрес видео памяти.
mov es,ax
xor di, di ;DI=0, адрес начала видеопамяти в ES:DI.
mov si, offset ctable ;Адрес таблицы в DS:SI.
mov cx, 6 ;15 строк по 80 символов, последняя строка-32.
rep movsw ;Скопировать таблицу ctable в ;видеопамять.
ret ;Завершение com-файла.
end start
Варианты заданий:
Вывести на экран с помощью видеопамяти 1-10 символы ASCII-таблицы.
Вывести на экран с помощью видеопамяти 10-20 символы ASCII-таблицы.
Вывести на экран слово «Привет», красными буквами на синем фоне.
Вывести на экран с помощью видеопамяти 20-30 символы ASCII-таблицы.