- •Ижевский государственный технический университет
- •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.4. Выражения для управления памятью
Пусть переменная big хранит шестнадцатеричное значение 12345678 и имеет длину 4 байта.
Команда Ассемблера Результат операции
mov ax,word[big] В регистре ax – содержимое 5678
mov al,byte[big] В аl – значение 78
mov ax,word[big+2] В ax – 1234
mov al,byte[big+3] В al – 12
7.5.Выражения в Ассемблере
Префикс (операция) |
Описание |
: |
Вычисление адреса, первое подвыпажение – сегмент адреса, второе – смещение адреса |
[…] |
Косвенная адресация, указание на адрес. Выражение в скобках определяет адрес |
+ - * / |
Арифметические операции, причем умножение и деление здесь нацело |
& |
Обозначает переменную ТР. Например, если в выражении &CH, то будет использоваться не регистр СН, а переменная ТР с этим именем |
word |
Возврат результата выражения, укороченного словом |
byte |
Возврат результата выражения, укороченного байтом |
offset |
Смещение адреса(возврат) |
seg |
Возврат сегмента адреса |
PTR |
Адрес ячейки памяти, аналогично […] |
mod |
Остаток от деления |
shl,shr |
Сдвиг влево, вправо |
not |
Побитовое отрицание |
and |
Логическое умножение |
or |
Логическое сложение |
xor |
Исключающее “или” |
high |
Возвращает старшие 8 бит выражения в слово, следующее за операндом |
type |
Возвращает размер в байтах получающегося выражения. Если вместо выражения используется константа, то возврат равен нулю |
low |
Возвращает младшие 8 бит выражения в слово, следующее за операндом |
Пример команды, двигающей циклический регистр АХ вправо на три разряда и записывающей результат в BX:
mov bx,ax shr 3
Допускается любое количество скобок (())()((())) в выражении.
Скобки определяют порядок вычисления выражения. По умолчанию операции идут в следующем порядке:
byte, word, low, high
*, /
+, -, логические операции, сдвиг, offset, seg, PTR
type
7.6. Команды Ассемблера
Команды общего назначения
MOV – переслать операнд2 в операнд1. После выполнения – содержимое флагов не меняется и перед выполнением – не анализируется.
MOVS – переслать операнд2 в операнд1, но теперь первый и второй операнды должны являться ячейками памяти. Т.е. должна использоваться косвенная адресация.
Пример, movs [es:di],[es:bx]
Такая команда используется в пересылке строк. Под строкой в Ассемблере понимают любой массив, при этом величина одного элемента массива может быть длиной до 12 байт.
PUSH – имеет один операнд. Записывает операнд в стек.
При этом значение регистра SP увеличивается на 1. Операнд записывается по адресу SS : SP
POP – восстановить операнд из стека. Обратная команда PUSH. Значение SP уменьшается на 1. Операнд берется по адресу SS : SP.
PUSHA – операндов не имеет. Записывает регистры в стек. Запись идет в следующих регистрах: AX, BX, CX, DX, SP, BP, SI, DI. Значения регистра SP повышается на 8. Данная команда автоматически добавляется в качестве 1-ой к коду, написанного на языке встроенного ассемблера.
PUSHAD – запись в стек 32-х разрядных регистров. Во встроенном ассемблере нет. Значение регистра SP увеличивается на 32.
POPA – восстановить содержимое регистров из стека. Обратная команде PUSHA. 32-х разрядная команда – POPAD.
XCHG – имеет два операнда. Осуществляет взаимный обмен информацией двух операндов.
7.6.2. Команды преобразования форматов.
Единственная группа команд ассемблера допускающая использование операндов разной длины . Подробное описание можно найти в /2,3/.