1. Показать расположение команды COM в памяти микро-ЭВМ, указать способы адресации обьектов, в чем состоит исполнение команды, число процессорных циклов и их тип. действия процессора в этих циклах;
COM:
1) mov m, r;
Прямая регистровая адресация.
Содержимое регистра r передать в регистр m. Число машинных циклов и тактов зависит от того, выполняется ли обращение к ячейке памяти M(<HL>). Циклов: 1 / 2. Тактов: 5 / 7
Программа:
:m1 |
lxi hl,0028h |
mvi B, 15h |
mov M, B |
jmp m1 |
Циклы:
1) Чтение кода операции из ячейки памяти с адресом 0002h (PC=PC+1).
2) Запись байта данных в регистр М.
2) push zz;
Прямая адресация.
Запись в стек. Содержимое старшего регистра регистровой пары zz перемещается в ячейку памяти, адрес которой на единицу меньше исходного содержимого регистра SP. Содержимое младшего регистра регистровой пары zz помещается в ячейку памяти, адрес которой меньше исходного содержимого регистра SP на 2. Содержимое самого регистра SP уменьшается на 2. Циклов: 3. Тактов: 11
Программа:
mvi H, 88h
mvi L, 88h
sphl ;записать в sp значение из hl
mvi D, 0Fh
mvi E, 7h
:m1
push D ;занести в стек регистровую пару DE
jmp m1
Циклы:
1) Чтение КОП
2) Запись в стек старшего байта регистровой пары DE
3) Запись в стек младшего байта регистровой пары DE
Исходное состояние стека:

Состояние стека после записи числа А3:

3) pop zz;
Прямая адресация.
Чтение из стека. Содержимое ячейки памяти, адрес которой определяется содержимым регистра SP, засылается в младший регистр регистровой пары zz. Содержимое ячейки памяти, адрес которой на единицу больше исходного содержимого регистра SP, засылается в старший регистр регистровой пары zz. Содержимое самого регистра SP увеличивается на 2. Циклов: 3. Тактов: 10
Программа:
lxi sp,1000h
:m1
mvi B,23h
push b
pop b
jmp m1
Циклы:
1) Чтение кода операции из ячейки памяти с адресом 0003h (PC=PC+1).
2) Чтение младшего байта данных из ячейки памяти с адресом FDh.
3) Чтение старшего байта данных из ячейки памяти с адресом FEh.
Исходное состояние стека (с занесенным числом А3):

Состояние стека после чтения числа А3:

4) rst. v (2);
Непосредственная адресация. По этой команде в стек записывается адрес возврата, а управление передается по фиксированным адресам, кодированным числом v цифровой части мнемоники.
<PC> → M(<SP>-1)M(<SP>-2); <SP>-2 → SP; 8*X → PCПереход к фиксированной подпрограмме. Восемь старших разрядов адреса очередной команды заносятся в ячейку памяти, адрес которой на единицу меньше исходного содержимого регистра SP. Восемь младших разрядов адреса очередной команды заносятся в ячейку памяти, адрес которой меньше исходного содержимого регистра SP на 2. Содержимое регистра SP уменьшается на 2. Управление передается команде, адрес которой определяется как номер фиксированной подпрограммы X, умноженный на 8 (для X=0 адрес – 0000H, для X=1 адрес – 0008H, для X=2 адрес – 0010H, для X=3 адрес – 0018H, …, для X=7 адрес – 0038H). Циклов: 3. Тактов: 11
Программа:
lxi sp, 0200h |
mvi a, 20h |
:met |
ei |
nop |
jmp met |
skip 10h |
out 00h |
ret |
Циклы:
1) Чтение кода операции из ячейки памяти с адресом 7h.
2) Запись в стек старшего байта регистра PC.
3) Запись в стек младшего байта регистра PC.
5) call adr;
Относительная адресация. Безусловная передача управления с возвратом. Вызов подпрограммы.
Микропроцессор, выполняя эту команду, не только передает управление по адресу ADR, указанному в команде. Он запоминает в стеке адрес следующей команды. Это адрес возврата. После выполнения подпрограммы должен быть обеспечен возврат управления на адрес
. Для обеспечения такого возврата каждая подпрограмма заканчивается специальной командой возврата RET. Эта команда извлекает из стека адрес возврата
, записанный туда командой CALL ADR, и загружает его в счетчик команд PC.
Размещение в памяти микро-ЭВМ команды CALL ADR:

