Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Обозначения, используемые при описании команд




При описании команд микроЭВМ СМ-1800 используются следующие обозначения регистров:

R – обозначение одного из однобайтных регистров макропроцессора из следующего набора: A,B,C,D,E,H,L;

F – регистр флагов (однобайтный), пять из восьми битов которого используется для фиксации следующих признаков результата операции:

 

Таблица 1 – Назначение флагов

Разряд в регис-тре F Обозначение бита Содержание признака Состояние бита
«1» «0»
  CY перенос из 7-го разряда есть перенос нет переноса
  AC перенос из 3-го разряда есть перенос нет переноса
  Z нулевой результат результат равен нулю результат не равен нулю
  S знак результата отрицатель-ный (минус) положитель-ный (плюс)
  P оценка коли-чества единиц в коде результата чётное нечётное

SP – указатель стека (двухбайтовый регистр);

PC – программный счетчик (двухбайтовый регистр);

M – символ, используемый для обозначения ячейки оперативной памяти, причем адрес этой ячейки указывается косвенно – он содержится в паре регистров H, L.

Система команд содержит команды выполнения логических операций, для обозначения которых используются индексы:

Ù - логическое умножение – «И»;

Ú - логическое сложение – «ИЛИ»;

" - сложение по модулю 2 – исключающее «ИЛИ».

Конкретный код команд ADD, ADC, ANA, CMP, DCR, INR, MOV, MVI, ORA, SBB, SUB, XRA определяется подстановкой кода регистра-источника данных (SSS) или кода регистра-приемника данных (DDD). Приняты следующие коды для обозначения регистров:

 

Имя регистра Код регистра
B  
C  
D  
E  
H  
L  
M (память)  
A (аккумулятор)  

Примеры.

1. Команда ADD R(код 1000 0SSS) осуществляет сложение содержимого аккумулятора и регистра R. Если в конкретном случае регистром R является регистр С, код которого SSS=001, то код команды записывается так:

1000 0001 или 81h в шестнадцатеричной системе.

2. Команда MOV R1,R2 (код 01DDDSSS) осуществляет пересылку содержимого из регистра-источника R2 в регистр-при­емник R1.Если в конкретном случав регистром-источником является регистр E (SSS=011), а регистром-приемником регистр В (DDD=010), то код команды: 0101 0011=53h.

В описании команд циклического сдвига содержимого аккумулятора (RAL, RAR, RLC, RRC) использовано обозначение АМ -бит М регистра А (аккумулятора), причем А0 и А7-соответст­венно младший и старший (знаковый) биты аккумулятора.

При чтении описания команд следует учитывать следующие обозначения при записи:

B2 - второй байт команды (в командах ADI, АСI, АNI, CPI, MVI, ORI, SBI, SUI, XRI – это непосредственные данные, в ко­мандах IN и OUT – адрес порта),

ВЗ – третий байт команды, обычно самостоятельно не выступающий,

→ направление передачи данных (...из...в...),

() - содержимое байта (команда, регистра, памяти). Следует читать:

(H) - содержимое регистра Н,

(В) - содержимое регистра В,

(В2)- содержимое второго байта команды,

(М) - содержимое ячейки оперативной памяти, адрес которой помещен в паре регистров Н, L, т.е. адресом является (Н, L).

При описании команд вызова (безусловного САLL и восьми по условию), требующих запоминания адреса возврата из подпрограммы в стековой памяти, а также команд извлечения содержимого регистров из стека (РОР) и засылки содержимого регистров в стек (РUSН) использованы квадратные скобки для обозначения адреса ячейки стека.

Например, запись [SР-1] [SР-2] ß (РС) следует читать так: поместить содержимое программного счетчика РС (два байта) в две ячейки стековой памяти, адреса которых определяются как уменьшенное соответственно на единицу и на два содержимое указателя стека SР.

Для команд условного вызова подпрограмм и возврата по условию в их описании даны два значения количества машинных циклов в команде: первое, если условие не выполнено и далее выполняется очередная команда программы, а второе – если условие выполнено и происходит вызов подпрограммы или возврат. Время выполнения одного цикла команды от 1 до 5 машинных циклов.

 

ЗАМЕЧАНИЕ:

Все команды преобразования данных (арифметические, логические) модифицируют пять описанных в таблице 1 флагов. В результате выполнения любой логической операции флаг СY сбрасывается в 0. Операция инкремента и декремента коротких (байтовых) регистров (INR_R, DCR_R) модифицируют все флаги кроме CY. Команды INX R и DCХ R значения флагов не изменяют.

1.2 Список команд

Таблица 2 – Список команд

