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

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

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра АПУ

отчет

по лабораторной работе №1

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

Тема: Архитектура и система команд

процессора 8086 в реальном режиме

Студент гр.8391

Гоглев А.А.

Студент гр.8391

Шушков Д.А.

Студент гр.8391

Маликов А.А.

Преподаватель

Кораблев Ю.А.

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

2021

Цель работы:

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

Выполнение работы:

1. Изучение функциональных возможностей AFDRUS

1.1 Исследовать перемещение курсора по полям отладчика, поочередно нажимая функциональные клавиши F7, F8, F9, F10.

F7 – перемещение курсора вверх;

F8 – перемещение курсора вниз;

F9 – перемещение курсора вправо;

F10 – перемещение курсора влево;

1.2 В нижнем правом угловом поле (текстовом поле) набрать текст “ABCD 1234”

Рисунок 1. Состояние ячеек памяти текста ABCD 1234

контролировать изменение состояния ячеек памяти в поле 2.

Рисунок 2. Изменение состояния ячеек памяти в поле 2

Определить код символа “пробел”.

Рисунок 3. Определение кода символа «пробел»

Символ «пробел» имеет код 0х20

В поле 2 в ячейках 00, 01, 02, 03 набрать коды 35, 36, 37, 38.

Контролировать изменение содержания текстового поля.

Рисунок 4. Содержимое текстового поля

При вводе данных кодов в ячейки памяти появляются символы 5 6 7 8 соответственно в текстовом поле

1.3. Изменить области отображения данных в окнах

- в окне 2 установить DS:200;

- в окне 1 установить ES: 200;

Рисунок 5. Изменение области отображения

1.4. Перевести курсор в левое верхнее угловое поле (поле регистров)

- записать в регистр BX число 2F4A

- записать в регистр ES число 2000 - контролировать изменение отображения в окне 1.

Рисунок 6. Изменение регистров

1.5. Установить слово флагов FLAGS равным 3453, контролировать изменения состояния флагов. Контролировать изменение отдельных флагов.

На рисунке 7 приведен скрин контроля изменения состояний флагов после установки флагов FLAGS равным 3453.

Рисунок 7. Изменение состояния флагов

1.6. Нажать клавишу F4, изучить описание команд ‘M’ ‘A’ ‘R’ ‘QUIT’ ( выход из ‘HELP’ по F4 )

Команда «М» - установка адреса окна памяти;

Команда «А» - команда вызова встроенного ассемблера;

Команда «R» - команда установки значения регистра;

Команда «QUIT» - команда выхода из отладчика в DOC.

Рисунок 8. Описание команд

1.7. Выполнить команды М 1 300 и М 2 200 контролировать изменения содержания окон 1 и 2. Выполнить команду BX=0423, контролировать значение регистра BХ.

Команда М 1 300 отображает в окне памяти 1 сегмент памяти 300.

Рисунок 9. Выполнение команды М 1 300

Команда М 2 200 отображает в окне памяти 2 сегмент памяти 200.

Рисунок 10. Выполнение команды М 2 200

Команды BX=0423 записывает в регистр BX значение 0423.

Рисунок 11. Выполнение команды BX=0423

2. Изучение команд процессора.

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

Перевести курсор в поле CMD>, выполнить команду А100, набрать в поле команд ТЕСТ1. Объяснить диагностику AFDRUS.

MOV AX, 02 // копирование в регистр АХ значение 0002

MOV CX, AX // копирование в регистр СХ значение из регистра АХ

MOV BX, 200 // копирование в регистр ВХ значение 0200

MOV [BX], 03 // копирование в область памяти DS:0200 значение 03

MOV [204], 02 // копирование в область памяти DS:0204 значение 02

MOV [BX+6], 04 // копирование в область памяти DS:0206 значение 04

MOV AX, BX // копирование в регистр АХ значение из регистра ВХ

JMP 100 // переход без условия на команду с адресом 100

В окне 1 установить область DS:0200 в ячейки <0200>, <0202>, <0204>, <0206> записать значение адреса ячейки. Помнить о порядке адресации байт в памяти.

Выполнить в пошаговом режиме тест 1, начиная с адреса CS:0100 (пошаговый режим - клавиша F1).

Контролировать значения регистров AX, BX, CX и ячеек в окне 1.

Рисунок 12. Выполнение ТЕСТА 1

2.2. Начиная с адреса CS:0100 набрать текст ТЕСТ 2.

LES BX, [202] // загрузка из DS:0202 первой половины слова в регистр ВХ и второй половины слова в регистр ES

LEA DX, [200] // размещение адреса ячейки DS:0202 в регистре DX

LDS BX, [200] // загрузка из DS:0202 первой половины слова в регистр ВХ и второй половины слова в регистр DS

JMP 100

В ячейках окна 1 записать коды

<DS:0200> = 01

<DS:0202> = DS

<DS:0204> = 03

ТЕСТ2 начиная с адреса CS: 100, контролировать содержимое регистров ВX, DX, DS, ES.

Рисунок 13. Выполнение ТЕСТА 2

2.3. Загрузка стека

Начиная с адреса 100 набрать текст

PUSH BX // перемещение данных из регистра ВХ в стек. Данные - 0002

PUSH CX // перемещение данных из регистра ВХ в стек. Данные - 0003

POP DX // извлечение из стека значения регистра DX.

POP AX // извлечение из стека значения регистра АX.

JMP 100

Установить AX=1, BX=2, CX=3, DX=4, SP=10, SS=DS. Установите окно 2 памяти так, чтобы можно было наблюдать работу со стеком.

Выполнить тест в пошаговом режиме, контролировать содержимое регистров BX, DX, SP и содержимое ячеек в окне 1.

