- •По курсу: ”организация эвм и систем”
- •Печатается по решению редакционно-издательского совета
- •Введение
- •1Введение в архитектуру реального режима ibm pc
- •Память и процессор
- •Распределение адресного пространства
- •Система прерываний
- •Система ввода-вывода
- •Архитектурные особенности процессоров ia-32
- •Дополнительные режимы адресации
- •Использование средств 32-разрядных процессоров в программировании
- •2Общие указания по выполнению лабораторных работ
- •Лабораторная работа № 1 Изучение структуры программы и способов адресации мп 8086
- •Домашняя подготовка
- •Лабораторное задание
- •Варианты задания
- •Контрольные вопросы
- •Теоретическая часть
- •Способы адресации и оптимизация программ
- •Строковые команды
- •Сканирование строки.
- •Загрузка регистра из строки.
- •Сегментная структура программ (структура и образ памяти программы .Exe).
- •Двоично-десятичные числа
- •Лабораторная работа № 2. Организация доступа к дискам в режиме ms dos и анализ системных ошибок.
- •Домашняя подготовка
- •Лабораторное задание
- •Варианты заданий
- •Контрольные вопросы
- •Теоретическая часть
- •Лабораторная работа № 3. Организация прерываний и резидентные программы.
- •Домашняя подготовка
- •Лабораторное задание
- •Контрольные вопросы
- •Варианты задания
- •Теоретическая часть (См. Также разделы 1.3 и 2.4)
- •3Организация прерываний и резидентные программы.
- •Резидентные программы
- •Механизм прерываний
- •Структура и образ памяти программы .Сом
- •Примеры резидентных программ
- •Лабораторная работа № 4. Системное время в компьютерах ibm pc
- •Варианты задания
- •Домашняя подготовка
- •Контрольные вопросы
- •Теоретическая часть
- •4 Системное время в компьютерах ibm pc
- •Измерение частоты при помощи rdtsc
- •Назначение каналов таймера в ibm pc
- •Библиографический список
- •Приложение Функции ms dos для выполнения лабораторных работ
- •Установка вектора прерывания
- •Чтение вектора прерывания
- •Завершение программы
- •Создание файла
- •Закрытие файла
- •Чтение из файла
- •Очистка экрана
- •Дополнительные средства ассемблера
Закрытие файла
Входные параметры:
AH – 3Eh
DS:DX – адрес строки, содержащей имя нового файла
AL – метод доступа (0 – чтение, 1 – запись, 2 – чтение/запись)
Выходные параметры:
AX – номер ошибки, если флаг CF был установлен в случае ошибки.
Чтение из файла
При работе с файлами на Ассемблере следует знать, что единичной записью является байт. Все записи имеют номера от 0 до L-1 где L –длина файла в байтах. При открытии файла указатель устанавливается на «0». При чтении или записи указатель автоматически передвигается на «n» байт (где n –число записанных или прочитанных байт).
Входные параметры:
AH – 3Fh
BX – номер файла (так называемый “указатель”, получаемый при открытии)
CX – количество байт, которое надо прочитать
DS:DX – адрес буфера, куда данные будут считываться
Выходные параметры:
AX – номер ошибки, если флаг CF был установлен в случае ошибки.
Если ошибок не было, то в AX – реальное количество байт, которое было считано.
Запись в файл
Входные параметры:
AH – 40h
BX – номер файла
CX – количество байт, которое надо записать
DS:DX – адрес буфера, откуда данные будут записываться
Выходные параметры:
AX – номер ошибки, если флаг CF был установлен в случае ошибки.
Если ошибок не было, то в AX – реальное количество байт, которое было считано.
Некоторые простейшие функции, которые могут понадобиться в процессе выполнения работы.
Очистка экрана
MOV AX, 3
INT 10h
Задержка в 1/18 секунды
|
MOV |
AX, 40h |
|
MOV |
ES, AX |
|
MOV |
AX, ES:[6Ch] |
LABEL1: |
CMP |
AX, ES:[6Ch] |
|
JE |
LABEL1 |
Дополнительные средства ассемблера
В языке ассемблера существуют средства, позволяющие, во-первых, задать используемую в программе модель памяти и, во-вторых, упростить описание сегментов такой программы. Модель памяти задается с помощью директивы .model. В качестве аргумента этой директивы выступает ключевое слово, определяющее используемую модель памяти. Малая (трёхсегментная) модель описывается ключевым словом small, крошечная (односегментная) - ключевым словом tiny. Указание директивы .model позволяет далее использовать упрощенные директивы описания сегментов.
Пример программы вывода строки:
.model small
; описание сегмента команд
.code
main proc
mov ax, @data (или _data)
mov ds, ax
mov ah, 09h
mov ax, offset mes
int 21h
; выход в DOS
mov ax, 4c00h
int 21h
main endp
.data
mes db ‘OK!$’
.stack 256; размер стека 256 бит
end main
Транслятор языка ассемблер предоставляет набор символических имен (идентификаторов) для сегментов команд (@code или _code), данных (@data или _data) и стека (stack).
Если в программе предполагается использовать расширенный состав команд МП Pentium, то начало программы будет выглядеть:
.586
.model use16 small
.code и т.д.