Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторные работы / 9091_Боброва_лаб_1

.docx
Скачиваний:
9
Добавлен:
07.08.2024
Размер:
1.22 Mб
Скачать

МИНОБРНАУКИ РОССИИ

САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)

ОТЧЕТ

по лабораторной работе №1 по дисциплине «Системное программирование»

Тема: «Архитектура и система команд процессора 8086 в реальном режиме»

Студентка гр. 9091 Боброва Н.Ю.

Преподаватель Кораблев Ю.А.

Санкт-Петербург

2024

“Архитектура и система команд процессора 8086 в реальном режиме”

Цель работы:

Изучение архитектуры и системы команд процессора 8086 с использованием отладчика программ AFDRUS.

    1. Команды пересылки данных, методы адресации

Перевести курсор в поле 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.

Соседние файлы в папке Лабораторные работы