
Лабораторные работы / 9091_Боброва_лаб_1
.docxМИНОБРНАУКИ РОССИИ
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)
ОТЧЕТ
по лабораторной работе №1 по дисциплине «Системное программирование»
Тема: «Архитектура и система команд процессора 8086 в реальном режиме»
Студентка гр. 9091 Боброва Н.Ю.
Преподаватель Кораблев Ю.А.
Санкт-Петербург
2024
“Архитектура и система команд процессора 8086 в реальном режиме”
Цель работы:
Изучение архитектуры и системы команд процессора 8086 с использованием отладчика программ AFDRUS.
Команды пересылки данных, методы адресации
Перевести курсор в поле CMD>, выполнить команду А100, набрать в поле команд ТЕСТ 1
ТЕСТ 1
MOV AX, 02 |
; Помещает в регистр AX значение 0002.
|
MOV CX, AX |
; Копирует значение регистра AX в регистр CX.
|
MOV BX, 200 |
; Помещает в регистр BX значение 0200
|
MOV [BX], 03 |
; Помещает в память по адресу, хранящемуся в BX значение 03
|
MOV [204], 02 |
; Помещает в память по адресу 204 значение 02
|
MOV [BX+6], 04 |
; Помещает в память по адресу, хранящемуся в BX со смещением +6 значение 04
|
MOV AX, BX |
; Копирует значение регистра BX в регистр AX.
|
JMP 100 |
; Перемещение к команде по адресу 100
|
Объяснить диагностику AFDRUS.
В окне 1 установить область DS:0200 в ячейки <0200>, <0202>, <0204>, <0206> записать значение адреса ячейки. Помнить о порядке адресации байт в памяти.
Выполнить в пошаговом режиме тест 1, начиная с адреса CS:0100 ( пошаговый режим - клавиша F1).
Контролировать значения регистров AX, BX, CX и ячеек в окне 1
1.2. Начиная с адреса CS:0100 набрать текст ТЕСТ 2.
ТЕСТ 2
LES BX, [202] |
; Загрузка регистра BX из адреса 202 (из младшего адреса) и ES из адреса 204(старший адрес)
|
LEA DX, [200] |
; загрузка в DX адреса 0200
|
LDS BX, [200] |
; Загрузка регистра BX из адреса 200 (из младшего адреса) и DS из адреса 202(старший адрес)
|
JMP 100 |
Перемещение к команде по адресу 100 |
В ячейках окна 1 записать коды
<DS:0200> = 01
<DS:0202> = DS
<DS:0204> = 03
ТЕСТ2 начиная с адреса CS: 100, контролировать содержимое регистров DX, DX, DS, ES.
1.3. Загрузка стека
Начиная с адреса 100 набрать текст
ТЕСТ 3
PUSH BX |
; Операция помещения в стек. Значение SP уменьшается на 2 (становится равным E). В память по адресу из сегмента SS со смещением 0E помещается значение регистра BX.
|
PUSH CX |
; Операция помещения в стек. Значение SP уменьшается на 2 (становится равным 0С). В память по адресу сегмента SS со смещением 0С помещается значение регистра СX.
|
POP DX |
; Операция извлечения из стека.В регистр DX помещается значение, хранящееся по адресу из сегмента SS со смещением SP (SP = 0C).. Значение SP увеличивается на 2 (становится равным 0E).
|
POP AX |
; Операция извлечения из стека.В регистр AX помещается значение, хранящееся по адресу из сегмента SS со смещением SP (SP = 0E). Значение SP увеличивается на 2 (становится равным 10).
|
JMP 100 |
; Перемещение к команде по адресу 100 |
1.4. Логические операции.
Набрать ТЕСТ 4 с адреса CS:0100
ТЕСТ 4
AND BX, AX |
; логическое умножение ВХ и АХ Помещает в регистр BX результат логического побитового умножения значения регистров BX и AX (0002). Флаги операции ZF,PF обнуляются.
|
OR DX, AX |
; логическое сложение DХ и АХ Помещает в регистр DX результат логического побитового умножения значения регистров DX и AX (0006). Флаги операции ZF, обнуляются. Флаг PF становится равным 1, так как результат содержит четное число единиц в двоичной записи.
|
NOT CX |
; логическое отрицание СX Помещает в регистр СX результат логического побитового отрицания значения регистра СX (F0F0). Флаги операции ZF, обнуляются. Флаг PF становится равным 1, так как результат содержит четное число единиц в двоичной записи.
|
TEST AX, 01 |
; проверка битов TEST: действует как AND-устанавливает флаги, но не изменяет биты. В данном случае проверка, содержит ли регистр АХ нечетный бит, если да то флаг ZF установится в 1, иначе - нет.
|
JMP 100 |
; Перемещение к команде по адресу 100 |
Установить
CX=0F0F
BX=FFFF
AX=0002
DX=0004
Выполнить ТЕСТ 4 в пошаговом режиме, контролировать регистры BX, DX, CX, состояния флагов операции.
1.5. Арифметические операции.
Начиная с адреса CS:0100 набрать тест 5
ТЕСТ 5
ADD AX, 3 |
; Увеличивает значение регистра AX на 3
|
SUB AX, 2 |
; Уменьшает значение регистра AX на 2.
|
INC DX |
; Увеличивает значение регистра DX на 1.
|
DEC CX |
; Уменьшает значение регистра CX на 1.
|
CMP CX, 3 |
; Сравнение значения регистра CX с 3. При равенстве, в регистр ZF помещается 1, в противном случае 0
|
JMP 100 |
; Перемещение к команде по адресу 100 |
Установить AX=0; DX=5; CX=4.
Выполнить в пошаговом режиме, контролировать регистры AX, DX, CX и состояния флагов
1.6. Команды передачи управления.
Набрать ТЕСТ 6 начиная с адреса CS:0100
ТЕСТ 6
CALL 120 |
; Вызывает команду по адресу 120, далее происходит выполнение команды ADD AX, 1 по этому адресу.
|
ADD AX, 2 |
; Увеличивает значение регистра AX на 2.
|
JMP 100 |
; Перемещение к команде по адресу 100 |
CS:0120 |
|
ADD AX, 1 |
; Увеличивает значение регистра AX на 1. AX=0001
|
RET |
; Возврат к точке вызова CAL 120 (адрес CS:100). |
С адреса CS:120 набрать
Установить AX=0, выполнить тест в пошаговом режиме.
1.7. Операторы цикла.
Набрать ТЕСТ 7 начиная с адреса CS:0100
ТЕСТ 7
ADD AX, 1 |
; К значению регистра АХ добавится 1. АХ = 0001 Команда ADD AX, 1 будет выполняться 5 раз, так как в начале СХ равно 5, и кажый раз оно уменьшается на 1, т.е АХ будет в итоге равно 5, затем в регистр СХ переместится значений 10 командой MOV CX, 10 |
LOOP 0100 |
; Если программа должна выполнять определенное число циклов, команда LOOP, которая служит для этой цели, использует начальное значение в регистре CX. В каждом цикле команда LOOP автоматически уменьшает содержимое регистра CX на 1. Пока значение в CX не равно нулю, управление передается по адресу, указанному в операнде, и если в CX будет 0, управление переходит на следующую после LOOP команду |
MOV CX, 10 |
; Помещает в регистр СX значение 0010 |
JMP 100 |
; Перемещение к команде по адресу 100 |
Установить CX=5, AX=0, выполнить в пошаговом режиме.
1.8. Операторы передачи управления по условию.
Набрать ТЕСТ 8 начиная с адреса CS:0100
ТЕСТ 8
СS:0100
|
|
CMP AX , BX |
; Сравнение значений регистров AX, BX. При равенстве, в регистр ZF помещается 1, в противном случае 0
|
JE 120 |
; Команда условного перехода. Переход к команде по адресу 120, если флаг ZF = 1.
|
CS:0120 |
|
INC AX |
; Инкрементирование значения регистра AX (увеличение на 1).
|
INC BX |
; увеличить BX Инкрементирование значения регистра BX (увеличение на 1).
|
JMP 100 |
; Перемещение к команде по адресу 100 |
Установить BX=5, AX=5, выполнить в пошаговом режиме
1.9. Команды управления процессором.
Набрать ТЕСТ 9 начиная с адреса CS:0100
ТЕСТ 9
CLC |
; Обнуление флага CF. CF = 0.
|
CMC |
; Инвертирование флага CF. CF = 1.
|
NOP |
; Команда ничего не делать
|
CLC |
; Обнуление флага CF. CF = 0.
|
STC |
; Присвоить флагу СF значение 1.
|
CLI |
; Обнуление флага IF. IF = 0.
|
STI |
; Присвоить флагу IF значение 1.
|
JMP 100 |
Перемещение к команде по адресу 100 |
Выполнить в пошаговом режиме.
Закончить работу с отладчиком командой QUIT.