- •Ижевский государственный технический университет
- •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. Встроенный в turbo pascal assembler
7.1. Общие положения
Язык Ассемблера предназначен для проектирования системных программ и в настоящее время используется для проектирования части программы или подпрограмм для придания им следующих свойств:
минимизация исполнительного кода
убыстрения процесса выполнения
осуществление связи с периферийными устройствами в режиме реального времени
неявные преобразования между данными
При проектировании программы с использованием Ассемблера следует помнить об ограничениях:
Язык Ассемблера поддерживает тот или иной центральный процессор (встроенный в Turbo Pascal Ассемблер поддерживает только команды процессора 80286).
В отличии от языков высокого уровня, не существует поддержки преобразования данных.
Не существует поддержки отмены содержимого регистров центрального процессора (в основном, регистров флагов).
Отдельные компиляторы Ассемблера, начиная с начала 90-х годов, не развиваются, и поэтому максимальный тип процессора, на котором может работать программа, откомпилированная в Borland, ограничен процессором 486.
В зависимости от объема исполняемой программы, подпрограммы могут быть короткие (объем меньше одной страницы) и длинные, а также в зависимости от языка высокого уровня, в котором они применяются, подпрограммы могут иметь атрибут Pascal и все другие (такие подпрограммы называются подпрограммами для языка С).
Код Ассемблера в программе на ТР начинается с утверждения asm и заканчивается end;Такой код доступен только в ТР 6 и выше.
Каждая команда в Ассемблере записывается в отдельную строку, а после нее через пробел идут операнды, участвующие в команде. Если таких операндов несколько, то они отделяются друг от друга запятой.
В качестве операнда может участвовать регистр центрального процессора, переменная ТР, константа или выражение. При этом правила применения зависят непосредственно от команды.
7.2. Режимы адресации в Ассемблере
В Ассемблере существует три вида адресации:
непосредственная адресация
косвенная адресация
индексно-косвенная
Непосредственная адресация аналогична оператору присваивания; косвенная – работе с указателем; индексно-косвенная – работе с указателем и некоторым смещением в оперативной памяти.
mov ax,bx Непосредственная адресация. Пересылает содержимое регистра bx в ах. В Ассемблере, как правило, первый операнд участвует в операции и в нее записывается результат.
mov ax,[bx] Косвенная адресация. Пересылает в регистр ах содержимое ячейки по адресу bx.
mov ax,[es:bx+12] Индексно-косвенная адресация. Пересылает в регистр ах содержимое ячейки по адресу: сегмент адреса находится в es, смещение – в bx и прибавление относительно смещения 12.
Когда между операндами в адресации ставится двоеточие, то адрес воспринимается в пределах всей оперативной памяти. Когда между операндами стоит знак “+”, то значение второго операнда должно находится в пределах от –127 до 128.
7.3. Соответствие ординарных типов данных между языками программирования
Тuгbо Раscal |
Тuгbо Аssembler |
С++ |
Bуtе |
Byte |
unsigned сhаг |
Сhаг |
Byte |
Char |
Shortint |
Byte |
unsigned сhаг |
bоо1еаn |
Byte |
Bool |
Integer |
Word |
Int |
Word |
Word |
unsigned int |
set of |
Word |
Enum |
Нет |
Word |
unsigned сhort |
Нет |
Word |
Short |
Longint |
Dword |
Long |
Нет |
Dword |
unsigned long |
Pointer |
Word |
Пеаг* |
Pointer |
Dword |
fаг* |
Single |
Dword |
Float |
Real |
Fword |
Нет |
Double |
Qword |
Нет |
Extended |
tbyte |
long double |
String, file [of] |
Нет |
Нет |
Pchar |
нет |
сhаг* |