Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
mu_info_zad_2008.doc
Скачиваний:
1
Добавлен:
21.04.2023
Размер:
293.89 Кб
Скачать

Федеральное агентство по образованию

Государственное образовательное учреждение

высшего профессионального образования

« САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ

УНИВЕРСИТЕТ ТЕХНОЛОГИИ И ДИЗАЙНА »

Кафедра автоматизации производственных процессов

ЗАДАНИЯ ПО КУРСУ "ИНФОРМАТИКА"

Методические указания для студентов

специальности 220301 факультета

информационных технологий

и машиноведения

Составители

В.Е. Зайцев

А.С. Гренишин

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

2008

Утверждено

на заседании кафедры

04.04.06,

протокол № 103

Рецензент

к. т. н доц. А. В. Марковец

Оригинал подготовлен составителем и издан в авторской редакции

Подписано в печать 20.06.2008 г. Формат 60x84 1/16.

Печать трафаретная. Усл. печ. л. 1,1. Тираж 50 экз. Заказ 142/08.

Электронный адрес: app_sutd@inbox.ru

Отпечатано в типографии СПГУТД

191028, Санкт-Петербург, ул. Моховая, 26

1. Задание по курсу «Архитектура эвм»

Цель работы: ознакомление со структурой машинных команд и выполняемыми действиями, режимами адресации, последовательностью выполнения команд.

Для программы в соответствии с вариантом задания выполнить следующие действия:

1) составить блок схему алгоритма;

2) закодировать программу и разместить ее в оперативной памяти;

3) проделать ручное выполнение программы (прогонку).

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

Варианты заданий приведены в табл. 2. Вариант задания включает один из трех вариантов программы и индивидуальные значения констант, адресов и содержимого ячеек памяти. Варианты программ приведены на рис.1. В программах и табл. 2 обозначено: К1, К2, К3 – однобайтовые константы; ADR1, ADR2 – адреса ячеек памяти. Под записью [ADR] понимается содержимое ячейки памяти с адресом ADR. Начальные значения регистров AL и BX принять равными нулю, регистра IP = 0100, флага ZF = 0. Программу в оперативной памяти размещать, начиная с адреса 0100 (см. табл. 3).

Таблица 1. Коды команд микропрцессора 8088

Команда

Код

MOV BX,CONST

BB****

MOV AL,CONST

B0**

ADD AL,CONST

04**

CMP AL,CONST

3C**

AND AL,CONST

24**

OR AL,CONST

0C**

SUB AL,CONST

2C**

MOV [BX],AL

8807

MOV AL,[BX]

8A07

MOV [ADR],AL

A2****

MOV AL,[ADR]

A0****

XOR AL,AL

30C0

XOR AL,CONST

34**

JZ

74**

JNZ

J MP

75**

EB**


Таблица 2. Варианты задания

Номер варианта

Вариант

прогр.

K1

K2

K3

ADR1

ADR2

[ADR1]

[ADR2]

1

1

1C

4D

15

1536

1101

31

FF

2

12

1B

98

1033

0310

15

FF

3

0B

55

3C

1817

1301

4A

FF

4

1A

2C

C2

30AB

0440

23

FF

5

12

65

5A

0CAA

1816

53

FF

6

3B

12

84

BA01

1340

38

FF

7

A0

BB

18

A100

AB01

1B

FF

8

B1

1F

14

03A1

0842

1A

FF

9

B0

CF

81

A203

01CB

1F

FF

10

C2

2C

22

D101

ACC1

1B

FF

11

14

2A

C1

F301

02CA

16

FF

12

3C

1B

27

AB0C

BC01

1C

FF

13

15

3C

2F

ACC1

F101

3B

FF

14

2

12

90

C1

1BC0

1F3E

A2

FF

15

11

01

F2

1203

1586

F3

FF

16

16

AB

1C

1349

17A2

C1

FF

17

13

33

DE

19FE

1531

F1

FF

18

13

7E

9F

1B10

1F31

91

FF

19

3A

4A

89

15C0

1983

C3

FF

20

1A

96

7F

AC1F

BC3E

B0

FF

21

40

9A

65

CO13

3CFE

A5

FF

22

0B

B8

3C

1321

35A7

C3

FF

23

15

3F

A3

7BA0

8F3E

B8

FF

24

B1

40

9F

1BC1

8F3E

F1

FF

25

10

1B

87

1CB1

2B2C

97

FF

26

3

C1

1B

DC

1B3C

ABC0

FF

FF

27

15

1D

C3

3CB2

1BC5

FF

FF

28

31

A1

D2

1583

1A94

FF

FF

29

18

3D

8E

8163

7154

FF

FF

30

41

12

53

B21F

3CF4

FF

FF

31

2A

A3

93

CB81

9134

FF

FF

32

14

1A

2E

7653

B1CF

FF

FF

33

A0

42

43

3891

CF5E

FF

FF

34

0C

BE

CA

E981

F3C1

FF

FF

35

B3

13

15

1891

1951

FF

FF

36

1C

81

9D

1361

1898

