0_МПиИСТС_Все главы. Микропроцессоры и интерфейсные средства транспортных средств
Скачать 10.01 Mb.
|
4.4 Классификация команд МП КР580ВМ80ААссемблер команд МП КР580ВМ80А содержит 244 команды, которые классифицируются по трем основным признакам:
По длине команды делятся на однобайтовые, двухбайтовые, трехбайтовые (рис. 4.2). При этом первый байт команды всегда содержит код операции (операционный код), а второй и третий байты отводятся под данные или адрес.
Метод адресации – это метод определения данных, участвующих в операциях, или иначе говоря, способ определения операндов. Для составления команды важно знать особенности процедур, позволяющих преобразовать информацию об адресах команд и данных в физические адреса участков памяти машины. Для КР580ВМ80А существуют следующие методы адресации:
Непосредственная адресация является наиболее экономичным методом хранения и поиска информации, поскольку необходимые данные содержит сама команда. Эти данные содержатся во втором и третьем байтах трехбайтовой команды или во втором байте двухбайтовой команды. В случае трехбайтовой команды младшие разряды 16-битового числа содержатся во втором байте команды, а старшие – в третьем (рис. 4.3)
Прямая адресация является менее экономичной. В этом случае во втором и третьем байтах команды содержится полный 16-разрядный адрес памяти. Младшим байтом адреса является <В2>, старшим <В3> (рис. 4.4). Таким образом, можно адресоваться к любой ячейке адресного пространства памяти.
При регистровой адресации код команды содержит указание на регистр или пару регистров, в которых содержатся данные (операнды). Используемые в регистровой адресации команды являются однобайтовыми (рис.4.5). Возможность указания пары регистров в однобайтовой команде реализуется за счет того, что адреса регистров являются трехразрядными двоичными кодами.
Косвенная адресация отличается от регистровой тем, что в регистровой паре, определяемой кодом команды, содержатся не данные, а полный 16-разрядный адрес ячейки памяти, в которой находятся эти данные (рис. 4.7).
Старший байт адреса записывается в первом регистре пары, а младший байт – во втором. Обычно указателем адреса при косвенной адресации являются пара регистров HL, но иногда используются пары BС и DE. По функциональному назначению команды делятся на следующие основные группы:
4.5 Команды пересылки (перемещения) данныхЭто команды передачи данных в МПС из одного места в другое. К числу областей хранения информации относятся как ячейки памяти, так и регистры. В зависимости от того, какие устройства микропроцессора участвуют в пересылке данных, различают команды: загрузка, пересылка и запись в память. Команды пересылки данных могут быть одно-, двух- или трехбайтовыми. Все команды пересылки, за исключением команды POP PSW не изменяют содержимого регистра признаков. Приращение программного счетчика (PC) равно числу байтов в команде. 4.5.1 Пересылка из регистра в регистр
По этой команде в регистр ri загружается копия данных, содержащихся в регистре rj. В качестве регистров могут выступать: аккумулятор (А), РОН B,C,D,E,H,L , имеющие свой трехразрядный двоичный код. Команда выполняется за один цикл, содержащий 5 тактов. В качестве одного из регистров можно выбрать память (M). В этом случае команда выполняется за 2 цикла (7 тактов), при этом данные пересылаются в регистр из ячейки ЗУ с адресом, хранящимся в паре регистров HL , или в обратном направлении. Примеры: 015A) MOV B, A По этой команде данные, находящиеся в аккумуляторе/регистр будут переданы в регистр В. После выполнения команды в аккумуляторе и в регистре В содержатся одни и те же данные
После выполнения команды содержимое регистра признаков останется без изменения. 016A) MOV M, A
4.5.2 Непосредственная пересылка
По этой команде в регистр ri загружаются данные, которые находятся во втором байте команды. Команда двухбайтовая, выполняется за два машинных цикла (7 тактов). Если в качестве регистра используется память (M), т.е. ri =M ,то данные пересылаются в ячейку памяти [(H)(L)].В этом случай команда выполняется за 3 цикла (10 тактов). При выполнении команды содержимое триггеров признаков не меняется. Пример: 0148) MVI B, 25 По этой команде данные, находящиеся во втором байте команды (25 Н) загружаются в регистр В, имеющий двоичный код 000.
4.5.3 Непосредственная загрузка пары регистров
ri – код старшего регистра пары (B, D, H). При ri = 110: SP По этой команде в 16-разрядную пару регистров BC, DE или HL заносятся данные, содержащиеся во втором и третьем байтах команды, причем данные заносятся соответственно в младший и старший регистры пары. Это 3-х байтовая команда, выполняемая за три цикла (10 тактов). При выполнении команды содержимое триггеров признаков не меняется. Пример: 0124) LXI H, 48A7 По этой команде данные, находящиеся во втором байте команды (число А7 Н) будут переданы в регистр L, а число, записанное в третьем байте (48 Н) - в регистр Н. Содержимое ячеек памяти при этом не меняется, как и регистр признаков.
4.5.4 Запоминание/загрузка аккумулятора и пары HLа)
б)
в)
г)
По командам группы а) и б) содержимое аккумулятора запоминается в оперативной памяти по адресу, хранимому в паре регистров ВС (а) или DE (б). По командам группы в) и г) содержимое оперативной памяти из ячейки, адресом которой является содержимое пары регистров ВС (в) или DE (г), загружается в аккумулятор. Команды группы а - г являются однобайтовыми и выполняются за два машинных цикла (7 тактов). Для того, чтобы можно было воспользоваться этими командами, в соответствующую пару регистров необходимо предварительно загрузить нужный адрес. Примеры: 00B1) STAX D
По этой команде содержимое аккумулятора (A)=49H будет скопировано в ячейку памяти с адресом 6699 Н, хранимым в паре регистров DE. 0800) STAX B
0801) LDAX B
0802) LDAX D
д)
е)
По командам д) и е) содержимое аккумулятора запоминается в ячейке памяти, адрес которой приводится во втором и третьем байтах команды (д), или содержимое ячейки памяти, адрес которой приводится во втором и третьем байтах команды, передается в аккумулятор (е). Команды этой группы трехбайтовые, выполняются за 4 цикла (13 тактов). 1F00) STA 0F1C По этой команде содержимое аккумулятора скопируется в ячейке памяти с адресом 0F1C
После выполнения операции и в ячейке 0F1C и в аккумуляторе будет записано одно и то же число. 0803) LDA 0F1C
ж)
з)
По командам этой группы происходит передача данных из пары регистров HL в две соседние ячейки оперативной памяти (ж) или в обратном направлении (з). 16-разрядный адрес первой ячейки приводится во втором и третьем байтах команды; адрес второй ячейки вычисляется в МП с помощью инкремента (увеличения на единицу) содержимого второго и третьего байтов команды. Команды этой группы трехбайтовые, выполняются за 5 циклов(16 тактов). При выполнении этих команд содержимое триггеров признаков не изменяется. 0F41) SHLD 32AF При выполнении этой команды содержимое пары регистров HL будет скопировано в соседних ячейках памяти 32AF и 32B0. При этом содержимое (HL) не изменяется.
0806) LHLD 6AFF
4.5.5 Ввод из пары регистров в стек
ri – код старшего регистра пары (B, D, H). [SP-1] ( ri); [SP-2] (ri+1); SP (SP)-2. По этой команде содержимое указателя стека (SP) автоматически уменьшается на 1 и в ячейку памяти, адрес которой равен [SP-1]запишется содержимое старшего регистра пары РОН. Затем содержимое указателя стека еще раз уменьшится на 1 и в соседнюю ячейку памяти с адресом [SP-2] запишется содержимое младшего регистра выбранной пары РОН. После второго уменьшения содержимое указателя стека останется без изменения до следующего обращения к нему. Для пар регистров ВС, DE, HL старшими являются регистры В, D, H. Содержимое регистра признаков не меняется. Выполняется за 3 цикла (11 тактов). Пример: 01BE) PUSH D
080A) PUSH H
4.5.6 Ввод А и F в стек
[SP-1] (A); [SP-2] (F); SP (SP)-2 По этой команде содержимое указателя стека (SP) автоматически уменьшается на 1 и в ячейку памяти с адресом [SP-1] записывается содержимое аккумулятора (А). Затем содержимое указателя стека вновь уменьшается на 1 и является адресом ячейки памяти [SP-2], куда записывается содержимое регистра признаков (F). После этого содержимое указателя стека не меняется до очередного обращения к нему. Команды 4.5.5 и 4.5.6 используются при входе в подпрограмму, когда необходимо сохранить содержимое некоторых регистров. Команда выполняется за три цикла (11 тактов). При этом содержимое регистра признаков не меняется. Примеры: 02A1) PUSH PSW
080B) PUSH PSW
4.5.7 Выбор из стека пары регистров
ri – код старшего регистра пары (B, D, H) ri+1 [(SP)]; ri [(SP)+1]; SP (SP)+2 Эта команда по действию обратна команде 2.5. При ее выполнении содержимое ячейки памяти, адрес которой записан в указателе стека (SP), перепишется в младший регистр пары РОН (C, E, L). После этого содержимое указателя стека увеличивается на 1 и из ячейки памяти с полученным адресом переписывается содержимое в старший регистр пары РОН (B, D, H). Затем содержимое указателя стека вновь увеличивается на 1 и остается таким до следующего обращения к нему. Данная команда выполняется за 3 цикла (10 тактов). При ее выполнении содержимое регистра признаков не меняется. Примеры: 01C9) POP D
080C) POP B
4.5.8 Выбор (A) и (F) из стека
F [(SP)]; A [(SP)+1]; SP (SP)+2 Действие этой команды противоположно действию команды 4.5.6. Эта команда аналогична команде 4.5.7 и отличается лишь регистрами. Команда выполняется за три цикла (10 тактов). Содержимое регистра признаков изменяется в соответствии с кодом записанного в стеке слова. Пример: 080D) POP PSW
4.5.9 Обмен даннымиа) Обмен между DE и HL .
б)Обмен вершины стека с HL
По этим командам происходит обмен данными между регистрами D и H, E и L (а) или между регистрами и ячейками памяти (б), адреса которых выбираются из регистра SP (указателя стека). Команды однобайтовые и выполняются за 1 или 5 циклов (4 или 13 тактов) соответственно для команд a) и б). После выполнения команды содержимое регистра признаков не изменяется. Примеры: 00D1) XTHL
После выполнения операции содержимое указателя стека остается таким же, как и до выполнения операции. 080E) XCHG
4.5.10 Пересылка НLа) Пересылка в указатель стека
б) Пересылка в счетчик команд
При выполнении этих команд содержимое регистровой пары HL передается в регистр SP - указатель стека (а) или в регистр PC - счетчик команд (б). При этом старший байт принимается из регистра Н, а младший - из регистра L. Содержимое регистров Н и L при выполнении команды не изменяется. Не изменяется также содержимое регистра признаков F. Команда выполняется за один цикл (5 тактов). Примеры: 080F) SPHL
0810) PCHL
|