- •Щемелева т.К.
- •Архитектура и программирование реального режима микропроцессоров фирмы intel
- •Учебное пособие
- •Пермь 2001
- •Содержание
- •1.2.Переводы между позиционными системами счисления
- •1.3.Система кодирования символов ascii
- •1.4. Преобразование строки ascii-кодов в двоичное и шестнадцатеричное число
- •1.5. Применение систем счисления в эвм
- •1.6. Контрольные вопросы и задания
- •Тема 2. Представление данных на языке ассемблера и их хранение в памяти пк
- •2.1. Биты, байты и слова
- •2.3. Размещение различных типов данных в памяти пк
- •2.4. Отрицательные числа
- •2.5. Контрольные вопросы и задания
- •Тема 3. Элементы архитектуры персонального компьютера: сегментная память и регистровая структура микропроцессора
- •3.1. Понятие сегмента
- •3.2. Способ адресации ячеек сегментированной памяти
- •3.4. Программистская модель мп i8086. Назначение регистров.
- •Регистры общего назначения
- •Регистры сегментов и указатель команд
- •3.5. Контрольные вопросы и задания
- •Тема 4. Создание программы в ехе-формате
- •4.1. Программы на языке транслятораMasm.
- •4.1.1. Определение сегментов и данных.
- •4.1.2. Структура программы.
- •4.2. Программы на языке транслятораTasm.
- •4.2.1. Особенности транслятора.
- •4.2.2. Определение сегментов и данных .
- •4.2.3. Директива model.
- •4.2.4. Директивы упрощенного описания сегментов.
- •4.2.5. Структура программы.
- •4.2.6. Директивы startupcode и exitcode.
- •4.3. Контрольные вопросы и задания
- •Тема 5. Способы адресации данных в командах языка ассемблер
- •5.1. Регистровая адресация
- •5.2. Непосредственная адресация.
- •5.3. Прямая адресация.
- •5.4. Косвенная регистровая.
- •5.5. Адресация по базе.
- •5.6. Индексная адресация.
- •5.7. Адресация по базе с индексированием.
- •5.8. Контрольные задания.
- •Тема 6. Основные команды языка Ассемблер
- •6.1. Команды пересылки.
- •1) Пересылка данных
- •2) Пересылка адресов
- •4) Пересылка в стек и из стека
- •6.2. Арифметические операции.
- •2) Арифметические операции над двоичными кодами.
- •3) Команда сравнения:
- •6.3. Команды корректировки.
- •6.4. Команды логических операций.
- •1) Поразрядные логические операции:
- •2) Команды сдвига
- •6.5. Команды передачи управления.
- •6.6. Команды организации цикла.
- •6.7. Команды вызова процедур и возврата из них.
- •6.8. Команды прерываний и возврата из них.
- •6.8.1. Функции ввода/выводаDos.
- •6.8.2. ФункцииBios управления экраном.
- •Тема 7. Стек
- •7.1.Стек и сегмент стека
- •7.2.Стековые команды
- •7.3. Доступ к элементам стека
- •Тема 8. Практическая работа на пк.
- •Тема 9. Создание линейных программ
- •9.1 Создание линейной программы.
- •9.1.1. Составление текста программы.
- •9.1.2 Трансляция.
- •9.1.3. Создание исполняемого файла
- •9.1.4.Отладка программы в turbo debugger’е
- •9.2. Контрольные вопросы и задания
- •Тема 10. Организация ветвлений.
- •10.1.Флаги и их назначение.
- •10.2 Команда безусловного перехода jmp
- •10.3 Команды условных переходов
- •10.4. Создание разветвленной программы.
- •10.4.1. Составление текста программы.
- •10.4.2.Трансляция.
- •10.4.3. Создание исполняемого файла.
- •10.5. Контрольные вопросы и задания
- •Тема 11. Организация циклов
- •11.1. Команды управления циклом
- •11.2.Создание циклической программы.
- •11.2.1.Составление текста программы.
- •11.2.2.Трансляция.
- •11.2.3.Создание исполняемого файла
- •11.2.4.Отладка программы в turbo debugger’е
- •11.3. Контрольные вопросы и задания
- •Тема 12. Циклическая разветвленная программа
- •12.1.Создание программы.
- •12.1.1.Составление программы
- •12.1.2.Трансляция.
- •12.1.3.Создание исполняемого файла.
- •12.1.4. Отладка программы в turbo debugger’е
- •12.2.Контрольные вопросы
- •12.3. Контрольные задания
- •Тема 13. Связь ассемблера с языкомPascal.
- •13.1 Общие положения
- •13.2 Организация связи
- •13.3 Передача аргументов (и возврат результата в случае функции)
- •13.4 ДирективаArg
- •13.5 Использование операндов директивыmodel
- •13.6 Передача данных остальных типовPascal
- •13.7 Возврат значения в программу наPascal
- •13.8 КомандыEnter иLeave
- •13.9 Итоги
- •Листинг 1.2. Ассемблерное представление.
- •Тема 16. Рекомдации начинающему программисту
- •Тема 17. Контрольная работа
- •Список литературы
- •Приложение 1 Инструкция по работе с программой Turbo Debugger.
- •Приложение 2 Практическая работа на пк
- •Приложение 3 ключи командной строкиtasmиtlink
6.5. Команды передачи управления.
Позволяют изменять естественный порядок выполнения программы. С точки зрения работы процессора CS, IP регистры, хранящие адрес текущей программы передачи управления изменения содержимого IP и CS.
1) Команда безусловного перехода. Формат команды: JMP <метка>. Для перехода в другие сегменты нужно указать атрибут far. Формат команды: JMP far <метка>.
Пример:
MOV…
M1: ADD…
JMP M1
2) Команда условного перехода. Формат команды: JXX <метка> Если некоторое условие (зависящее от команды) выполняется, то происходит передача управления по метке.
Возможны командыс(см.табл.6.1):
Таблица 6.1.
Мнемоника |
Формат |
Комментарий |
JA/JNBE |
JA близ_метка |
Перейти, если выше |
JAE/JNB |
JAE близ_метка |
Перейти, если выше или равно |
JB/JBAE/JC |
JB близ_метка |
Перейти, если ниже |
JBE/JNA |
JBE близ_метка |
Перейти, если ниже или равно |
JCXZ |
JCXZ близ_метка |
Перейти, если CX=0 |
JE/JZ |
JE близ_метка |
Перейти, если равно |
JG/JNLE |
JG близ_метка |
Перейти, если больше |
JGE/JNL |
JGE близ_метка |
Перейти, если больше или равно |
JL/JNGE |
JL близ_метка |
Перейти, если меньше |
JLE/JNG |
JLE близ_метка |
Перейти, если меньше или равно |
JNC |
JNC близ_метка |
Перейти, если нет переноса |
JNE/JNZ |
JNE близ_метка |
Перейти, если не равно |
JNO |
JNO близ_метка |
Перейти, если нет переполнения |
JNP/JPO |
JNP близ_метка |
Перейти, если нечетный |
JO |
JO близ_метка |
Перейти, если перенос |
JP/JPE |
JP близ_метка |
Перейти, если четный |
JS |
JS близ_метка |
Перейти, если отрицательный |
Здесь выше или ниже(A-above, B-below) относятся к беззнаковым операндам; больше или меньше (G-greater, L-lower) относятся к знаковым операндам.
Пример:
JE <метка>
СMP [BX], AL
JNE M1
MOV [SI], AL
M1: INC [SI]
INC [BX]
6.6. Команды организации цикла.
В качестве счётчика циклов используется регистр СХ. Исполнение: из содержимого СХ вычитается единица, после чего УУ процессора проверяет СХ на равенство нулю. Если СХ=0, то выполняется следующая (за LOOP) команда; возврат на метку.
Команда LOOP имеет следующие варианты:
Таблица 6.2.
Мнемоника |
Формат |
Комментарий |
LOOP |
LOOP близ_метка |
Повторять цикл |
LOOPE/LOOPZ |
LOOPE близ_метка |
Повторять, пока равны |
LOOPNE/LOOPNZ |
LOOPNE близ_метка |
Повторять, пока не равны |
Пример:
MOV CX, 40 ;дополним в массиве 40 байт.
……….
M1: ……….
CMP [BX], AL
LOOPNE M1
MOV [SI], AL
6.7. Команды вызова процедур и возврата из них.
Процедура –любой фрагмент программы, который имеет своё имя и завершается определённой командой.
RET –команда возврата из процедуры.
CALL –команда вызова процедуры
Формат команды: CALL <имя процедуры>
Определение процедуры выполняется с помощью двух псевдооператоров
<имя процедуры> Proc
<имя процедуры> Endp
Процедуры бывают far-далёкие и near- близкие (near по умолчанию). Proc far – исполняется для придания ей возможности вызова из др. сегмента программы (др. программы) поэтому удобно содержимое сегмента любой программы оформлять как proc far. В пределах любой программы можно оформлять любое количество proc near.
CALL исполняется следующим образом: содержимое двух регистров CS, IP загружается в стек, а на их место в МП загружается адрес процедуры, указанный в команде CALL.
Командой RET из стека возвращаются CS и IP.
Pr1 segment
Assume CS: pr1
Mypr proc far proc ; –псевдооператор (для транслятора)
… ;команды (для МП)
Ret
Mypr endp
Pr1 ends
End mypr ; конец трансляции