Типы (форматы) команд
Всего микроЭВМ выполняют 13 типов команд, формат которых зависит от количества операндов и полноты представления адреса, и которые приведены в табл. 17 [5]. Как следует из нее, первый байт команды всегда содержит код операции (КОП), а второй и третий (если они присутствуют в команде) – адреса операндов или их непосредственные значения. Таблица 17
Тип 1 – сюда относятся однобайтовые команды, имеющие только код операции, например RETY (возврат из подпрограммы обработки прерывания), и команды с неявной и регистровой адресацией, например: ANL A,R1 (логическое умножение содержимого аккумулятора и содержимого регистра R1), CPL A (инверсия содержимого аккумулятора). Тип 2 – сюда относятся двухбайтовые команды с применением неявной, регистровой и непосредственной адресации, например: ADD A,#01H (сложение содержимого аккумулятора с числом 01H), MOV R2,#02H (запись в регистр R2 числа 02Н). Тип 3 – сюда относятся двухбайтовые команды с применением неявной, регистровой и прямой адресацией, например: ORL A,22H (логическое сложение содержимого аккумулятора и содержимого ячейки ОЗУ с адресом 22Н), MOV R2, 20H (перемещение в регистр R2 содержимого ячейки ОЗУ с адресом 20Н). Тип 4 – в группу входит большинство двухбайтовых команд операций с битами с прямой адресацией (bit), например: SETB 01Н (установить бит с прямым адресом 01Н – второй бит ячейки ОЗУ с адресом 20Н), ORL С, 02Н (логическое сложение бита переноса CY и бита с прямым адресом 02Н). Бит переноса CY, выполняющий роль битового аккумулятора, адресуется неявным способом. Тип 5 – в группу входят двухбайтовые команды передачи управления с использованием относительного адреса (rel), например: SJMP 0FH (переход на адрес программы, отстоящий от адреса команды SJMP на значение 0FH). Тип 6 – в группу входят двухбайтовые команды перехода по абсолютному 11-разрядному адресу, в которых младший байт адреса (а7...a0) представлен во втором байте команды, а старшие три бита находятся в первом байте вместе с кодом операции, например: ACALL1 5FH (вызов подпрограммы имеющей адрес, состоящий из 8 разрядов младшей части адреса 5FH, и 3 разрядов старшей части адреса 001B). Тип 7 – в группу входят трехбайтовые команды с прямой и непосредственной адресацией, например: MOV 27Н, #01Н (переместить в ячейку ОЗУ с прямым адресом 27Н число 01Н). Тип 8 – сюда относятся трехбайтовые команды передачи управления с прямым адресом операнда (ad) и относительным адресом перехода (rel), например: DJNZ 24H,1EH (декремент операнда в ячейке ОЗУ с прямым адресом 24Н и переход по относительному адресу 1ЕН, если операнд не равен нулю). Тип 9 – сюда относится трехбайтовая команда перемещения операнда с двумя прямыми адресами операнда источника (ads) и операнда приемника (add), например: MOV 20H, P2 (переместить операнд из порта Р2 в ячейку ОЗУ с прямым адресом 20Н). Тип 10 - сюда относится трехбайтовая команда условного перехода – сравнение содержимого аккумулятора (А) и непосредственного операнда (#d) и переход по относительному адресу (rel), например: CJNE A,#08H,2FH. Тип 11 – сюда входят трехбайтовые команды передачи управления с проверкой состояния бита по прямому адресу (bit), с последующим переходом по относительному адресу (rel), например: JNB Р1.1, 2FH. Тип 12 – сюда относятся трехбайтовые команды передачи управления с прямым 16-разрядным адресом, например: LCALL 17FAH. Тип 13 – сюда относится трехбайтовая команда загрузки непосредственного 16-разрядного операнда в регистр DPTR – MOV DPTR#17FAH.
|