- •Московский государственный университет
- •3. Рекомендуемая литература для подготовки к лабораторным работам:
- •5. Порядок сдачи лабораторной работы:
- •6. Основной теоретический материал для выполнения лабораторных работ Общий формат команды Ассемблера
- •Структура простейшего программного модуля. Сегментирование
- •Функции bios
- •Int 10h: Видео сервис
- •Функции os
- •Ввод-вывод текстовых данных
- •Завершение программы
- •Работа с файлами
- •7.Задания на выполнение лабораторных работ Задание на лабораторную работу №1: программирование операций ввода-вывода для стандартных устройств.
- •Задание на лабораторную работу 2
6. Основной теоретический материал для выполнения лабораторных работ Общий формат команды Ассемблера
[Метка:] Код_операции [Операнд1 [,Операнд2] ] [;Комментарий ]
Адреса памяти в командах м.б. записаны так:
А
А[М]
А[М1] [М2]
Где А – адрес, М – регистр ВХ, ВР, M2 - регистр SI или DI. В случае 2 и 3 компонента А может отсутствовать (т.е. А=0).
Примеры:
Mov Ax, Si
Mov Bh, 5
Mov Di, Size X
Mov X, Ah
Mov X[Bx][Di], 5
Mov [Bx], Cl
Mov Ah, 5
Mov Ax, 5
Mov [Bx], 300
Mov Ds, Ax
Mov Cx, Bh
Mov Dl, 300
Mov [Bx], 5 - Некорректный вариант - Не Определён Тип Операнда
Mov Byte Ptr [Bx], 5 - корректный вариант
Mov Word Ptr [Bx], 5 - корректный вариант
X Dw 999
Mov Ah, X
Mov Ah, Byte Ptr X
Mov Ax, 80h
Mov Ax, -128 ;0ff80h
Mov Ax, 128 ;0080h
Mov Ax, 80h ;0080h
Структура простейшего программного модуля. Сегментирование
Модуль программы на языке ассемблера состоит из сегментов следующих типов:
сегмент кода
сегмент данных
сегмент стека
расширенный сегмент
Assume CS: Code, DS: Data
Code SEGMENT
org 100h
Start: … ;точка входа в программу
Code ENDS
Data Segment
….
Data ENDS
END Start
Dt1 Segment
A Db 0
B Dw ?
Dt1 Ends
;
Dt2 Segment
C Db ‘Hallo’
Dt2 Ends
;
Code Segment
Assume Cs:Code, Ds:Dt1, Es:Dt2
Beg: Mov Ax, Dt2
Mov Ds,Ax
Mov Bh, C
…
Code Ends
End Beg
В простейшей программе может быть всего один сегмент - кодовый, тогда необходимо в директиве Assume указать его использование и для адресации данных, а также загрузить в регистр ds его фактический адрес.
Assume CS: Code, DS: Code
Code SEGMENT
org 100h
Start: mov ax,cs
mov ds,ax
…
Функции bios
Функции BIOS – это функции, вызываемые по команде INT с номерами в диапазоне от 0 до 20h для обработки различных событий в ЭВМ. Детализация вызываемого сервиса обычно вводится в регистре АН.
Int 10h: Видео сервис
Ниже приведен перечень функций видеосервиса, предоставляемых подпрограммами BIOS. Номер функции определяется значением регистра АН при вызове int 10.
|
|
00h |
Установить видеорежим |
01h |
Установить размер и форму курсора |
02h |
Установить позицию курсора |
03h |
Читать позицию курсора |
04h |
Читать световое перо |
05h |
Выбрать активную страницу дисплея |
06h |
Скроллинг окна вверх (или очистка его) |
07h |
Скроллинг окна вниз (или очистка его) |
08h |
Читать символ/атрибут |
09h |
Вывести символ/атрибут |
0ah |
Вывести символ |
0bh |
Выбрать палитру/цвет рамки |
0ch |
Вывести графическую точку |
0dh |
Читать графическую точку |
0fh |
Вывести символ в режиме TTY |
10h |
Читать видео режим |
|
|
Здесь детализированы функции INT 10H стандартного видеосервиса ROM-BIOS.
AH = 00H Установка видеорежима.
Вход: AL = видеорежим
AL |
Тип |
Формат |
Цветов |
0 |
текст |
40 х 25 |
16/8 |
1 |
текст |
40 х 25 |
16/8 |
2 |
текст |
80 х 25 |
16/8 |
3 |
текст |
80 х 25 |
16/8 |
4 |
графика |
320 х 200 |
4 |
5 |
графика |
320 х 200 |
4 |
6 |
графика |
640 х 200 |
2 |
7 |
текст |
80 х 25 |
3 |
0dh |
графика |
320 х 200 |
16 |
0eh |
графика |
640 х 200 |
16 |
0fh |
графика |
640 х 350 |
3 |