Материал: LabRab_4

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА) Кафедра вычислительной техники

ОТЧЕТ по лабораторной работе №4

по дисциплине «Организация ЭВМ и систем» Тема: «Изучение команд безусловных переходов»

Студентка гр. 6361

Чемякина Д.С.

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

Манирагена В.

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

2017

Цель работы.

Изучить команды безусловных переходов процессоров семейства 80х86. Необходимо реализовать программу использующие операторы типа «if-then-else» и «case», которая в зависимости от содержания регистров, производит вычисления по заданным формулам. Входные данные поступают с клавиатуры.

Экспериментальные результаты.

Адрес

Мнемокод

Двоичный код

Изменения

Комментарий

 

 

1:10100000 (опер.

регистров

Правильное

 

 

 

00E6

MOV AL, [00A5]

присваивания)

AL=1

исполнение

00E9

CMP AL, 02

1:00111100 (опер.

 

Правильное

 

 

сравнения)

 

исполнение

00EB

JE 010F

1:01110100 (опер.

IP = 00ED

Правильное

 

 

условного перехода)

 

исполнение

 

 

2: 00100010(адрес

 

 

 

 

метки)

 

 

00ED

MOV AX,[00A9]

1:10100001 (опер.

AX = 5

Правильное

 

 

присваивания)

 

исполнение

00F0

MOV BX, [00A9]

1:10100001 (опер.

BX = 5

Правильное

 

 

присваивания)

 

исполнение

 

 

2:11101010 (рег. ВХ)

 

 

00F4

MUL BX

1:11100111 (опер.

AX = 25

Правильное

 

 

умножения)

C = 0

исполнение

 

 

2:11100011 (рег. ВX)

 

 

00F6

MOV [00AF], AX

1:10100011 (опер.

 

Правильное

 

 

присваивания)

 

исполнение

00F9

MOV AX, [00A7]

1:10100001 (опер.

AX = 10

Правильное

 

 

присваивания)

 

исполнение

00FC

MOV BX, [00A7]

1:10001011 (опер.

BX = 10

Правильное

 

 

присваивания)

 

исполнение

 

 

2: 00101110(рег. ВХ)

 

 

0100

MUL BX

1:11110111 (опер.

AX = 100

Правильное

 

 

умножения)

 

исполнение

 

 

2: 11100011(рег. ВХ)

 

 

0102

MOV [00AD], AX

1:10100011 (опер.

 

Правильное

 

 

присваивания)

 

исполнение

0105

MOV AX, [00AF]

1:10100001(опер.

AX = 25

Правильное

 

 

присваивания)

 

исполнение

0108

ADD AX, [00AD]

1: 00000011(опер.

AX = 125

Правильное

 

 

сложения)

 

исполнение

 

 

2: 00000110(рег. АХ)

 

 

010C

JMP 0143

1: 11101011(опер.

IP = 0143

Правильное

 

 

безусловного

 

исполнение

 

 

перехода)

 

 

 

 

2: 00110101(адрес

 

 

 

 

метки)

 

 

0143

CALL 005D

1: 11101000(опер.

 

Корректный вызов

 

 

вызова

 

подпрограммы

 

 

подпрограммы)

 

 

 

 

2: 00010111(адрес

 

 

 

 

метки)

 

 

0146

PUSH AX

1: 01010000(опер.

 

Правильное

 

 

помещения в стек)

 

исполнение

0147

PUSH DX

1: 01010010(опер.

 

Правильное

 

 

помещения в стек)

 

исполнение

0148

MOV DX, 003C

1: 10111010(опер.

DX = 3C

Правильное

 

 

присваивания)

 

исполнение

014B

MOV AH, 09

1: 10110100(опер.

AH = 9

Правильное

 

 

присваивания)

 

исполнение

014D

INT 21

1:11001101(опер.

 

Правильное

 

 

прерывания)

 

исполнение

014F

POP DX

1: 01011010(опер.

 

Правильное

 

 

вытаскивания из

 

исполнение

 

 

стека)

 

 

0150

POP AX

1: 01011000(опер.

 

Правильное

 

 

вытаскивания из

 

исполнение

 

 

стека)

 

 

0151

MOV AL, [00A6]

1: 10100000(опер.

AL = 4

Правильное

 

 

присваивания)

 

исполнение

0154

CMP AL, 03

1: 00111100(опер.

 

Правильное

 

 

сравнения)

 

исполнение

0156

JNE 015D

1: 01110101(опер.

IP = 015D

Правильное

 

 

условного перехода)

 

исполнение

 

 

2: 00000101(адрес

 

 

 

 

метки)

 

 

0158

JMP 48B9:0000

 

 

Переход по адресу к

 

 

 

 

метке в другом

 

 

 

 

сегменте

015D

CMP AL, 04

1:00111100 (опер.

 

Правильное

 

 

сравнения)

 

исполнение

015F

JNE 0166

1:01110101(опер.

IP = 0161

Правильное

 

 

условного перехода)

 

исполнение

 

 

2:00000101 (адрес

 

 

0161

JMP 48B9:003C

метки)

IP = 003C

Переход по адресу к

 

 

 

 

 

метке в другом

 

 

 

 

сегменте

003C

MOV AX, [00A9]

1:10100001 (опер.

AX = 5

Правильное

 

 

присваивания)

 

исполнение

003F

MOV BX, [00A7]

1: 10001011(опер.

BX = 10

 

 

 

присваивания)

 

Правильное

 

 

2: 00011110(рег. ВХ)

 

исполнение

0043

ADD BX, 000F

1: 10000011(опер.

BX = 25

Правильное

 

 

сложения)

 

исполнение

 

 

2: 11000011(рег. ВХ)

 

 

0046

MUL BX

1: 11110111(опер.

AX = 125

Правильное

 

 

умножения)

 

исполнение

0048

JMP 48C1:016D

2: 11100011(рег. ВХ)

IP = 016D

Переход по адресу к

 

 

 

 

 

метке в другом

 

 

 

 

сегменте

016D

CALL 005D

1: 11101000(опер.

 

Корректный вызов

 

 

вызова

 

подпрограммы

 

 

подпрограммы)

 

 

 

 

2: 11101101(адрес

 

 

 

 

метки)

 

 

0170

MOV AX, 4C00

1: 10111000(опер.

 

Правильное

 

 

присваивания)

 

исполнение

0173

INT 21

1: 11001101(опер.

 

 

 

 

прерывания)

 

Правильное

 

 

 

 

исполнение

Взаимодействие с пользователем.

После запуска программа просит выбрать две из заданных формул (рис. 1 и рис. 2).

Рис. 1

Рис. 2

Далее программа просит ввести параметры R и S, которые будут использованы при вычислении (рис. 3).

Рис. 3 Затем программы выводит на экран результат вычислений (рис. 4).

Рис. 4

Вывод.

В результате выполнения лабораторной работы была реализована программа, которая использует операторы типа «if-then-else» и «case» и в зависимости от содержания регистров производит вычисления по заданным формулам. Результат вычислений выводится на экран.

Приложение 1. Исходный код.

TITLE LAB4 data segment

message1 db 'Enter number S and R: ','$' message2 db 'Choose 1 or 2: ',10, '$' message3 db 'Choose 3, 4 or 5: ',10, '$' space db ' ','$'

minus db '-','$'

zeroMess db ' Devided by zero!', '$'

ex1 db '1) r^2 + s^2',10,'$'

ex2 db '2) (r + s)/(r - s) ',10,'$'

Источник: https://studfile.net/preview/16375761/