Мнемоника ассемблера Байты Циклы Коды Описание
двоичные Нex
ADD R     10000SSS   (A)←(A)+(R)
ADD M         (A)←(A)+(M)
ADI (B2)       C6 (A)←(A)+ (B2)
ADC R     10001SSS   (A)←(A)+(R)+(CY)
ADC M       8E (A)←(A)+(M)+(CY)
ACI (B2)       CE (A)←(A)+(B2)+(CY)
ANA R     10100SSS   (A)←(A)Ù(R)
ANA M       A6 (A)←(A)Ù(M)
ANI B2       E6 (A)←(A)Ù(B2)
CALL (B2)(B3)       CD [SP-1][SP-2]←(PC), (SP)=(SP)-2, (PC)←(B3)(B2)
CC (B2)(B3)   3/5   DC Если CY=1, то [SP-1][SP -2]← (PC) (SP)=(SP)-2, (PC) ← (B3)(B2) иначе (PC)=(PC) + 3
CNC (B2)(B3)   3/5   D4 Если CY=0, то [SP-1][SP-2]←(PC) (SP)=(SP)-2, (PC)← (B3)(B2) иначе (PC)=(PC) + 3
CZ (B2)(B3)   3/5   CC Если Z=1, то [SP-1][SP-2]←(PC) (SP)=(SP)-2, (PC)← (B3)(B2) иначе (PC)=(PC) + 3
CNZ (B2)(B3)   3/5   C4 Если Z=0, то [SP-1][SP-2]←(PC) (SP)=(SP)-2, (PC)← (B3)(B2) иначе (PC)=(PC) + 3
CM (B2)(B3)   3/5   FC Если S=1, то [SP-1][SP-2]←(PC) (SP)=(SP)-2, (PC)← (B3)(B2) иначе (PC)=(PC) + 3
CP (B2)(B3)   3/5   F4 Если S=0, то [SP-1][SP-2]←(PC) (SP)=(SP)-2, (PC)← (B3)(B2) иначе (PC)=(PC) + 3
CPE (B2)(B3)   3/5   EC Если P=1, то [SP-1][SP-2]←(PC) (SP)=(SP)-2, (PC)← (B3)(B2) иначе (PC)=(PC) + 3
CPO (B2)(B3)   3/5   E4 Если P=0, то [SP-1][SP-2]←(PC) (SP)=(SP)-2, (PC)← (B3)(B2) иначе (PC)=(PC) + 3
CMA       2F (A)←Ā
CMC       3F CY←CY
CMP R     10111SSS   (A) – (R)
CMP M       BE (A) – (M)
CPI (B2)       FE (A) – (B2)
DAA         Преобразование сумматора
DAD B         (H)(L)←(H)(L) + (B)(C)
DAD D         (H)(L)←(H)(L) + (D)(E)
DAD H         (H)(L)←(H)(L) + (H)(L)
DAD SP         (H)(L)←(H)(L) + (SP)
DCR R     00DDD101   (R)←(R) - 1
DCR M         (M)←(M) - 1
DCX B       0B (B)(C)←(B)(C) - 1
DCX D       1B (D)(E)←(D)(E) - 1
DCX H       2B (H)(L)←(H)(L) - 1
DCX SP       3B (SP)←(SP) - 1
DI       F3 Запрещение системного прерывания
EI       FB Разрешение системного прерывания
HLT         Останов
IN (B2)       DB (A)←(порт ввода)
INR R     00DDD100   (R)←(R) + 1
INR M         (M)←(M) + 1
INX B         (B)(C)←(B)(C) + 1
INX D         (D)(E)←(D)(E) + 1
INX H         (H)(L)←(H)(L) +1
INX SP         (SP)←(SP) + 1
JMP (B2)(B3)       C3 (PC)← (B3)(B2)
JC (B2)(B3)       DA Если CY=1, то (PC)← (B3)(B2) иначе (PC)=(PC) + 3
JNC (B2)(B3)       D2 Если CY=0, то (PC)← (B3)(B2) иначе (PC)=(PC) + 3
JZ (B2)(B3)       CA Если Z=1, то (PC)← (B3)(B2) иначе (PC)=(PC) + 3
JNZ (B2)(B3)       C2 Если Z=0, то (PC)← (B3)(B2) иначе (PC)=(PC) + 3
JM (B2)(B3)       FA Если S=1, то (PC)← (B3)(B2) иначе (PC)=(PC) + 3
JP (B2)(B3)       F2 Если S=0, то (PC)← (B3)(B2) иначе (PC)=(PC) + 3
JPE (B2)(B3)       EA Если P=1, то (PC)← (B3)(B2) иначе (PC)=(PC) + 3
JPO (B2)(B3)       E2 Если P=0, то (PC)← (B3)(B2) иначе (PC)=(PC) + 3
LDA (B2)(B3)       3A (A)←[(B3)(B2)]
LDAX B       0A (A)←[(B)(C)]
LDAX D       1A (A)←[(D)(C)]
LHL D (B2)(B3)         2A (L)← [(B3)(B2)] (H)← [(B3)(B2) + 1]
LXI B, (B2)(B3)         (C)← (B2), (B)←(B3)
LXI D, (B2)(B3)         (E)← (B2), (D)←(B3)
           