Рисунок 14. Выполнение ТЕСТА 3

2.4. Логические операции.

Набрать ТЕСТ 4 с адреса CS:0100

ТЕСТ 4

AND BX, AX //логическое умножение

OR DX, AX //логическое сложение

NOT CX // логическое отрицание

TEST AX, 01 // проверка битов. Выполняет логическое И между операндами, но результат никуда не записывает, а изменяет только флаги.

JMP 100

Установить

CX=0F0F

BX=FFFF

AX=0002

DX=0004

Выполнить ТЕСТ 4 в пошаговом режиме, контролировать регистры BX, DX, CX, состояния флагов операции.

Выполнение программы:

  1. Команда AND BX, AX. Результат записывается в ВХ. FFFF*0002 = 0002

  2. Команда OR DX, AX. Результат записывается в DХ. 0004+0002 = 0006

  3. Команда NOT CX инвертирует каждый бит СХ

  4. Команда TEST AX, 01 флаги изменились.

Рисунок 15. Выполнение ТЕСТА 4

2.5. Арифметические операции.

Начиная с адреса CS:0100 набрать тест 5

ТЕСТ 5

ADD AX, 3 // Арифметическое сложение

SUB AX, 2 // Арифметическая разность

INC DX // Увеличение значения на 1

DEC CX // Уменьшение значения на 1

CMP CX, 3 // Сравнение двух чисел. Если результат равен 0, то меняет флаг ZF на 1

JMP 100

Установить AX=0; DX=5; CX=4.

Выполнить в пошаговом режиме, контролировать регистры AX, DX, CX и состояния флагов.

Выполнение программы:

  1. Команда ADD AX, 3. Результат записывается в АХ: 0+3 = 3

  2. Команда SUB AX, 2. Результат записывается в АХ: 3-2 = 1.

  3. Команда INC DX. Результат записывается в DX: 5+1=6.

  4. Команда DEC CX. Результат записывается в СX: те 4-1=3.

  5. Команда CMP CX, 3. Сравнение двух чисел. Если результат равен 0, то меняет флаг ZF на 1.

Рисунок 16. Выполнение ТЕСТА 5

2.6. Команды передачи управления.

Набрать ТЕСТ 6 начиная с адреса CS:0100

ТЕСТ 6 :

CALL 120

ADD AX, 2

JMP 100

С адреса CS:120 набрать

ADD AX, 1

RET

Установить AX=0, выполнить тест в пошаговом режиме.

Выполнение программы:

  1. Команда CALL 120. Вызов процедуры с адресом CS:0120.

  2. Команда ADD AX, 2. Увеличение АХ на 2 после выхода из программы

  3. Команда ADD AX, 1. Увеличение АХ на 1 после команды CALL 120.

  4. Команда RET. Выход из процедуры.

Рисунок 17. Выполнение ТЕСТА 6

2.7. Операторы цикла.

Набрать ТЕСТ 7 начиная с адреса CS:0100

ТЕСТ 7 :

ADD AX, 1

LOOP 100

MOV CX, 10

JMP 100

Установить CX=5, AX=0, выполнить в пошаговом режиме.

Выполнение программы:

  1. Команда ADD AX, 1. Увеличение АХ на 1.

  2. Команда LOOP 100. Цикл с переходом на CS:0100. С каждым новым витком уменьшает СХ на 1 пока не будет равно 0.

  3. Команда MOV CX, 10. Загрузка в СХ число 0010.

При повторном воспроизведении программы команда в цикле выполняется в 2 раза больше.

Рисунок 18. Выполнение ТЕСТА 7

2.8. Операторы передачи управления по условию.

Набрать ТЕСТ 8 начиная с адреса CS:0100

ТЕСТ 8 :

CMP AX , BX

JE 120

Набрать начиная с адреса CS:120

INC AX

INC BX

JMP 100

Установить BX=5, AX=5, выполнить в пошаговом режиме.

Выполнение программы:

  1. Команда CMP AX, BX. Выполняется сравнение чисел АХ и ВХ, если они равны, то флаг ZF=1

  2. Команда JE 120. Выполняет переход на CS:120, если операнды в команде CMP равны.

  3. Команда INC AX. Увеличение АХ на 1

  4. Команда INC BX. Увеличение ВХ на 1

  5. Команда JMP 100. Безусловный переход на команду с адресом 0100

Рисунок 19. Выполнение ТЕСТА 8

2.9. Команды управления процессором.

Набрать ТЕСТ 9 начиная с адреса CS:0100

ТЕСТ 9 :

CLC

CMC

NOP

CLC

STC

CLI

STI

JMP 100

Выполнить в пошаговом режиме.

Закончить работу с отладчиком командой QUIT.

Выполнение программы:

  1. Команда CLC. Сбрасывание флага переноса. Флаг CF становится равным 0.

  2. Команда CMC. Инвертирует флаг CF. Значение стало 1

  3. Команда NOP ничего не делает, поэтому значение флагов не меняется.

  4. Команда CLC. Сбрасывание флага переноса. Флаг CF становится равным 0.

  5. Команда STC. Установка флага переноса CF равного 1.

  6. Команда CLI. Установка флага прерывания IF равного 0.

  7. Команда STI. Установка флага прерывания IF равного 1.

  8. Команда JMP 100. Безусловный переход на команду с адресом 0100

Рисунок 20. Выполнение ТЕСТА 9

Вывод: в ходе выполнения лабораторной работы была изучена архитектура и системы команд процессора 8086 с использованием отладчика программ AFDRUS. Так же мы ознакомились с командами пересылки данных, методами адресации, логическими и арифметическими операциями, командами передачи управления, операторами цикла, операторами передачи управления по условию и командами управления процессором

Соседние файлы в папке УТС 7 семестр