- •Ижевский государственный технический университет
- •6. Оверлей 32
- •8.10. Стандартные библиотеки 52
- •Экзаменационные вопросы 52
- •1. Назначение системного программного обеспечения (спо)
- •Ос и языки программирования
- •2. Обслуживание ввода-вывода
- •2.1. Организация ввода-вывода
- •2.2 Способы управления пу Понятие драйвера пу
- •2.2.1. Синхронный ввод-вывод
- •2.2.2. Асинхронный ввод-вывод
- •2.2.3. Буферный ввод-вывод
- •3. Буферный обмен информацией в языках программирования.
- •4. Управление и доступ к оперативной памяти.
- •4.3. Управление реальной памятью
- •Разделы фиксированной длины
- •Использование разделов переменного размера
- •Использование перемещаемых разделов
- •Защита памяти
- •5. Библиотека dos
- •12. Прерывание 17h – работа с принтером
- •Функция 00h – прочитать время
- •6. Оверлей
- •6.1 Структура программного комплекса
- •6.2. Распределение памяти в оверлейной структуре
- •7. Встроенный в turbo pascal assembler
- •7.2. Режимы адресации в Ассемблере
- •7.4. Выражения для управления памятью
- •7.5.Выражения в Ассемблере
- •7.6. Команды Ассемблера
- •7.6.3. Команды ввода вывода
- •7.6.4. Адресные команды
- •7.6.7. Строковые команды
- •Test Аналогична команде and, но результат операции не записывается в 1 операнд.
- •Установить операнд:
- •8. Язык программирования с.
- •8.10. Стандартные библиотеки
- •Литература
- •Экзаменационные вопросы
- •На тему: название темы
- •Примечание: если курсовая работа выполняется двумя и более студентами, обязательно разбивка задач для каждого студента конкретно.
- •Состав пояснительной записки:
7.6.3. Команды ввода вывода
Используются для синхронного обмена информации из портов. Рекомендую в программах употреблять предопределенные массивы.
7.6.4. Адресные команды
LEA – имеет два операнда. Вычисляет адрес шестнадцатиразрядного второго операнда и заносит его в первый операнд. Адрес вычисляется как относительный внутри модуля.
LDS – имеет два операнда. Вычисляет абсолютный адрес операнда 2. При этом сегмент адреса после выполнения команды находится в регистре DS, а смещение адреса – в операнде 1. В командах вычисления адреса употребляется не абсолютные переменные, а их адреса. Если мы пишем подпрограмму на языке встроенного ассемблера и вычисляем адрес передаваемого параметра, то в этом случае префиксы вычисления адреса употреблять не следует.
Procedure M1 (var M:String); assembler ;
…..
ASM
….
LDS BX, M
…..
END;
LES – аналогична команде LDS, но сегмент адреса загружается в регистр ES.
LFS – аналогично предыдущим двум. Сегмент адреса загружается в регистр FS.
LGS – сегмент адреса загружается в регистр GS.
LSS – сегмент адреса загружается в регистр SS.
Пример.
Напишем процедуру установки пиксела, аналогичную примеру 2 пункта 5.5. Используем встроенный ассемблер и непосредственное обращение к видеопамяти. Пиксел устанавливаем для видеорежима 320х200 точек на 256 цветов.
Procedure my_pixel(x,y : word; Color : byte);
Begin
ASM
PUSH ES
MOV AX,0A000h
MOV ES,AX
MOV AL,Color
MOV [ES:Y*320+X],AL
POP ES
END;
END;
7.6.5. Команды работы с регистром флагов.
LAHF – команда без операндов. Загружается в регистр AH.
SAHF – команда обратная предыдущей. Из регистра AH загружаются соответствующие биты в регистр флагов.
PUSHF – сохраняет флаг регистр в стек. Регистр SP повышается на 1.
PUSHFD – сохранение 32-бит. Флагового регистра. SP увеличивается на 2.
POPF – восстановление флагового регистра из стека.
POPFD – 32-разрядный.
Другие команды смотрите по литературе/2,3/.
7.6.6. Арифметические команды
Длина операндов должна быть одинаковой. После выполнения команд могут быть установлены флаги: F, S, OF, SF, ZF, AF, PF, SF.
ADD – имеет два операнда. Прибавляет операнд 2 к операнду 1 и результат записывает в 1.
Пример: ADD BL, AL
INC – имеет один операнд. Увеличивает значение операнда на 1.
DEC – уменьшить на 1.
SUB - Вычитает операнд 2 из операнда 1 и результат записывает в 1.
CMP – сравнить два операнда. Аналогично команде SUB , но результат не записывается в первый операнд.
Другие команды данного раздела на самостоятельное изучение.
7.6.7. Строковые команды
Под строкой в ассемблере понимается массив. При этом длина символа может быть равна длине ординарного типа (см. таблицу преобразований типов для ассемблера). Изучаем самомстоятельно.
7.6.8. Логические команды.
Логические команды в Ассемблере выполняются побитово над байтом, словом или двойным словом. При этом длина операндов должна обязательно быть одинаковой.
Логическое умножение.
AND Имеет 2 операнда. После выполнения команды изменяется содержимое флагов FS, FZ, FP.
Отрицание.
NOT Имеет 1 операнд. Необходимо помнить, что отрицание не эквивалентно смене знака.
Логическое сложение.
OR После выполнения команды изменяются флаги аналогично команде AND.
Исключающее «или»
XOR Аналогично предыдущим командам меняются флаги.
Логические команды работают быстрее пересылки, поэтому XOR AL, AL быстрее, чем MOV AL,0.
Произвести сравнение двух чисел