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.