LXI H, (B2)(B3)         (L)← (B2), (H)←(B3)
LXI SP, (B2)(B3)         (SP)L← (B2), (SP)H←(B3)
MOV R1,R2     01DDDSSS   (R1)←(R2)
MOV R,M     01DDD110   (R)←(M)
MOV M,R     01110SSS   (M)←(R)
MVI R, (B2)     00DDD110   (R)← (B2)
MVI M, (B2)         (M)← (B2)
ORA R     10110SSS   (A)←(A) Ú (R)
ORA M       B6 (A)←(A) Ú (M)
ORI (B2)       F6 (A)←(A) Ú (B2)
OUT (B2)       D3 (Порт вывода)←(A)
PCHL       E9 (PC)←(H)(L)
POP B       C1 (C)←[SP], (B)←[SP+1], (SP)=(SP)+2
POP D       D1 (E)←[SP], (D)←[SP+1], (SP)=(SP)+2
POP H       E1 (L)←[SP], (H)←[SP+1], (SP)=(SP)+2
POP PSW       F1 (F)←[SP], (A)←[SP+1], (SP)=(SP)+2
PUSH B         [SP-1]←(B), [SP-2]←(C), (SP)=(SP-2)
PUSH D       D5 [SP-1]←(D), [SP-2]←(E), (SP)=(SP-2)
PUSH H       E5 [SP-1]←(H), [SP-2]←(L), (SP)=(SP-2)
PUSH PSW       F5 [SP-1]←(A), [SP-2]←(F), (SP)=(SP-2)
RAL         AM+1←AM, A0←CY, CY←A7
RAR         1F AM←AM+1, A7←CY, CY←A0
RLC         AM+1←AM, A0←A7, CY←A7
RRC       0F AM+1←AM, A7←A0, CY←A0
RET       C9 (PC)←[SP][SP+1], (SP)=(SP)+2
RC   1/3   D8 Если CY=1, то (PC)←[SP][SP+1], (SP)=(SP)+2 иначе (PC)=(PC) + 1
RNC   1/3   D0 Если CY=0, то (PC)←[SP][SP+1], (SP)=(SP)+2 иначе (PC)=(PC) + 1
RZ   1/3   C8 Если Z=1, то (PC)←[SP][SP+1], (SP)=(SP)+2 иначе (PC)=(PC) + 1
RNZ   1/3   C0 Если Z=0, то (PC)←[SP][SP+1], (SP)=(SP)+2 иначе (PC)=(PC) + 1
RM   1/3   F8 Если S=1, то (PC)←[SP][SP+1], (SP)=(SP)+2 иначе (PC)=(PC) + 1
RP   1/3   F0 Если S=0, то (PC)←[SP][SP+1], (SP)=(SP)+2 иначе (PC)=(PC) + 1
RPE   1/3   E8 Если P=1, то (PC)←[SP][SP+1], (SP)=(SP)+2, иначе (PC)=(PC) + 1
RPO   1/3   E0 Если P=0, то (PC)←[SP][SP+1], (SP)=(SP)+2, иначе (PC)=(PC) + 1
RST     11AAA111   [SP-1][SP-2]←(PC), (SP)=(SP)-2, (PC)←(00000000 00AAA000)
SBB R     10011SSS   (A)←(A) – (R) – заем
SBB M       9E (A)←(A) – (M) – заем
SBI (B2)       DE (A)←(A) – (B2) – заем
SUB R     10010SSS   (A)←(A) – (R)
SUB M         (A)←(A) – (M)
SUI (B2)       D6 (A)←(A) – (B2)
SHLD (B2)(B3)         [(B3)(B2)]←(L), [(B3)(B2)+1]←(H)
SPHL       F9 (SP)←(H)(L)
STA (B2)(B3)         [(B3)(B2)]←(A)
STAX B         [(B)(C)]←(A)
STAX D         [(D)(E)]←(A)
STC         CY←1
XRA R     10101SSS   A←(A) " (R)
XRA M       AE A←(A) " (M)
XRI (B2)       EE A←(A) " (B2)
XCHG       EB (H)↔(D), (E)↔(L)
XTHL       E5 (L)↔[SP], (H)↔[SP+1]

 

 

