литература / Пухальский Проектирование микропроцессорных систем 2001
.pdf30 |
Глава 1. Микропроцессоры 8080 и 8085 |
регистра признаков F), 8-разрядные ячейки памяти М, 8- и 16-разрядные данные dS и d 16, ко торым пользователем могут присваиваться символические имена, 8-разрядный адрес port внешнего устройства, 16-разрядный адрес памяти addr.
Команда
MOV |
rl, r l |
MOV |
r, M |
MOV |
M, r |
MVI |
r, d& |
MVI |
M, d8 |
LXI |
rp, d 16 |
LDA |
addr |
STA |
addr |
LHLD |
addr |
SHLD |
addr |
LDAX |
rp |
STAX |
rp |
XCHG |
|
ADD |
r |
ADI |
d& |
ADD |
M |
ADC |
r |
ADC |
M |
ACI |
dS |
SUB |
r |
SUI |
dS |
SUB |
M |
SBB |
r |
SBI |
d8 |
SBB |
M |
INR |
r |
INR |
M |
DCR |
r |
DCR |
M |
INX |
rp |
DCX |
rp |
DAD |
rp |
DAA |
|
ANA |
r |
ANI |
dS |
ANA |
M |
XRA |
r |
XRI |
dS, |
XRA |
M |
Таблица 1.5. Команды микропроцессоров 8080/4 и 8085/1
|
|
|
|
Описание операции |
B /M |
|
|
|
|
|
Группа команд передачи данных |
|
|
rl |
<— rl |
|
|
{M ove} |
1/1 |
|
r <r- M(rp H) |
|
|
1/2 |
|||
M(rp H) |
r |
|
|
1/2 |
||
r <— d& |
|
|
{Move immediate} |
2/2 |
||
M(rp H) |
d.% |
|
|
2/3 |
||
rp |
<— d l 6, rp = B, D, H или SP |
{Load immediate} |
3/3 |
|||
A |
<— M(addr) |
|
{Load direct accumulator) |
3/4 |
||
M(addr) |
<r- A |
|
{Store direct accumulator) |
3/4 |
||
L |
<- M(addr), H |
M(addr + 1) |
{Load H and L direct} |
3/5 |
||
M(addr) |
<— L, M(addr + 1) <— H |
{Store H and L direct} |
3/5 |
|||
A |
<— M(rp), rp = В или D |
{Load accumulator indirect j |
1/2 |
|||
M(rp) |
<— A, rp = В или D |
{Slore accumulator indirect} |
1/2 |
|||
H |
о |
D, L <-» E |
|
{Exchangej |
1/1 |
|
|
|
|
Группа команд ариф мет ических операций |
|
||
A |
<— A + r |
|
{Add) |
1/1 |
||
A |
<^A + d8 |
|
(Add immediate} |
2/2 |
||
A |
<— A + M(rp H) |
|
|
1/2 |
||
A |
<— A + r + CY |
|
{Add with carry) |
1/1 |
||
A |
<—A + M(rp H) + CY |
|
1/2 |
|||
A |
<- A + dS + CY |
|
{Add with carry Immediate} |
2/2 |
||
A |
<— A - |
r |
|
{Subtract} |
1/1 |
|
A |
< - A - r f8 |
|
(Subtract immediate} |
2/2 |
||
A |
<— A - |
M(rp H) |
|
|
1/2 |
|
A |
<— A - |
r - CY |
|
{Subtract with borrow } |
1/1 |
|
A |
<— A - |
- CY |
|
{Subtract immediate} |
2/2 |
|
A |
<— A - M(rp H) - CY |
|
1/2 |
|||
r |
<— r + |
1 |
|
{bicrement} |
1/1 |
|
Л/(гр H) |
<- M(rp H) + 1 |
|
1/3 |
|||
r |
^— r —1 |
|
{Decrement} |
1/1 |
||
M(rp H) |
<r- M(rp H) - 1 |
|
1/3 |
|||
rp |
<— rp + 1, rp = B, D, H или SP |
{Increment rp] |
1/1 |
|||
rp |
<— rp - 1, rp = B, D, H или SP |
{Decrement rp) |
1/1 |
|||
rp H |
<— rp H + rp, rp = B, D, H или SP {Double precision add) |
1/1 |
||||
Десятичная коррекция |
Decimal adjust accumulator} |
1/1 |
||||
|
|
|
Группа команд логических операций |
|
||
A |
<— A & r |
{And register with accumulator} |
1/1 |
|||
A |
<— A & d8 |
{And immediate with accumulator} |
2/2 |
|||
A |
4—A & M(rp H) |
1And memory with accumulator} |
1/2 |
|||
A |
<—A © r |
{Exclusive or register with”accumulator} |
1/1 |
|||
A |
<—A © dS |
{Exclusive or immediate with accumulator j |
2/2 |
|||
A |
<— A ® M (r p H ) |
{Exclusive or memory with accumulator) |
1/2 |
ОС О |
^ 85 |
F |
4 |
|
|
5 |
4 |
- |
7 |
7 |
- |
7 |
7 |
- |
7 |
7 |
- |
10 |
10 |
- |
10 |
10 |
- |
13 |
13 |
- |
13 |
13 |
- |
16 |
16 |
- |
16 |
16 |
- |
7 |
7 |
- |
7 |
7 |
- |
4 |
4 |
- |
4 |
4 |
+ |
7 |
7 |
+ |
7 |
7 |
+ |
4 |
4 |
+ |
7 |
7 |
+ |
7 |
7 |
+ |
4 |
4 |
+ |
7 |
7 |
+ |
7 |
7 |
+ |
4 |
4 |
+ |
7 |
7 |
+ |
7 |
7 |
+ |
5 |
4 |
Д |
10 |
10 |
Д |
5 |
4 |
Д |
10 |
10 |
A |
5 |
6 |
- |
5 |
6 |
- |
10 |
10 |
V |
4 |
4 |
+ |
4 |
4 |
* |
7 |
7 |
* |
7 |
7 |
* |
4 |
4 |
# |
7 |
7 |
# |
7 |
7 |
# |
1.6. Система команд микропроцессоров 8080 и 8085 |
31 |
Продолжение табл. 1.5
Команда |
|
|
|
Описание операции |
|||
ORA |
г |
А |
<— A v г |
|
{Or register with accumulator] |
||
ORI |
d.% |
A |
<— A v d S |
|
{Or immediate with accumulator] |
||
ORA |
М |
A <— A v M(rp H) |
{Or memory with accumulator] |
||||
СМР |
г |
д |
\ Z |
= |
1 при A = r, d8, M |
{Compare) |
|
CPI |
d8 |
||||||
|
f |
СY = 1 при A < r, d 8, M |
{Compare unmediate} |
||||
СМР |
М |
A - M(rp H ) J |
|
|
|
||
RLC |
|
---- ---- |
|
---- ---- ---- |
{Rotate accumulator |
||
|
|
CY f j - A , |
|
A2 t- Aj f- A 0^ |
lefi .n carfyj |
у 80 |
^ 85 |
F |
|
|
|
4 |
4 |
# |
7 |
7 |
# |
7 |
7 |
# |
4 |
4 |
+ |
7 |
7 |
+ |
7 |
7 |
+ |
4 |
4 |
V |
RRC |
|
|
A7 |
|
A2 |
A) |
A 0 -*-> CY |
{Rotate accumula,or |
1/1 |
4 |
4 |
V |
||
|
|
1 — |
|
с |
|
|
|
right in carry] |
||||||
|
|
|
|
|
|
|
|
|
|
|
||||
RAL |
|
|- CY <— A-; «-•*•«- Aj <r- A; |
Aq <-| |
|
{Rotate accumulator |
1/1 |
4 |
4 |
V |
|||||
|
'-------------------------- >------------------------> |
|
left through carry] |
|||||||||||
|
|
|
|
|
|
|
||||||||
RAR |
|
|
|-> A-j -> |
-> A2 -» A [ |
-> A q rCY-j |
[R0taie accumulator |
1/1 |
4 |
4 |
V |
||||
|
|
|
|
< |
|
|
|
П£/гг through саггу] |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||
СМА |
|
A <— /4 |
|
|
|
{Complement accumulator] |
1/1 |
4 |
4 |
- |
||||
СМС |
|
CY <— СУ |
|
|
|
|
|
{Complement carry] |
1/1 |
4 |
4 |
V |
||
STC |
|
CY |
1 |
|
|
|
|
|
{Sef carry! |
1/1 |
4 |
4 |
V |
|
|
|
|
|
|
Группа команд передачи управления |
|
|
|
|
|||||
JMP |
addr |
PC <— addr |
|
|
|
|
|
|
jJum p} |
3/3 |
10 |
10 |
- |
|
]cond |
addr |
PC <— addr |
|
|
|
|
|
{Jump conditional] |
3/3 |
10 |
7/10 1 |
- |
||
PCHL |
|
PC <— HL |
|
|
(Load Program Counter with H and L] |
1/1 |
5 |
6 |
- |
|||||
CALL |
addr |
Л |
SP <- SP - |
1, M SP) |
PC/!, |
|
|
{Call] |
3/5 |
17 |
18 |
- |
||
Сcond |
addr |
J |
SP <— SP - |
1, M(SP) <- P Q ; PC <r- addr |
{Call conditional] |
■—, |
11/17 1 9/18 1 |
- |
||||||
RET |
|
1 |
P C /< ~ M S P ), S P < - S P + 1, |
|
{Return} |
1/3 |
10 |
10 |
- |
|||||
Rcond |
|
J |
PC/i <—M(SP), SP <—SP + 1 |
|
{Return conditional] |
1/1/32 |
5/11 1 |
6/12 1 |
- |
|||||
RST |
n |
f |
SP <- SP - |
1, M(SP) <- PC/i, |
|
{R eport} |
1/3 |
11 |
12 |
|
||||
1 S P ^ - S P - |
l,M ( S P ) < - P a ;P C < - 8 x n |
(n = 0 . . . 7) |
|
|
||||||||||
|
|
|
|
|
|
|
||||||||
|
|
Группа команд управления стеком, |
вводом-выводом и состоянием М П |
|
|
|||||||||
PUSH |
rp |
SP f - SP - |
1. M S P ) 4 - rph, SP <- SP - |
1, M S P ) <- m l |
{Push] |
1/3 |
11 |
12 |
- |
|||||
PUSH |
PSW |
S P ^ S P - |
1, M SP) <— A, S P ^ - S P - 1, M(SP) <— F |
|
1/3 |
11 |
12 |
- |
||||||
POP |
rp |
rpl <- M (SP), SP <— SP + 1, rph <- M(SP), SP <- SP + 1 |
{Pop] |
1/3 |
10 |
10 |
- |
|||||||
POP |
PSW |
F <- M SP), SP <—SP + 1, A <—M SP), SP f - SP + 1 |
|
1/3 |
10 |
10 |
+ |
|||||||
XTHL |
|
L <-> M(SP),H <-» M(SP+1) {Exchange Top o f Stack with H and L] |
1/5 |
18 |
16 |
- |
||||||||
SPHL |
|
SP |
HL |
|
|
|
{Load Stack Pointer with H and L } |
1/1 |
5 |
6 |
- |
|||
IN |
port |
A <r—HOiport) |
|
|
|
|
|
[Input] |
2/3 |
10 |
10 |
- |
||
OUT |
port |
IIO(port) <—A |
|
|
|
|
{Output] |
2/3 |
10 |
10 |
- |
|||
El3 |
|
INTE = 1 после следующей команды |
|
(Enable Interrupts] |
1/1 |
4 |
4 |
- |
||||||
DI3 |
|
INTE = 0 после данной команды |
|
{Disable Interrupts] |
1/1 |
4 |
4 |
- |
||||||
HLT |
|
Останов процессора; PC |
|
PC + 1 |
|
|
{H ah) |
1/1 |
7 |
5 |
- |
|||
NOP |
|
Пустая операция |
|
|
|
{No-operation} |
1/1 |
4 |
4 |
- |
||||
SIMJ |
|
Установка маски прерываний |
|
{Set Interrupt Mask] |
l/l |
- |
4 |
- |
||||||
RIM4 |
|
Чтение маски прерываний |
|
{ReadInterrupt M ask} |
1/1 |
- |
4 |
- |
||||||
|
П р и м е ч а н и е : |
1X ю X/Y при невыполнении условия cond и Y при выполнении условия cond; 2 X из |
||||||||||||
Ъ'X/Y при невыполнении условия cond и Y при выполнении условия cond; |
в МП 80854 вместо триггера 1NTE |
|||||||||||||
данные команды управляют флагом (триггером) IE (см. рис. 1.16); только для МП 8085Л. |
|
|
|
32
МК |
хО |
|
Ох |
NOP |
|
1х |
— |
|
2х |
RIM |
|
Зх |
SIM |
|
4х |
MOV |
|
в , в |
||
|
||
5х |
MOV |
|
D, В |
||
|
||
6х |
MOV |
|
н, в |
||
|
||
7х |
MOV |
|
м, в |
||
|
||
8х |
ADD |
|
В |
||
|
||
9х |
SUB |
|
В |
||
|
||
Ах |
ANA |
|
В |
||
|
||
Вх |
ORA |
|
В |
||
|
||
Сх |
RNZ |
|
Dx |
RNC |
|
Ex |
RPO |
|
Fx |
RP |
|
МК |
xO |
|
Глава 1. Микропроцессоры 8080 и 8085 |
|
|
||||
Таблица 1.6. М аш инные коды команд МП 8080А и 8085А |
|
||||||
xl |
x2 |
x3 |
x4 |
x5 |
x6 |
x7 |
|
LXI |
STAX |
INX |
INR |
DCR |
MVI |
RLC |
|
B ,d l6 |
В |
В |
В |
В |
B,</8 |
||
|
|||||||
LXI |
STAX |
INX |
INR |
DCR |
MVI |
RAL |
|
D, d l 6 |
D |
D |
D |
D |
D, dS |
||
|
|||||||
LXI |
SHLD |
INX |
INR |
DCR |
MVI |
DAA |
|
H, d l6 |
addr |
H |
H |
H |
H, d8 |
||
|
|||||||
LXI |
STA |
INX |
INR |
DCR |
MVI |
STC |
|
SP, d l6 |
addr |
SP |
M |
M |
M,rf8 |
||
|
|||||||
MOV |
MOV |
MOV |
MOV |
MOV |
MOV |
MOV |
|
В, С |
B, D |
В, E |
B, H |
B, L |
в , M |
B, A |
|
MOV |
MOV |
MOV |
MOV |
MOV |
MOV |
MOV |
|
D, С |
D, D |
D, E |
D, H |
D, L |
D, M |
D, A |
|
MOV |
MOV |
MOV |
MOV |
MOV |
MOV |
MOV |
|
H ,C |
H, D |
H, E |
H, H |
H, L |
H, M |
H, A |
|
MOV |
MOV |
MOV |
MOV |
MOV |
HLT |
MOV |
|
M, с |
M, D |
M, E |
M, H |
M, L |
M, A |
||
|
|||||||
ADD |
ADD |
ADD |
ADD |
ADD |
ADD |
ADD |
|
С |
D |
E |
H |
L |
M |
A |
|
SUB |
SUB |
SUB |
SUB |
SUB |
SUB |
SUB |
|
С |
D |
E |
H |
L |
M |
A |
|
ANA |
ANA |
ANA |
ANA |
ANA |
ANA |
ANA |
|
С |
D |
E |
H |
L |
M |
A |
|
ORA |
ORA |
ORA |
ORA |
ORA |
ORA |
ORA |
|
С |
D |
E |
H |
L |
M |
A |
|
POP |
JNZ |
JMP |
CNZ |
PUSH |
ADI |
RST |
|
В |
addr |
addr |
addr |
В |
d8 |
0 |
|
POP |
JNC |
OUT |
CNC |
PUSH |
SUI |
RST |
|
D |
addr |
port |
addr |
D |
rf8 |
2 |
|
POP |
JPO |
XTHL |
CPO |
PUSH |
ANI |
RST |
|
H |
addr |
addr |
H |
dS |
4 |
||
|
|||||||
POP |
JP |
CP |
DI |
PUSH |
ORI |
RST |
|
PSW |
addr |
addr |
PSW |
rf8 |
6 |
||
|
|||||||
xl |
x2 |
x3 |
x4 |
x5 |
x6 |
x7 |
MK
Ox
lx
2x
3x
4x
5x
6x
7x
8x
9x
Ax
Bx
Cx
Dx
Ex
Fx
MK
Символическое обозначение типа rl г 2 означает передачу содержимого регистра г2 в регистр r l. Адреса памяти М и внешних устройств I/O указываются в круглых скобках, напри мер: M(addr), M(rp), I/0(port) (addr — адрес памяти, port — адрес внешнего устройства, гр — содержимое регистровой пары В, D или Н, являющееся адресом памяти). Адресация некоторых операндов производится в неявном виде самим кодом операции команды. Двухбайтовые опе ранды и адреса при их описании иногда маркируются буквами I (low — младший байт операн да или адреса) и h (high — старший байт). В табл. 1.5 дано описание команд: их назначение, число байт и машинных циклов (В/М), число тактов Т выполнения команды (Т 80, Т 85) и воз действие на флаги (F). Машинные коды команд (МК) приведены в табл. 1.6 (например, МК команды MOV D, В равен 010100002 = 50i6 — см. рис. 1.13).
Регистр признаков. При выполнении некоторых команд используются биты (флаги F) регистра признаков F (узел FFF на рис. 1.3). Содержимое регистра признаков может изменять ся командами, так как в нем фиксируются некоторые результаты выполнения команд. Формат регистра признаков F показан на рис. 1.14.
МК |
х8 |
|
Ох |
— |
|
1х |
— |
|
2х |
— |
|
Зх |
— |
|
4х |
MOV |
|
с , в |
||
|
||
5х |
MOV |
|
Е, В |
||
|
||
6х |
MOV |
|
L, В |
||
|
||
7х |
MOV |
|
А, В |
||
|
||
8х |
ADC |
|
В |
||
|
||
9х |
SBB |
|
в |
||
|
||
Ах |
XRA |
|
В |
||
|
||
Вх |
СМР |
|
В |
||
|
||
Сх |
RZ |
|
Dx |
RC |
|
Ex |
RPE |
|
Fx |
RM |
|
МК |
х8 |
1.6. Система команд микропроцессоров 8080 и 8085 |
33 |
х9 |
|
хА |
xB |
DAD |
|
LDAX |
DCX |
В |
|
В |
В |
DAD |
|
LDAX |
DCX |
D |
|
D |
D |
DAD |
|
LHLD |
DCX |
Н |
|
addr |
H |
DAD |
|
LDA |
DCX |
SP |
|
addr |
SP |
MOV |
|
MOV |
MOV |
С, С |
|
С, D |
С, E |
MOV |
|
MOV |
MOV |
Е, С |
|
E, D |
E, E |
MOV |
|
MOV |
MOV |
L, С |
|
L, D |
L, E |
MOV |
|
MOV |
MOV |
А, С |
|
A, D |
A, E |
ADC |
|
ADC |
ADC |
С |
|
D |
E |
SBB |
|
SBB |
SBB |
С |
|
D |
E |
XRA |
|
XRA |
XRA |
С |
|
D |
E |
СМР |
|
CMP |
CMP |
С |
|
D |
E |
RET |
|
JZ |
— |
|
addr |
||
|
|
|
|
— |
|
JC |
IN |
|
addr |
port |
|
|
|
||
PCHL |
|
JPE |
XCHG |
|
addr |
||
|
|
|
|
SPHL |
|
JM |
EI |
|
addr |
||
|
|
|
|
х9 |
|
xA |
xB |
D7 |
D6 |
D5 |
0 4 |
xC |
xD |
|
INR |
DCR |
|
С |
С |
|
INR |
DCR |
|
E |
E |
|
INR |
DCR |
|
L |
L |
|
INR |
DCR |
|
A |
A |
|
MOV |
MOV |
|
с, H |
C, L |
|
MOV |
MOV |
|
E, H |
E, L |
|
MOV |
MOV |
|
L, H |
L, L |
|
MOV |
MOV |
|
A, H |
A, L |
|
ADC |
ADC |
|
H |
L |
|
SBB |
SBB |
|
H |
L |
|
XRA |
XRA |
|
H |
L |
|
CMP |
CMP |
|
H |
L |
|
cz |
CALL |
|
addr |
addr |
|
CC |
— |
|
addr |
||
|
||
CPE |
— |
|
addr |
||
|
||
CM |
|
|
addr |
|
|
xC |
xl) |
xE |
xF |
|
MVI |
RRC |
|
C, dS |
||
|
||
MVI |
RAR |
|
E, dS |
||
|
||
MVI |
CM A |
|
L,rf8 |
||
|
||
MVI |
CMC |
|
A, dS |
||
MOV |
||
MOV |
||
с , M |
C, A |
|
MOV |
MOV |
|
E, M |
E, A |
|
MOV |
MOV |
|
L, M |
L, A |
|
MOV |
MOV |
|
A, M |
A, A |
|
ADC |
ADC |
|
M |
A |
|
SBB |
SBB |
|
M |
A |
|
XRA |
XRA |
|
M |
A |
|
CMP |
CMP |
|
M |
A |
|
ACI |
RST |
|
d8 |
1 |
|
SBI |
RST |
|
dS |
3 |
|
XRI |
RST |
|
dS |
5 |
|
CPI |
RST |
|
dS |
7 |
|
xE |
xF |
D3 |
D2 |
D l |
DO |
MK
Ox
lx
2x
3x
4x
Sx
6x
7x
8x
9x
Ax
Bx
Cx
Dx
Ex
Fx
MK
s |
z |
0 |
AC |
0 |
P |
1 |
CY |
|
|
Рис. 1.14. Регистр признаков F |
|
|
Флаг Z (zero — нуль) идентифицирует нулевой результат выполнения в АЛУ команды:
[О - результат операции не равен О, 1 - результат операции равен 0.
Флаг CY (Carry — перенос) идентифицирует перенос/заем, возникающий при выполнении в АЛУ операций над операндами:
3 Г. И. Пухальский
34 |
Глава 1. Микропроцессоры 8080 и 8085 |
0 - нет переноса (заема) из разряда Dn, 1 - есть перенос (заем) из разряда D7.
Флаг Р (Parity — паритет) идентифицирует четное или нечетное число единиц, содержа щихся в байте результата выполнения команды (Even/Odd Parity — четный/нечетный паритет):
0 - число единиц в байте нечетное,
1 - число единиц в байте четное
(Р = A 7® A(,®As®A4® Ai ® A2 ® A l® A0, Л,- — разряды аккумулятора, / = 0 ... 7).
Флаг S (Sign — знак) идентифицирует знак числа результата выполнения команд арифме тических операций в дополнительном коде:
0 - разряд D-j = 0 (число положительное), 1 - разряд D-j = 1 (число отрицательное)
(состояние флага S изменяют также команды логических операций). Основные сведения о до полнительном коде чисел смотри в конце этого параграфа.
Флаг АС (Auxiliary Carry — вспомогательный перенос) идентифицирует наличие переноса из разряда £>3 в разряд D4 при выполнении команд арифметических операций:
[О - нет переноса из разряда D3,
АС —s
[1 - есть перенос из разряда D 3.
Этот флаг используется при выполнении команд десятичной арифметики, когда числа представляются в упакованном двоично-десятичном коде, например: 95ш = 1001 01012 — один байт представляет двухразрядное десятичное число. В тетрадах байта нельзя использовать чис ла от Ah = 10102 до Fh = 11112Десятичную коррекцию числа выполняет команда DAA (см.
задачу 1).
Воздействие команд на флаги регистра признаков указано в графе F табл. 1.5 символами: -, +, А, V, * и #. Значения флагов, обозначенных этими символами, приведены в табл. 1.7 (“- ” — команда не изменяет значения флага, “+” — команда изменяет флаг, “0” — флаг уста навливается в состояние 0).
|
Таблица 1.7. Флаги |
|
|||
F |
S |
Z |
АС |
р |
CY |
+ |
+ |
+ |
+ |
+ |
+ |
А |
+ |
+ |
+ |
+ |
- |
V |
- |
- |
- |
- |
+ |
* |
+ |
+ |
+ |
+ |
0 |
# |
+ |
+ |
0 |
+ |
0 |
|
|
MOV |
|
В, Н |
|
|
|
MOV |
|
А, М |
|
XCHG
Флаг переноса CY позволяет организовать программным способом сложение, вычитание, умножение и деление чисел, для представления которых используется любое число байт. Четыре флага (Z, СУ, S и Р) используются командами передачи управления для осуществления условных переходов, условных вызовов подпрограмм и условных возвратов из подпрограмм. Все команды по их назначению делятся на пять групп.
Г руппа команд передачи данных. Эти команды не из меняют содержимого регистра признаков F, так как произво дят только пересылку данных из одного устройства (регистра или памяти) в другое, не изменяя их содержимого. Примеры записи команд передачи данных:
В <— Н
А <— M(rp Н) — адрес памяти М в регистрах Н и L Н D, L <-> Е — обмен содержимым rp Н и rp D
36 |
|
Глава 1. Микропроцессоры 8080 и 8085 |
LDA |
0D57AA |
; Загрузка в аккумулятор А содержимого ячейки памяти A/(D57A) |
XRI |
ОААh |
; A A h - 10101010b — инвертирование при значении 1 разряда этого числа |
STA |
0 D5 7 A/1 |
; Запись в ячейку памяти A/(D57A) результата операции |
Команды сравнения СМР (СМР — Compare — сравнение) 8 -разрядных операндов выпол няются с помощью операции вычитания без фиксирования результата в аккумуляторе А, т. е. сами операнды при выполнении этих команд не изменяются. Это позволяет производить по следовательные многократные сравнения содержимого аккумулятора Л с различными операн дами. Изменение флагов Z и CY этими командами в регистре признаков используется команда ми условной передачи управления для изменения порядка выполнения команд программы.
Команды сдвига операндов на один разряд влево RLC, RAL и вправо RRC, RAR произво дятся над содержимым аккумулятора с участием флага CY регистра признаков (см. табл. 1.5). Данные операции позволяют реализовать, в частности, программное выполнение операций умножения и деления многобайтных чисел в соответствии с их традиционными алгоритмами.
Задача 3. В регистре Е поменять местами младшую и старшую тетрады. Решение:
MOV |
A, E |
RRC |
|
RRC |
|
RRC |
|
RRC |
|
MOV |
E, A |
A —A-jA5A5A4A3A2AjAq ^— E A <r- A[)A-iAfsAiA 4A 3A 2A[
A <— AiAoA-iAbAsAtAiAj A ^—A 2A {A^yA-jAt^A^A^A^ A <— A 1A 2A 1A0A 7A 6A5A4
E <— А (здесь вместо команды сдвига вправо RRC можно ; использовать и команду сдвига влево RLC)
Группа команд передачи управления. Выборка команд программы производится из по следовательных ячеек памяти в порядке возрастания их адресов при выполнении всех команд, кроме команд передачи управления (JMP, Jcond, PCHL и CALL, Ccond, RST). Данные коман ды применяются для изменения последовательности выборки команд из памяти. Некоторые из этих команд используют флаги регистра признаков F для условных передач управления — при выполнении условия, зафиксированного во флаге регистра признаков F, производится передача управления по адресу, указанному в команде, а при невыполнении условия производится пере ход к выполнению следующей команды программы.
В табл. 1.5 были приведены ко манды условных передач управле ния. Они содержат мнемонику cond (condition — условие), которая заме няется в командах на языке ассемб
NZ |
Не нуль (Z = 0) |
JNZ, |
CNZ, |
RNZ |
лера на мнемонику в соответствии |
||
с табл. 1 .8 . |
|
||||||
Z |
Н у л ь (г= 1 ) |
JZ, |
CZ, |
RZ |
|
||
Команды JMP addr и Jcond addr |
|||||||
NC |
Нет переноса (CY = 0) |
JNC, |
CNC, |
RNC |
|||
(команды безусловных и условных |
|||||||
С |
Есть перенос (CY = 1) |
JC, |
СС, |
RC |
|||
переходов) задают переход на вы |
|||||||
РО |
Нечетность (Р = 0) |
JPO, |
СРО, |
RPO |
|||
полнение |
команды, расположенной |
||||||
PE |
Четность (Р = 1) |
JPE, |
СРЕ, |
RPE |
|||
по адресу |
addr, который содержится |
||||||
P |
Плюс (S = 0) |
JP, |
СР, |
RP |
|||
во втором и третьем байтах команд |
|||||||
M |
Минус (5 = 1 ) |
JM, |
СМ, |
RM |
|||
(прямая адресация переходов). Эти |
|||||||
|
|
|
|
|
|||
|
|
|
|
|
команды |
обеспечивают ветвление |
программ. Команда безусловного перехода PCHL производит загрузку содержимого rp Н в программный счетчик PC, что приводит к выборке следующей команды, находящейся по адре су, задаваемому содержимым регистров Н и L (косвенно-регистровая адресация переходов).
1.6. Система команд микропроцессоров 8080 и 8085 |
39 |
прерывания, устанавливаемого в 1 положительным фронтом сигнала RST 7.5 (сброс этого триггера производится и автоматически при подтверждении прерывания RST 7.5); SOD (Serial Output Data) — разряд данных для вывода по последовательному каналу; SOE (Serial Output Enable) — разрешение вывода разряда £)7 аккумулятора в триггер SOD последовательного ка нала связи. Если разряд MSE = 0, то маска не устанавливается, т. е. разряды MSE и SOE исполь зуются для разделения операций установки маски и последовательного вывода данных. Значе ние сигнала RESET IN= 0 => SOD = О, R l .5 = 0 и Мк.5 = 1.
D1 |
D6 |
D5 |
D4 |
D 3 |
D2 |
D1 |
DO |
SOD |
SOE |
|
R1.5 |
MSE |
M l .5 |
Мб.5 |
М5.5 |
Данные для вывода |
|
|
|
|
|
|
Маска |
Разрешение вывода |
|
|
|
|
Разрешение установки маски |
||
Не определено |
|
|
|
|
Сброс триггера RST 7.5 |
Рис. 1.15. Назначение разрядов аккумулятора для команды SIM
Задача 4. Разрешить обработку запросов прерываний по входам RST 7.5, RST 5.5 и запре тить по входу RST 6.5. Вывести значение разряда 0 регистра В в последовательный канал связи
SOD. Решение:
MVI |
A, OA/i |
SIM |
|
EI |
|
MOV |
А, В |
RRC |
|
ANI |
80h |
ORI |
40/i |
SIM |
|
А <— OAh = 0000 1010
Установка маски прерываний Разрешение приема незамаскированных запросов прерываний
А <— /) |
lSJU i .ll; : |
/>,; |
|
А <— |
;,.1 v \ >,. \ |
\ i —Il'Ji !j(Jl;B,:HJ12B |
|
A <- B0B1B6B5B4B3B2B l & 1000 0000 = fioOOO 0000 |
|
||
A <- B0000 0000 V 0100 0000 = B0100 0000 (SOE |
1) |
||
SOD < - B() |
|
|
На рис. 1.15 указаны значения 0 и 1 разрядов аккумулятора, удовлетворяющие условиям поставленной задачи — перед выполнением команды S1M в аккумулятор следует загрузить число ОА1г.
Команда RIM (Read Interrupt Mask) загружает в аккумулятор данные, относящиеся к пре рываниям и последовательному каналу ввода. На рис. 1.16 показано содержимое аккумулятора после выполнения этой команды. Байт содержит информацию о состояниях маски (разряды D2, D1 и D0), флага разрешения прерывания (разряд D3), информацию о входах аппаратных преры ваний RST 1.5, 6.5 и 5.5, находящихся в состоянии ожидания обслуживания (разряды D6, D5 и D4), и значение сигнала на входе SID последовательного канала (разряд D7).
D l |
D6 |
D5 |
D4 |
D3 |
D l |
oi |
DO |
|
SID |
/7.5 |
/6.5 |
/5.5 |
IE |
M l .5 |
M6.5 |
M5.5 |
|
|
|
|
|
|
T |
|
~ T ~ Маска |
|
|
|
|
|
|
Флаг разрешения прерываний (INTE в МП 8080Л) |
|||
|
|
|
|
|
Прерывания в ожидании |
|
||
|
|
|
|
|
Введенные последовательные данные |
|||
|
|
|
|
|
|
|
>.п |
л |
Рис. 1.16. Содержимое аккумулятора после выполнения команды RIM