Справочник от Автор24
Поделись лекцией за скидку на Автор24

Программная модель МП КР580ВМ80А

  • 👀 430 просмотров
  • 📌 386 загрузок
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Программная модель МП КР580ВМ80А» pdf
Программная модель МП КР580ВМ80А Регистровый файл МП КР580ВМ80А A флаги B C D E H L PC (счётчик команд) SP (указатель стека ) Пара регистров A + флаги (первая строка таблицы) образуют 16 разрядный регистр, именуемый PSW, причём A занимает старший байт слова, а флаги – младший. Аналогично регистры B и C образуют 16-разрядный регистр BC, регистры D и E – регистр DE, регистры H и L – регистр HL. Регистр флагов D7 S D6 Z D5 x D4 AC D3 x D2 P D1 x D0 C S – знак числа Z – нулевой результат x – значение не определено AC – вспомогательный перенос P – чётность С – перенос Назначение регистров A Аккумулятор. Все арифметические и логические операции производятся только между A и другими регистрами или между A и байтом непосредственных данных. B, C, 8-разрядные регистры общего назначения D, E, H, L HL Регистровая пара, состоящая из двух 8-разрядных регистров (H – старший регистр, L – младший), используется для косвенно-регистровой адресации 64 Кбайт памяти. DE Часто используемая регистровая пара, содержимым между парами HL и DE . PC Счётчик команд, содержит адрес очередной исполняемой команды. SP Указатель стека автоматически инкрементируется на 2 при записи пары регистров в стек (отдельный 8-разрядный регистр в стек записать нельзя, только парами) и декрементируется при извлечении из регистровой пары из стека. F Регистр флагов. Непосредственно недоступен программе, но его в составе PSW можно сохранить в стеке, а потом извлечь в другую регистровую пару, если нужно специально установить или проверить нужные флаги. поскольку имеется команда обмена Система команд МП КР580ВМ80А Так как адресное пространство всего 64 Кбайт, то полный адрес занимает 2 байта. Команды этого процессора бывают одно-, двух- и трёхбайтными. В первом байте всегда содержится код операции. Обозначения: A, B, ..., L − названия 8-разрядных регистров; BC, DE, HL − названия регистровых пар, образующих 16-разрядные регистры; SP − 16-разрядный указатель стека; PSW − слово состояния программы, содержит регистр флагов; a16 − двухбайтовый адрес; M – содержимое ячейки памяти, адресуемое регистровой парой HL; d8 − байт непосредственных данных; d16 − два байта непосредственных данных; pp − номер порта ввода-вывода. № Команда п/п Код операции (16-ричный) Описание 1 ADD A 87 A←(A) + (A) 2 ADD B 80 A←(B) + (A) 3 ADD C 81 A←(C) + (A) 4 ADD D 82 A←(D) + (A) 5 ADD E 83 A←(E) + (A) 6 ADD H 84 A←(H) + (A) 7 ADD L 85 A←(L) + (A) 8 ADD M 86 A←Loc(HL) + (A) 9 ADI d8 C6 A←d8 + (A) 10 ADC A 8F A←(A) + (A) + CY 11 ADC B 88 A←(B) + (A) + CY 12 ADC C 89 A←(C) + (A) + CY 13 ADC D 8A A←(D) + (A) + CY 14 ADC E 8B A←(E) + (A) + CY 15 ADC H 8C A←(H) + (A) + CY 16 ADC L 8D A←(L) + (A) + CY 17 ADC M 8E A←Loc(HL) + (A) + CY 18 ACI d8 CE A←d8 + (A) + CF 19 ANA A A7 Проверка A 20 ANA B A0 Логическое И B с A 21 ANA C A1 Логическое И C с A 22 ANA D A2 Логическое И D с A 23 ANA E A3 Логическое И E с A 24 ANA H A4 Логическое И H с A 25 ANA L A5 Логическое И L с A 26 ANA M A6 Логическое И Loc(HL) с A 27 ANI d8 E6 Логическое И непосредственные данные с A 28 CALL a16 CD Передать управление подпрограмме по адресу a16 29 CZ a16 CC Вызвать подпрограмму по адресу a16, если нуль 30 СNZ a16 C4 То же, если не нуль 31 СP a16 F4 То же, если плюс 32 СM a16 FC То же, если минус 33 CC a16 DC То же, если перенос 34 CNC a16 D4 То же, если нет переноса 35 CPE a16 EC То же, если чётно 36 CPO a16 E4 То же, если нечётно 37 CMA 2F Инвертировать A 38 CMC 3F Инвертировать перенос 39 CMP A BF Установить флаг FZ 40 CMP B B8 Сравнить A с B 41 CMP C B9 Сравнить A с C 42 CMP D BA Сравнить A с D 43 CMP E BB Сравнить A с E 44 CMP H BC Сравнить A с H 45 CMP L BD Сравнить A с L 46 CMP M BE Сравнить A с Loc(HL) CPI d8 FE Сравнить A с непосредственными данными, заданными в команде 48 DAA 27 Десятичная коррекция аккумулятора 49 DAD B 09 Сложить BC с HL 50 DAD D 19 Сложить DE с HL 51 DAD H 29 Сложить HL с HL (удвоение HL) 47 52 DAD SP 39 Сложить SP с HL 53 DCR A 3D A←(A) - 1 (декремент A) 54 DCR B 05 B←(B) – 1 55 DCR C 0D C←(C) – 1 56 DCR D 15 D←(D) – 1 57 DCR E 1D E←(E) – 1 58 DCR H 25 H←(H) – 1 59 DCR L 2D L←(L) – 1 60 DCR M 35 Loc (HL)←(Loc(HL)) -1 61 DCX B 0B BC←(BC) – 1 62 DCX D 1B DE←(DE) -1 63 DCX H 2B HL←(HL) – 1 64 DCX SP 3B SP←(SP) -1 65 DI F3 Запретить прерывания 66 EI FB Разрешить прерывания 67 HLT 76 Останов процессора 68 IN pp DB Ввести данные из порта pp 69 INR A 3C A←(A) + 1 (инкрементировать A) 70 INR B 04 Инкрементировать B 71 INR C 0C Инкрементировать C 72 INR D 14 Инкрементировать D 73 INR E 1C Инкрементировать E 74 INR H 24 Инкрементировать H 75 INR L 2C Инкрементировать L 76 INR M 34 Инкрементировать содержимое Loc(HL) 77 INX B 03 Инкрементировать BС 78 INX D 13 Инкрементировать DE 79 INX H 23 Инкрементировать HL 80 INX SP 33 Инкрементировать SP 81 JMP a16 C3 Перейти по адресу a16 82 JZ a16 CA То же, если нуль 83 JNZ a16 C2 То же, если не нуль 84 JP a16 F2 То же, если плюс 85 JM a16 FA То же, если минус 86 JC a16 DA То же, если перенос 87 JNC a16 D2 То же, если нет переноса 88 JPE a16 EA Перейти по адресу a16, если паритет чётный 89 JPO a16 E2 Перейти по адресу a16, если паритет нечётный 90 LDA a16 3A Загрузить A из ячейки с адресом a16 91 LDAX B 0A Загрузить A из ячейки с адресом Loc(BC) 92 LDAX D 1A Загрузить A из ячейки с адресом Loc(DE) 93 LHLD a16 2A Загрузить в HL содержимое ячейки с адресом a16 94 LXI B,d16 01 Загрузить в BC непосредственные данные d16 95 LXI H,d16 21 Загрузить в HL непосредственные данные d16 96 LXI SP,d16 31 Загрузить в SP непосредственные данные d16 97 MOV A,A 7F Переслать из A в A 98 MOV A,B 78 Переслать из B в A (B←(A) ) 99 MOV A,C 79 Переслать из C в A 100 MOV A,D 7A Переслать из D в A 101 MOV A,E 7B Переслать из E в A 102 MOV A,H 7C Переслать из H в A 103 MOV A,L 7D Переслать из L в A 104 MOV A,M 7E Переслать из Loc(HL) в A 105 MOV B,A 47 Переслать из A в B 106 MOV B,B 40 Переслать из B в B 107 MOV B,C 41 Переслать из C в B 108 MOV B,D 42 Переслать из D в B 109 MOV B,E 43 Переслать из E в B 110 MOV B,H 44 Переслать из H в B 111 MOV B,L 45 Переслать из L в B 112 MOV B,M 46 Переслать из Loc(HL) в B 113 MOV C,A 4F Переслать из A в C 114 MOV C,B 48 Переслать из B в C 115 MOV C,C 49 Переслать из C в C 116 MOV C,D 4A Переслать из D в C 117 MOV C,E 4B Переслать из E в C 118 MOV C,H 4C Переслать из H в C 119 MOV C,L 4D Переслать из L в C 120 MOV C,M 4E Переслать из Loc(HL) в C 121 MOV D,A 57 Переслать из A в D 122 MOV D,B 50 Переслать из B в D 123 MOV D,C 51 Переслать из C в D 124 MOV D,D 52 Переслать из D в D 125 MOV D,E 53 Переслать из E в D 126 MOV D,H 54 Переслать из H в D 127 MOV D,L 55 Переслать из L в D 128 MOV D,M 56 Переслать из Loc(HL) в D 129 MOV E,A 5F Переслать из A в E 130 MOV E,B 58 Переслать из B в E 131 MOV E,C 59 Переслать из C в E 132 MOV E,D 5A Переслать из D в E 133 MOV E,E 5B Переслать из E в E 134 MOV E,H 5C Переслать из H в E 135 MOV E,L 5D Переслать из L в E 136 MOV E,M 5E Переслать из Loc(HL) в E 137 MOV H,A 67 Переслать из A в H 138 MOV H,B 60 Переслать из B в H 139 MOV H,C 61 Переслать из C в H 140 MOV H,D 62 Переслать из D в H 141 MOV H,E 63 Переслать из E в H 142 MOV H,H 64 Переслать из H в H 143 MOV H,L 65 Переслать из L в H 144 MOV H,M 66 Переслать из Loc(HL) в H 145 MOV L,A 6F Переслать из A в L 146 MOV L,B 68 Переслать из B в L 147 MOV L,C 69 Переслать из C в L 148 MOV L,D 6A Переслать из D в L 149 MOV L,E 6B Переслать из E в L 150 MOV L,H 6C Переслать из H в L 151 MOV L,L 6D Переслать из L в L 152 MOV L,M 6E Переслать из Loc(HL) в L 153 MOV M,A 77 Переслать из A в M 154 MOV M,B 70 Переслать из B в M 155 MOV M,C 71 Переслать из C в M 156 MOV M,D 72 Переслать из D в M 157 MOV M,E 73 Переслать из E в M 158 MOV M,H 74 Переслать из H в M 159 MOV M,L 75 Переслать из L в M 160 MVI A,d8 3E Переслать d8 в A 161 MVI B,d8 06 Переслать d8 в B 162 MVI C,d8 0E Переслать d8 в C 163 MVI D,d8 16 Переслать d8 в D 164 MVI E,d8 1E Переслать d8 в E 165 MVI H,d8 26 Переслать d8 в H 166 MVI L,d8 2E Переслать d8 в L 167 MVI M,d8 36 Переслать d8 в Loc(HL) 168 NOP 00 Нет операции 169 ORA A B7 Проверить A и сбросить перенос 170 ORA B B0 Логичеcкая операция A ИЛИ B 171 ORA C B1 Логичеcкая операция A ИЛИ C 172 ORA D B2 Логичеcкая операция A ИЛИ D 173 ORA E B3 Логичеcкая операция A ИЛИ E 174 ORA H B4 Логичеcкая операция A ИЛИ H 175 ORA L B5 Логичеcкая операция A ИЛИ L 176 ORA M B6 Логичеcкая операция A ИЛИ M 177 ORI d8 F6 Логичеcкая операция A ИЛИ d8 178 OUT pp D3 Записать A в порт pp 179 PCHL E9 Передать управление по адресу в HL 180 POP B C1 Извлечь слово из стека в BC 181 POP D D1 Извлечь слово из стека в DE 182 POP H E1 Извлечь слово из стека в HL 183 POP PSW F1 Извлечь слово из стека в PSW 184 PUSH B C5 Поместить в стек содержимое BC 185 PUSH D D5 Поместить в стек содержимое DE 186 PUSH H E5 Поместить в стек содержимое HL 187 PUSH PSW F5 Поместить в стек содержимое PSW 188 RAL 17 Циклический сдвиг CY + A влево 189 RAR 1F Циклический сдвиг CY + A вправо 190 RLC 07 Сдвинуть A влево на один разряд с переносом 191 RRC 0F Сдвинуть A вправо на один разряд с переносом 192 RET C9 Возврат из подпрограммы 193 RZ C8 Возврат из подпрограммы, если FZ=0 194 RNZ C0 Возврат из подпрограммы, если FZ=1 195 RP F0 Возврат из подпрограммы, если FP=1 196 RM F8 Возврат из подпрограммы, если FP=0 197 RC D8 Возврат из подпрограммы, если FC=1 198 RNC D0 Возврат из подпрограммы, если FC=0 199 RPE E8 Возврат из подпрограммы, если паритет чётный 200 RPO E0 Возврат из подпрограммы, если паритет нечётный 201 RST 0 C7 Запуск программы с адреса 0 202 RST 1 CF Запуск программы с адреса 8h 203 RST 2 D7 Запуск программы с адреса 10h 204 RST 3 DF Запуск программы с адреса 18h 205 RST 4 E7 Запуск программы с адреса 20h 206 RST 5 EF Запуск программы с адреса 28h 207 RST 6 F7 Запуск программы с адреса 30h 208 RST 7 FF Запуск программы с адреса 38h 209 SPHL F9 Загрузить SP из HL 210 SHLD a16 22 Записать HL по адресу a16 211 STA a16 32 Записать A по адресу a16 212 STAX B 02 Записать A по адресу Loc(BC) 213 STAX D 12 Записать A по адресу Loc(DE) 214 STC 37 Установить флаг переноса (CF=1) 215 SUB A 97 Вычесть А из А (очистить А) 216 SUB B 90 Вычесть B из А 217 SUB C 91 Вычесть C из А 218 SUB D 92 Вычесть D из А 219 SUB E 93 Вычесть E из А 220 SUB H 94 Вычесть H из А 221 SUB L 95 Вычесть L из А 222 SUB M 96 Вычесть M из А 223 SUI d8 D6 Вычесть d8 из А 224 SBB A 9F Вычесть А из А (очистить А) 225 SBB B 98 Вычесть c заёмом B из А 226 SBB C 99 Вычесть c заёмом C из А 227 SBB D 9A Вычесть c заёмом D из А 228 SBB E 9B Вычесть c заёмом E из А 229 SBB H 9C Вычесть c заёмом H из А 230 SBB L 9D Вычесть c заёмом L из А 231 SBB M 9E Вычесть c заёмом M из А 232 SBI d8 DE Вычесть c заемом d8 из А 233 XCHG EB Обмен содержимым DE и HL 234 XTHL E3 Обмен содержимого вершины стека с содержимым HL 235 XRA A AF Исключающее ИЛИ A с A (очистка A) 236 XRA B A8 Исключающее ИЛИ B с A 237 XRA C A9 Исключающее ИЛИ C с A 238 XRA D AA Исключающее ИЛИ D с A 239 XRA E AB Исключающее ИЛИ E с A 240 XRA H AC Исключающее ИЛИ H с A 241 XRA L AD Исключающее ИЛИ L с A 242 XRA M AE Исключающее ИЛИ Loc(HL) с A 243 XRI d8 EE Исключающее ИЛИ d8 с A Особенности выполнения некоторых команд Команды пересылки данных между регистрами (типичный случай регистровой адресации) кодируются в одном байте следующим образом: 01DDDSSS где 01 − код операции пересылки, DDD − номер регистра назначения; SSS − номер регистра приёмника. Никаких флагов команды пересылки не устанавливают. На выполнение команды тратится один машинный цикл. Кодировка номера регистра (DDD и SSS) Код Регистр 000 B 001 C 010 D 011 E 100 H 101 L 110 M 111 A M – содержимое ячейки памяти, адресуемое регистровой парой HL . Пересылка из ячейки памяти в регистр и из регистра в ячейку памяти осуществляется с помощью косвенно-регистровой адресации. Это означает, что адрес ячейки памяти загружается в регистровую пару HL, а в командах типа MOV A,M (такие команды кодируются как 01DDD110) в регистр A будет загружено содержимое ячейки памяти, адрес которой содержится в HL. Так как в таких командах требуется обращение к памяти, то на их выполнение нужно два машинных цикла. Система команд процессора экономична и не рассчитана на поддержку языков высокого уровня. Такая поддержка появится в более поздних моделях процессоров Intel. Следует отметить, что средняя длина команды в типичной программе равна двум байтам, а для программ более поздних 16-разрядных процессоров типа 8086 она равна 4,1. Поэтому на логических программах 8-разрядные процессоры не сильно уступали 16-разрядным. Аналогично работают и команды записи в память. Команды непосредственной пересылки являются двухбайтными. В первом байте кодируются код операции и регистр, а второй содержит байт пересылаемых данных: 00DDD110 XXXXXXXX Очевидно, что для исполнения команды требуется два цикла. Более интересна версия этой команды MVI M,d8, когда байт непосредственных данных пишется в память. Она кодируется так: 00110110 ХХХХХХХХ Исполнение занимает три цикла. Очень полезна группа команд LXI, предназначенных для непосредственной загрузки регистровых пар непосредственным значением. Она позволяет одной командой переместить сразу два байта данных и широко используется как в операциях адресной арифметики, так и при выполнении целочисленных вычислений. Команда кодируется следующим образом: 00RP0001 xxxxxxxx zzzzzzzz где RP − регистровая пара; хххххххх − младший байт данных, zzzzzzzzz − старший байт данных. При исполнении команды, требующей трех машинных циклов, старший байт данных грузится в старший регистр регистровой пары, а младший байт − в младший регистр. Название старшего регистра стоит в названии пары первым. Команда прямой загрузки аккумулятора LDA a16 позволяет загрузить в него данные, на которые указывает адрес, содержащийся в самой команде. Длина команды три байта. Кодируется команда следующим образом: 00111010 хххххххх zzzzzzzz где xxxxxxxx − младшая часть адреса; zzzzzzzz − старшая часть адреса. Исполнение занимает машинных четыре цикла. Симметричная по действию команда STA. Команда LHLD addr (мнемоника расшифровывается Load H and L Direct) загружает в регистр L содержимое ячейки памяти по адресу, кодируемому во втором и третьем байтах команды (т.е. адресация прямая). В регистр H загружается байт из ячейки addr+1. Команда выполняется за пять машинных циклов. Обратная ей по действию команда SHLD (Store H and L Direct). Команда LDAX reg (мнемоника от Load accumulator indirect). Содержимое ячейки памяти, адресуемой регистровой парой BC или DE, за два цикла загружается в аккумулятор. Обратная по действию команда STAX reg. Очень полезная команда XCHG. (H)↔(D), (L) ↔(E). Выполняется за один цикл. Арифметические команды Начнем с команды сложения. Сложить содержимое аккумулятора с содержимым регистра ADD reg Кодировка команды: 10000RRR Выполняется за один цикл. Следует отметить, что все арифметические команды изменяют флаги: Z, S, P, CY, AC. При выполнении многобайтового сложения необходимо учитывать перенос. Поэтому младшие байты слагаемых складываются с помощью команды ADD, а все последующие посредством команды ADC reg. Она учитывает при сложении содержимое флага переноса. Аналогично устроены команды вычитания. Разновидностью команды сложения является команда инкремента регистра, необходимая для адресной арифметики и организации циклов. INR reg Кодировка команды: 00ККК100 Устанавливаются все флаги, за исключением CY. Команда DCR reg обратная по действию команде INR reg. Довольно редко используется команда DAA (мнемоника от Decimal Adjust Accumulator) выполняет следующие действия: если содержимое младшего полубайта (нибла) аккумулятора меньше 9 или установлен флаг CY, то (A) + 6, если значение старшего полубайта больше 9 или установлен флаг CY, то 6 добавляется к содержимому старшего полубайта. При этом устанавливаются все флаги. Логические команды ANA reg Флаг CY сбрасывается, а AC устанавливается (в 8085). В микропроцессоре 8080 на эти флаги влияет результат операции над третьими битами операндов. В командах групп XRA и ORA флаги CY и AC сбрасываются. CMP reg − сравнить регистр (Compare register), вычитает содержимое регистра из аккумулятора. Содержимое аккумулятора не изменяется. Флаги устанавливаются как при вычитании. Z=1, если (A) = (reg). CR = 1, если (A) < (reg). Циклический сдвиг влево RCL работает следующим образом. Содержимое аккумулятора сдвигается на одну позицию влево, т. е. каждый старший бит получает значение стоящего рядом с ним младшего бита. Содержимое седьмого бита переходит в нулевой бит аккумулятора: (CY) ←(b7). RRC − сдвигает содержимое аккумулятора вправо. (CY)← (b0), (b7)←(b0). RAL − (Rotate Left trough Carry). Сначала (CY) заносится в младший бит аккумулятора, а потом в CY записывается содержимое старшего его бита. Формально: (b0)←(CY), (CY)←(b7). Аналогично со сдвигом вправо: (Bn)←(Bn+1), (CY)←(b0), (b7)←(CY). Команда CMA (мнемоника от Complement Accumulator) инвертирует каждый бит аккумулятора, т.е. 0 становится 1 и наоборот. Флаги не устанавливаются. Команда CMC инвертирует содержимое флага переноса. Другие флаги не устанавливаются. По командам управления стоит отметить выполнение команды вызова подпрограммы. CALL addr − при ее выполнении в стек записывается адрес следующей за CALL команды, значение указателя стека дважды декрементируется, а управление передается по указанному адресу. Команда возврата из подпрограммы записывает в счетчик команд адрес из вершины стека, увеличивает указатель стека на 2 и передает управление на новый адрес. Поэтому если модифицировать адрес возврата в стеке, то можно перейти совсем в другое место. Для этого есть, впрочем, более удобная возможность − команда PCHL. Она позволяет передать управление по адресу в регистровой паре HL. Иногда в системных программах используется команда останова HLT. Процессор останавливается, регистры и флаги не устанавливаются. Для запуска важно подать сигнал Reset. IN port - данные из порта с указанным номером считываются в аккумулятор. Циклов 3. Флаги не изменяются. OUT port - содержимое аккумулятора помещается на шину данных для записи в указанный в команде порт.
«Программная модель МП КР580ВМ80А» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач

Тебе могут подойти лекции

Смотреть все 55 лекций
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot