Система команд
Команды пересылки:
Условные обозначения:
#d - непосредственный операнд;
ad - адрес РПД ;
d16- адрес внешней памяти
Rn - регистр текущего банка;
Ri- нулевой или первый регистр текущего банка
bit –прямой адрес бита,
rel- 8-разрядное смещение в дополнительном коде для выполнения относительных переходов. Величина смещения позволяет передавать управление в пределах –128 - +127 байт относительно адреса следующей команды;
@ - признак косвенной адресации;
MOV - пересылка при работе с РПД;
MOVX – пересылка c внешней памятью данных;
MOVC – пересылка c памятью команд;
MOV A,(Rn, ad, @Ri, #d)
MOV Rn, (A,ad,d)
MOV ad,(Rn,А,ad,@Ri,#d)
MOV ( A,Rn,ad),#d
MOV @Ri,(ad,Rn,#d)
MOV ad1,ad2
MOV DPTR,#d16
Команды этой группы не модифицируют признаки результата за исключением команды загрузки PSW и пересылок, в которых приемником результата является аккумулятор А. В этом случае устанавливается бит паритета и аппаратно формируется признак равенства 0 – Z=1, который можно использовать для выполнения команд условного перехода JZ (JNZ).
XCH А,(Rn,ad,@Ri) - обмен содержимым А и (Rn,@Ri,ad);
XCHD A,@Ri - обмен содержимым мл. тетрад байтовых операндов;
SWAP- обмен содержимым тетрад в аккумуляторе
PUSH ad – запись в стек,
POP ad – чтение из стека
Команды обращения к ВПД:
Обращение к ВПК и ВПД осуществляется через регистр - указатель DPTR. Обращение к регистру возможно с помощью команды MOV DPTR,#d16, старший (DPH) и младший (DPL) байты этого регистра доступны через зону РСФ.
movx A,@DPTR
movx @DPTR,A
movx @Ri, A
movx A,@Ri - странично-косвенный метод доступа: смещение внутри страниц задает содержимое Ri, а номер страницы формируется на выходе порта P2. На основе этого способа можно организовать индексную адресацию.
Обращение к памяти команд:
movc A,@A+DPTR {(A):=@(A+DPTR)}
movc A,@A+PC {PC:=PC+1;(A):=((A+PC))} - в А находится целое беззнаковое смещение, РС – программный счетчик.
Эти команды только для чтения. Их обычно используют при работе с таблицами, хранящимися в ПЗУ
Арифметические операции:
ADD A,(Rn,ad,@Ri,#d) - сложение
ADC A,(Rn,ad,@Ri,#d)- сложение с переносом
DA - команда двоично-десятичной коррекции при сложении
SUBB - вычитание с заемом .Это единственная команда вычитания. Поэтому перед её использованием необходимо контролировать значение бита С.
INC(DEC) (A,Rn,@Ri,ad) - инкремент (декремент)
INC DPTR. Если необходим декремент, то его реализация возможна только с использованием команд декремента регистров DPL(младший байт DPTR), и DPH ( старший байт DPTR). В регистре PSW операции INC и DEC никаких признаков не формируют.
MUL AB –беззнаковое умножение 8x8 (B)(A):=(A)*(B)
DIV AB –беззнаковое деление 8/8 (A)(B):=A/B
При умножении старший байт результата записывается в регистр-расширитель В,а младший - в А. Если содержимое А>256, то формируется флаг арифметического переполнения OV. Бит С всегда сбрасывается.
При делении частное записывается в А, а остаток - в В. Флаги переноса C и арифметического переполнения OV сбрасываются. Если (А)<(В), то флаг дополнительного переноса (АС) не сбрасывается. При делении на 0 устанавливается флаг OV.
Логические команды:
ANL A,(Rn,@Ri,#d,ad); - конъюнкция;
ANL ad, (A,#d)
