Цель работы: ознакомление со структурой машинных команд и выполняемыми действиями, режимами адресации, последовательностью выполнения команд.
Для программы в соответствии с вариантом задания выполнить следующие действия:
или напишите нам прямо сейчас:
⚠️ Пожалуйста, пишите в MAX или заполните форму выше.
В России Telegram и WhatsApp блокируют - сообщения могут не дойти.
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
JMP | 75**
EB**
Номер варианта | Вариант
прогр. | 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.
или напишите нам прямо сейчас:
⚠️ Пожалуйста, пишите в MAX или заполните форму выше.
В России Telegram и WhatsApp блокируют - сообщения могут не дойти.
Прикрепленные файлы: |
|
|---|---|
|
Администрация сайта не рекомендует использовать бесплатные работы для сдачи преподавателю. Эти работы могут не пройти проверку на уникальность. Узнайте стоимость уникальной работы, заполните форму ниже: Узнать стоимость |
|
Скачать файлы: |
|
|
|
