Федеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионального образования
« САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ ТЕХНОЛОГИИ И ДИЗАЙНА »
Кафедра автоматизации производственных процессов
ЗАДАНИЯ ПО КУРСУ "ИНФОРМАТИКА"
Методические указания для студентов
специальности 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.