Кратное описание команд

 

Таблица 3 – Описание команд

Обозначение Описание
ADD R Сложение содержимого регистра R с содержимым аккумулятора
ADD M Сложение содержимого ячейки памяти с содержимым аккумулятора
ADI (B2) Сложение непосредственных данных (В2) с содержимым аккумулятора
ADC R Сложение содержимого регистра R, аккумулятора и флага CY
ADC M Сложение содержимого ячейки памяти, аккумулятора и флага CY
ACI (B2) Сложение непосредственных данных (В2) с содержимым аккумулятора и содержимым флага CY
ANA R Логическое умножение («И») содержимого регистра R и аккумулятора
ANA M Логическое умножение («И») содержимого ячейки памяти и аккумулятора
ANI B2 Логическое умножение («И») содержимого непосредственных данных (В2) и аккумулятора
CALL (B2)(B3) Вызов безусловный, т.е. переход к команде, адрес которой содержится во втором и третьем байтах команды
CC (B2)(B3) Вызов по условию: при наличии переноса CY=1 – (по переносу)
CNC (B2)(B3) Вызов по условию: при отсутствии переноса CY=0 – (нет переноса)
CZ (B2)(B3) Вызов по условию: результат равен нулю Z=1 – (по нулю)
CNZ (B2)(B3) Вызов по условию: результат не равен нулю Z=0 – (нет нуля)
CM (B2)(B3) Вызов по условию: результат отрицателен S=1 – (по минусу)
CP (B2)(B3) Вызов по условию: результат положителен S=0 (по плюсу)
CPE (B2)(B3) Вызов по условию: сумма единиц в коде результата четная P=1 – (по четности)
CPO (B2)(B3) Вызов по условию: сумма единиц в коде результата нечетная P=0 – (по нечетности)
CMA Инвертирование содержимого аккумулятора
CMC Инвертирование содержимого флага переноса CY
CMP R Сравнение содержимого регистра R и аккумулятора
CMP M Сравнение содержимого ячейки памяти и аккумулятора
CPI (B2) Сравнение непосредственных данных (В2) и аккумулятора
DAA Преобразование содержимого аккумулятора в BDD (двоично-десятичном коде)
DAD B Сложение (В,С) с (H,L)
DAD D Сложение (D,E) с (H,L)
DAD H Сложение (H,L) с (H,L)
DAD SP Сложение указателя стека (SP) с (H,L)
DCR R Отрицательное приращение R
DCR M Отрицательное приращение содержимого ячейки памяти
DCX B Отрицательное приращение (В,С)
DCX D Отрицательное приращение (D,E)
DCX H Отрицательное приращение (H,L)
DCX SP Отрицательное приращение содержимого указателя стека (SP)
DI Запрещение системного прерывания
EI Разрешение системного прерывания
HLT Останов
IN (B2) Ввод данных в аккумулятор из порта, адрес которого определяется содержимым второго байта команды (В2)
INR R Положительное приращение (R)
INR M Положительное приращение содержимого ячейки памяти
INX B Положительное приращение (B,C)
INX D Положительное приращение (D,E)
INX H Положительное приращение (H,L)
INX SP Положительное приращение содержимого указателя стека (SP)
JMP (B2)(B3) Переход безусловный к команде, адрес которой содержится во втором и третьем байтах команды
JC (B2)(B3) Переход по условию: CY=1 – (по переносу)
JNC (B2)(B3) Переход по условию: CY=0 – (нет переноса)
JZ (B2)(B3) Переход по условию: Z=1 – (по нулю)
JNZ (B2)(B3) Переход по условию: Z=0 – (нет нуля)
JM (B2)(B3) Переход по условию: S=1 – (по минусу)
JP (B2)(B3) Переход по условию: S=0 (по плюсу)
JPE (B2)(B3) Переход по условию: P=1 – (по четности)
JPO (B2)(B3) Переход по условию: P=0 – (по нечетности)
LDA (B2)(B3) Загрузка аккумулятора содержимым ячейки памяти, адрес которой содержится во втором и третьем байтах команды
LDAX B Загрузка аккумулятора содержимым ячейки памяти, адрес которой содержится в регистрах B,C
LDAX D Загрузка аккумулятора содержимым ячейки памяти, адрес которой содержится в регистрах D,E
LHLD (B2)(B3) Загрузка регистров H,L содержимым ячейки памяти, адрес которой содержится во втором и третьем байтах команды
LXI B, (B2)(B3) Загрузка непосредственных данных В2,В3 в регистры B,C
LXI D, (B2)(B3) Загрузка непосредственных данных В2,В3 в регистры D,E
LXI H, (B2)(B3) Загрузка непосредственных данных В2,В3 в регистры H,L
LXI SP, (B2)(B3) Загрузка непосредственных данных В2,В3 в указатель стека SP
MOV R1,R2 Пересылка содержимого регистра R2 в регистр R1
MOV R,M Пересылка содержимого ячейки памяти в регистр R
MOV M,R Пересылка содержимого регистра R в ячейку памяти
MVI R, (B2) Пересылка непосредственных данных В2 в регистр R
MVI M, (B2) Пересылка непосредственных данных В2 в ячейку памяти
ORA R Логическое сложение («ИЛИ») содержимого регистра R и аккумулятора
ORA M Логическое сложение («ИЛИ») содержимого ячейки памяти и аккумулятора
ORI (B2) Логическое сложение («ИЛИ») содержимого непосредственных данных (В2) и аккумулятора
OUT (B2) Вывод данных из аккумулятора в порт, адрес которого содержится во втором байте команды В2
PCHL Засылка (H,L) в программный счетчик PC
POP B Извлечение содержимого регистров B,C из стека
POP D Извлечение содержимого регистров D,E из стека
POP H Извлечение содержимого регистров H,L из стека
POP PSW Извлечение содержимого аккумулятора А и регистра F из стека
PUSH B Засылка содержимого регистров B,C в стек
PUSH D Засылка содержимого регистров D,E в стек
PUSH H Засылка содержимого регистров H,L в стек
PUSH PSW Засылка содержимого аккумулятора А и регистра F в стек
RAL Циклический сдвиг содержимого аккумулятора влево на один разряд CY в А0,А7 в CY
RAR   Циклический сдвиг содержимого аккумулятора вправо на один разряд CY в А7,А0 в CY
RLC Циклический сдвиг содержимого аккумулятора влево на один разряд А7 в А0,А7 в CY
RRC Циклический сдвиг содержимого аккумулятора вправо на один разряд А0 в А0, А7 в CY
RET Возврат безусловный к команде с адресом, помещенным последним в стек
RC Возврат по условию: CY=1 – (по переносу)
RNC Возврат по условию: CY=0 – (нет переноса)
RZ Возврат по условию: Z=1 – (по нулю)
RNZ Возврат по условию: Z=0 – (нет нуля)
RM Возврат по условию: S=1 – (по минусу)
RP Возврат по условию: S=0 (по плюсу)
RPE Возврат по условию: P=1 – (по четности)
RPO Возврат по условию: P=0 – (по нечетности)
RST Пуск по результатам обработки прерывания
SBB R Вычитание из аккумулятора содержимого регистра R с заёмом
SBB M Вычитание из аккумулятора содержимого ячейки памяти с заёмом
SBI (B2) Вычитание из аккумулятора непосредственных данных В2 с заёмом
SUB R Вычитание из аккумулятора содержимого регистра R
SUB M Вычитание из аккумулятора содержимого ячейки памяти
SUI (B2) Вычитание из аккумулятора непосредственных данных В2
SHLD (B2)(B3) Запись (H,L) в память с адресом, который содержится во втором и третьем байтах команды
SPHL Засылка (H,L) в указатель стека SP
STA (B2)(B3) Запись содержимого аккумулятора в ячейку памяти, адрес которой содержится во втором и третьем байтах команды
STAX B Запись содержимого аккумулятора в ячейку памяти, адрес которой содержится в регистрах В,С
STAX D Запись содержимого аккумулятора в ячейку памяти, адрес которой содержится в регистрах D,E
STC Установка флага переноса в состояние «1»
XRA R Сложение по модулю («Исключающее ИЛИ») содержимого регистра R и аккумулятора
XRA M Сложение по модулю («Исключающее ИЛИ») содержимого ячейки памяти и аккумулятора
XRI (B2) Сложение по модулю («Исключающее ИЛИ») непосредственных данных В2 и аккумулятора
XCHG Обмен содержимым между регистрами D,E и H,L
XTHL Обмен содержимым между верхними ячейками стека и регистрами H,L

 





Поделиться с друзьями:


Дата добавления: 2015-10-27; Мы поможем в написании ваших работ!; просмотров: 627 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Надо любить жизнь больше, чем смысл жизни. © Федор Достоевский
==> читать все изречения...

4334 - | 4026 -


© 2015-2026 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.