FF

FF

37

C1

15

20

1586

8761

FF

FF

.

Значение мнемоник команд следующее: MOV – пересылка; ADD – сложение; SUB – вычитание, CMP – сравнение; OR – побитовое ИЛИ, AND – побитовое И; XOR – побитовое исключающее ИЛИ (сумма по модулю два); JZ – переход, если ноль; JNZ – переход, если не ноль; JMP – безусловный переход. Команды ADD, SUB, OR, AND, CMP, XOR устанавливают флаги в регистре флагов в соответствии с результатом операции.

Вариант 1 Вариант 2

MOV BX,ADR1 MOV AL,[ADR1]

MOV AL,[BX] SUB AL,K1

ADD AL,K1 CMP AL,K2

CMP AL,K2 JZ M

JZ M XOR AL,K3

AND AL,K3 M: MOV BX,ADR2

M: MOV [ADR2],AL MOV [BX],AL

Вариант 3

MOV AL,K1

ADD AL,K2

CMP AL,K3

JZ M

XOR AL,AL

M: MOV [ADR2],AL

MOV BX,ADR1

MOV [BX],AL

Рис 1. Варианты программ

В табл. 2 обозначено: ** однобайтовый операнд, соответственно **** двухбайтовый операнд. В случае двухбайтового операнда первым записывается младший байт, вторым­ – старший байт. Пример: код команды MOV AL,1С будет B01С; код команды MOV BX,1893 будет BB9318 (Здесь 1С и 1893 соответственно однобайтовая и двухбайтовая константа).

В командах условных и безусловных переходов адрес перехода (адрес команды, помеченной меткой) вычисляется путем сложения текущего содержимого регистра программного счетчика (адреса следующей команды) и второго байта кода команды перехода (смещения). Рассмотрим, например, команду JMP m2, расположенную по адресу 010В (см. табл. 3) (под адресом команды понимается адрес первого байта кода команды). Код этой команды в данном случае ЕВ05. Здесь ЕВ – код операции команды JMP (см. табл. 1),

а 05– смещение. Убеждаемся, что 010D + 05 = 0112. Таким образом, при составлении кодов команд условных и безусловных переходов смещение следует вычислять как разность между адресом, куда должен осуществляться переход, и адресом команды, следующей за командой перехода. Отрицательные смещения представляются в дополнительном коде. Если смещение получилось положительное, то от результата отбрасывается старший байт незначащих нулей, а если отрицательное, то незначащих единиц (в двоичном виде ), так как в этом случае результат записывается в дополнительном коде.

Задание выполняется в два этапа: сначала составляются коды команд программы и размещаются по соответствующим адресам, затем выполняется прогонка. Результаты записываются в таблицу (см. табл. 3 ). Коды простых команд составляются и записываются в таблицу сразу. Для команд переходов вначале записывается только код операции, а байт смещения оставляется незаполненным (но не пропущенным), так как на данном этапе адреса переходов еще не известны. После того, как в таблицу будут записаны коды всех команд, вычисляются и записываются смещения в кодах команд условных переходов. Прогонка заключается в вычислении и записи в таблицу изменений после выполнения каждой машинной команды. Начальные значения записываются в верхнюю строку графы “начальные значения и результаты” табл. 3. У команд, которые не выполнялись при условных или безусловных переходах, в графе «Результаты» ставятся прочерки. У команд переходов в графе IP ставится адрес перехода, если переход осуществляется, или адрес следующей команды, если переход не осуществляется.

Пример выполнения задания:

Программа:

MOV AL,К1

ADD AL,К2

CMP AL,К3

Рис 2. Блок- схема алгоритма

Таблица 3. Пример выполнения задания

 

Начальные значения и результаты

IP

AL

BX

[ADR1]

[ADR2]

ZF

Адрес

Код

Мнемоника

0100

00

0000

00

00

0

0100

0101

B0 3C

MOV AL, 3C

0102

3C

0000

00

00

0

0102

0103

04 1B

ADD AL, 1B

0104

57

0000

00

00

0

0104

0105

3C 57

CMP AL, 57

0106

57

0000

00

00

1

0106 0107

74 05

JZ M1

010D

57

0000

00

00

1

0108

0009 000A

A2 31 18

MOV [1831], AL

-

-

-

-

-

-

010B 010C

EB 05

JMP M2

-

-

-

-

-

-

010D 010E 010F

BB 51 16

M1: MOV BX, 1651

0110

57

1651

00

00

1

0110

0111

88 07

MOV [BX], AL

0112

57

1651

00

57

1

0112

0113

0C 3C

M2: OR AL, 3C

0104

7F

1651

00

57

0

JZ m1

MOV [ADR1],AL

JMP m2

m1: MOV BX,ADR2

MOV [BX],AL

m2: OR AL,К1

Значение констант и адресов: К1=3С, К2=1В, К3=57, ADR1=1831,

ADR2=1651, [ADR1]=00, [ADR2]=00.

Блок схема программы приведена на рис. 2, результаты кодирования и прогонки программы приведены в табл. 3.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]