Другими словами:
<PC> → M(<SP>-1)M(<SP>-2); <SP>-2 → SP; ADR → PCПереход к подпрограмме. Старшие восемь разрядов адреса очередной команды загружаются в ячейку памяти, адрес которой на единицу меньше исходного содержимого регистра SP. Младшие восемь разрядов адреса очередной команды засылаются в ячейку памяти, адрес которой на две единицы меньше исходного содержимого регистра SP. Содержимое регистра SP уменьшается на 2. Управление передается команде, адрес которой определяется вторым и третьим байтами текущей команды. Циклов: 5. Тактов: 17
Программа:
lxi sp, 0400h |
:m1 |
out 00h |
call 0100h |
jmp m1 |
skip 0100h |
ret |
Циклы:
1) Чтение КОП
2) Чтение памяти (чтение старшего байта)
3) Чтение памяти (чтение младшего байта)
4) Запись в стек (занесение в стек старшего разряда РС)
5) Запись в стек (занесение в стек младшего разряда РС)
6) in n;
Прямая адресация.
Данные, выданные адресуемым портом, передаются в аккумулятор. Циклов: 3. Тактов: 10
Программа:
:m1
in 02h
mov b, a
jmp m1
Циклы:
1) Чтение кода операции из ячейки памяти с адресом 0000h (PC=PC+1).
2) Чтение байта данных из ячейки памяти с адресом 0001h.
3) Запись байта данных в ячейку памяти с адресом 0002h (PC=PC+1).
7) out n;
Прямая адресация.
Содержимое аккумулятора выдается в адресуемый порт. Циклов: 3. Тактов: 10Программа:
:m1
out 02h
jmp m1
Циклы:
1) Чтение кода операции
2) Чтение байта данных
3) Запись байта данных в устройство ввода-вывода
8) jz m;
Переход, если A = 0.
Программа:
mvi b,15
:m2
cmp b
jz m1
dcr b
jmp m2
:m1
inr b
jmp m2
Циклы:
1) Чтение КОП
2) Чтение памяти (чтение старшего байта)
3) Чтение памяти (чтение младшего байта)
9) jnz m;
Переход, если A не = 0.
Программа:
mvi b,15
:m2
cmp b
jnz m1
inr b
jmp m2
:m1
dcr b
jmp m2
Циклы:
1) Чтение КОП
2) Чтение памяти (чтение старшего байта)
3) Чтение памяти (чтение младшего байта)
10) ei;
Разрешает прерывание, т. е. устанавливает триггер прерывания INTE в 1. Циклов: 1. Тактов: 4
Программа:
:m1
ei
nop
jmp m1
Циклы:
1) Чтение КОП
11) mvi r, data;
Непосредственная адресация.
Содержимое второго байта команды передать в регистр R. Циклов: 2 / 3. Тактов: 7 / 10
Программа:
:m1
mvi b,15h
jmp m1
Циклы:
1) Чтение кода операции
2) Чтение байта данных
12) lxi zz, data;
Прямая адресация. Загрузить регистровую пару zz двухбайтовым числом data.
Байт 2 команды передать в младший регистр регистровой пары zz. Байт З команды передать в старший регистр регистровой пары zz. Циклов: 3. Тактов: 10Программа:
:m1
lxi sp,0100h
lxi d, 3355h
push d
nop
jmp m1
Циклы:
1) Чтение кода операции из ячейки.
2) Чтение младшего разряда числа.
3) Чтение старшего разряда числа.
13) add m.
Неявная адресация.
<A> + <m> -> AСодержимое регистра m сложить с содержимым аккумулятора, результат операции разместить в аккумуляторе. Циклов: 1 / 2. Тактов: 4 / 7
Программа:
lxi hl,0100h
mvi m,3ch ;подготовка данных
mvi a,05h
:loop_add
add m ;исследуемая команда
jmp loop_add
Циклы:
1) чтение кода операции из ячейки памяти с адресом 0007h.
2) чтение адреса операнда
3. Получить временные диаграммы сигналов на шинах микро-ЭВМ, отражающие действия процессора при работе с конкретной командой COM в симуляторе. Использовать схему микро-ЭВМ для лаб. раб. 2.
1) mov m, r;

Вместо цикла чтения - запись
2) push zz;

3) pop zz;

4) rst. v (2);

5) call adr;

6) in n;

7) out n;

8) jz m;

9) jnz m;

10) ei;

11) mvi r, data;

12) lxi zz, data;

13) add m.



