32指令系统.docx
- 文档编号:27739714
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:32
- 大小:54.43KB
32指令系统.docx
《32指令系统.docx》由会员分享,可在线阅读,更多相关《32指令系统.docx(32页珍藏版)》请在冰豆网上搜索。
32指令系统
3.2.1程序状态字PSW
即标志寄存器,字节地址为:
D0H,可字节寻址、位寻址。
作用:
存放指令执行时有关信息、状态,供程序查询和判别。
PSW字格式:
D7D6D5D4D3D2D1D0
CYACF0RS1RS0OV—P
PSW.7:
CY,进位标志,布尔处理器的累加器C。
PSW.6:
AC,半进位标志。
PSW.5:
F0,用户标志,可置位和复位。
PSW.4-PSW.3:
RS1、RS0,设置当前工作寄存器区Rn。
PSW.2:
OV,溢出标志。
PSW.1:
保留位,可单独使用,表示方法为D1H、PSW.1。
PSW.0:
P,奇偶标志,指A中“1”的个数的奇偶性,为奇数时置1。
3.2.2指令系统
一、数据传送指令
最基本、最主要的指令,共有29条,包括数据传送、数据交换、栈操作三类。
目的单元为A时影响P标志。
1、内部RAM间的数据传送(16条)
(1)指令格式
指令格式:
MOV[目的字节],[源字节]
功能:
把源字节指定的变量传送到目的字节指定的存储单元中,源字节内容不变。
(2)操作数
操作数:
A,Rn,direct,@Ri,DPTR,#data
传送关系如下图所示
(3)指令描述举例:
以A目的操作数
MOVA,Rn;(A)←(Rn)
以Rn为目的操作数
MOVRn,direct;(Rn)←(direct)
以direct为目的操作数
MOVdirect1,direct2;(direct1)←(direct2)
MOVdirect,@Ri;(direct)←((Ri))
以@Ri为目的操作数
MOV@Ri,A;((Ri))←(A)
MOV@Ri,#data;((Ri))←data
16位数据传送指令
MOVDPTR,#data16;高8位送DPH,低8位送DPL
例3-1:
设(70H)=60H,(60H)=20H,P1为输入口,状态为0B7H,执行如下程序:
MOVR0,#70H;(78H70H)
MOVA,@R0;(E6H)
MOVR1,A;(F9H)
MOVB,@R1;(87HF0H)
MOV@R0,P1;(A690H)
结果:
(R0)=70H
(A)=60H
(R1)=60H
(B)=20H
(70H)=0B7H
例3-2:
给出下列指令的执行结果,指出源操作数的寻址方式。
MOV20H,#25H
MOV25H,#10H
MOVP1,#0CAH
MOVR0,#20H
MOVA,@R0
MOVR1,A
MOVB,@R1
MOV@R1,P1
MOVP3,R1
结果:
(20H)=25H,(25H)=10H,(P1)=0CAH,
(R0)=20H,(A)=25H,(R1)=25H,
(B)=10H,(25H)=0CAH,(P3)=25H
2、ACC与外部数据存储器(或扩展I/O口)传递数据MOVX
MOVXA,@DPTR
MOVXA,@Ri;均为单字节指令
MOVX@DPTR,A
MOVX@Ri,A
功能:
A与外部RAM或扩展I/O口数据的相互传送。
说明:
(1)用Ri进行间接时只能寻址256个单元(00H~FFH),当访问超过256个字节的外RAM空间时,需利用P2口确定。
高8位地址(也称页地址),而用DPTR进行间址可访问整个64KB空间。
(2)在执行上述读、写外RAM指令时,P3.7(RD)、P3.6(WR)会相应自动有效。
(3)可用作为扩展I/O口的输入/输出指令
例3-3:
将外部RAM2010H中内容送到外部RAM2020单元中。
分析:
读2010H中内容→A→写数据到2020H中
程序如下:
MOVDPTR,#2010H;设置要访问的地址
MOVXA,@DPTR;读取2010H中数据
MOVDPTR,#2020H;设置要访问的地址
MOVX@DPTR,A;将A中数据写入2020H中
3、查表指令MOVC
表格:
程序存储器除存放程序外,还可存放一些常数,这种数据的结构称为表格。
访问:
通过两条程序存储器取数指令,即查表指令来访问,
完成从ROM中读数,并只能送累加器A。
指令格式:
MOVCA,@A+DPTR;(A)←((A)+(DPTR))
MOVCA,@A+PC;(PC)←(PC)+1,
;(A)←((A)+(PC))
特点:
单字节指令,源操作数为变址寻址,执行时,PSEN会自动有效。
功能:
以DPTR、PC为基地址,与A中的8位无符号数相加,得到一个新16位地址,将其内容送A。
(1)用DPTR作为基寄存器
例3-4:
设外部ROM的2000H单元开始的连续10个字节中已存放有0~9的平方数,要求根据A中的内容(0~9)来查找对应的平方值。
START:
MOVA,#3
MOVDPTR,#TABLE
MOVCA,@A+DPTR;查表
…
ORG2000H↙2003单元内容
TABLE:
DB0,1,4,9,16,25,36,49,64,81
结果:
(A)←(2003H),(A)=09H
特点:
可访问整个ROM的64KB空间,表格可放在ROM的任何位置,与MOVC指令无必然的关系。
(2)用PC作为基寄存器
例3-5:
ORG1000H
1000HMOVA,#30H;
1002HMOVCA,@A+PC;
结果是:
(A)←(1033H)
缺点:
(1)表格只能存放在查表指令以下的256个单元内。
(2)当表格首地址与本指令间有其他指令时,须用调整偏移量,调整量为下一条指令的起始地址到表格首址之间的字节数。
例3-6:
阅读下列程序,给出运行结果,设(A)=3。
1000HADDA,#02H;加调整量
1002HMOVCA,@A+PC;查表
1003HNOP
1004HNOP
1005HTAB:
DB66,77,88H,99H,‘W’,‘10’
结果:
(A)=99H,显然,2条NOP指令没有时,不需调整。
4、堆栈操作
堆栈,由特殊功能寄存器SP(81H)管理,始终指向其栈顶
位置,栈底视需要设在内部RAM低128B内。
(1)进栈操作:
PUSHdirect
功能:
先(SP)←(SP)+1,再((SP))←(direct);
其中:
direct为源操作数;目的操作数为@SP,隐含。
例3-7:
已知:
(A)=30H,(B)=70H
执行:
MOVSP,#60H;设栈底
PUSHACC;
PUSHB
结果:
(61H)=30H,(62H)=70H,(SP)=62H
(2)出栈操作:
POPdirect
功能:
先(direct)←((SP)),再SP←(SP)-1
其中:
direct为目的操作数,源操作数为@SP,隐含。
例3-8:
已知:
(SP)=62H,(62H)=70H,(61H)=30H
执行:
POPDPH
POPDPL
结果:
(DPTR)=7030H,(SP)=60H
5、与A的数据交换指令
数据交换指令共5条,完成累加器和内部RAM单
元之间的字节或半字节交换。
(1)整字节交换:
XCHA,Rn;(A)←→(Rn)
XCHA,direct;(A)←→(direct)
XCHA,@Ri;(A)←→((Ri))
(2)半字节交换:
XCHDA,@Ri;(A)0~3←→((Ri))0~3
(3)累加器自身高低4位交换
SWAPA;(A)7~4←→(A)3~0
例3-9设(A)=57H,(20H)=68H,(R0)=30H,(30H)=39H,求下列指令的执行结果
(1)XCHA,20H;
结果:
(A)=68H,(20H)=57H
(2)XCHA,@R0;
结果:
(A)=39H,(30H)=57H
(3)XCHA,R0;
结果:
(A)=30H,(R0)=57H
(4)XCHDA,@R0;
结果:
(A)=59H,(30H)=37H)
(5)SWAPA;
结果:
(A)=75H
例3-10:
设内部RAM40H、41H
单元中连续存放有4个压缩的
BCD码数据,试编程序将这4
个BCD码倒序排列。
分析:
流程如右图
程序如下:
MOVA,41H
SWAPA
XCHA,40H
SWAPA
MOV41H,A
二、算术运算指令
包括+、-、×、÷、加1、减1、十进制调整指令,共有24条,一般影响PSW中的CY、AC、OV、P标志位。
1、加减法指令(12条)
(1)指令助记符:
ADD+
ADDC带C+
SUBB带C-
(2)操作数:
如右图,
以A为目的操作数
(3)指令描述举例:
不带进位加法ADD4条
ADDA,Rn;(A)←(A)+(Rn)
带进位加法指令ADDC4条
ADDCA,direct;(A)←(A)+(direct)+(CY)
带进位减法指令SUBB4条
SUBBA,@Ri;(A)←(A)-((Ri))-(CY)
SUBBA,#data;(A)←(A)-#data-(CY)
例3-11:
设(A)=D3H,(30H)=E8H
执行:
ADDA,30H
11010011(D3)(—45)补无符号数211
+)11101000(E8)(—24)补232
110111011
结果:
CY=1,AC=0,P=0,OV=0,(A)=BBH(补码真值-69,正确)
例3-12:
设(A)=88H,(30H)=99H,CY=1
执行:
ADDCA,30H
10001000(88H)(-78)补
10011001(99H)(-67)补
+)1
100100010
结果:
CY=1,AC=1,P=0,OV=1,(A)=22H(真值34,不正确)
例3-13:
设(A)=49H,CY=1,
执行:
SUBBA,#54H
01001001(49H)
01010100(54H)
-)1
11110100(借位1)
结果:
CY=1,AC=0,P=1,OV=0,(A)=F4H(真值-12,正确)
例3-14:
试编制4位十六进制数加法程序,假定和数超过双字节(21H20H)+(31H30H)→42H41H40H
分析:
先低字节作不带进位求和,再作带进位高字节求和。
流程图(略),程序如下:
MAIN:
MOVA,20H
ADDA,30H
MOV40H,A
MOVA,21H
ADDCA,31H;带低字节进位加法
MOV41H,A
MOVA,#00H;准备处理最高位
MOVACC.0,C
MOV42H,A
SJMP$
2、加1减1指令
助记符:
INC,DEC
操作数:
A,direct,@Ri,Rn,DPTR
指令描述:
(不影响PSW,即使有进位或借位,CY也不变,除A影响P标志)
(1)INC:
加15条
INCA;(A)←(A)+1
INCRn;(Rn)←(Rn)+1
INC@Ri;((Ri))←((Ri))+1
INCdirect;(direct)←(direct)+1
INCDPTR;(DPTR)←(DPTR)+1
(2)DEC:
减14条
DECA;(A)←(A)—1
DECRn;(Rn)←(Rn)—1
DEC@Ri;((Ri))←((Ri))—1
DECdirect;(direct)←(direct)
例3-15:
编制下列减法程序,要求:
(31H30H)—(41H40H)→31H30H
分析:
流程图(略),程序如下:
MAIN:
CLRC;CY清零
MOVR0,#30H
MOVR1,#40H
MOVA,@R0
SUBBA,@R1
MOV@R0,A;存低字节
INCR0;指向31H
INCR1;指向41H
MOVA,@R0
SUBBA,@R1
MOV@R0,A;存高字节
HERE:
SJMPHERE
3、十进制调整指令
格式:
DAA
指令用于两个BCD码加法运算的加6修正,只影响CY位。
指令的使用条件:
(1)只能紧跟在加法指令(ADD/ADDC)后进行
(2)两个加数必须已经是BCD码
(3)只能对累加器A中结果进行调整加6修正的依据:
由CPU判CY、AC是否=1?
A中
的高、低4位是否大于9?
例如:
(A)=56H,(R5)=67H,(BCD码)执行:
ADDA,R5
DAA
结果:
(A)=23H,(CY)=1
例3-16:
试编制十进制数加法程序(单字节BCD加法),假定和数为单字节,要求:
(20H)+(21H)→22H
分析:
流程如右图
程序如下:
MOVR0,#20H
MOVA,@R0
INCR0
ADDA,@R0
DAA
INCR0
例3-17:
十进制减法程序(单字节BCD数减法)
要求:
(20H)—(21H)→22H
分析:
主要要考虑到,DAA只能对加法调整,故必须先化BCD减法为加法做,关键为求两位十进制减数的补码(9AH-减数)
流程如右图,程序如下:
CLRC
MOVR0,#20H
MOVR1,#21H
MOVA,#9AH
SUBBA,@R1;求补
ADDA,@R0;求差
DAA
INCR1
MOV@R1,A;存结果
MOV@R0,A
4、乘除法指令
唯一两条单字节4机器周期的指令。
(1)8位无符号数乘法指令
MULAB;(B15~8)(A7~0)←(A)×(B)
PSW:
1)若乘积大于255,OV=1;否则OV=0;
2)CY总是清“0”。
例如:
(A)=50H,(B)=A0H,执行MULAB后
结果:
(B)=32H,(A)=00H,(OV)=1
(2)8位无符号除法指令
DIVAB;(A)←(A/B)的(商)
;(B)←(A/B)的(余数)
PSW:
1)CY、OV,清“0”
2)若(B)=0,OV=1。
例如:
(A)=2AH,(B)=05H,执行DIVAB后
结果:
(A)=08H,(B)=02H,(OV)=0
例3-18:
双字节乘法程序,要求:
(R0R1)×(R2)→R3R4R5
分析:
设(R0)=J,(R1)=K,(R2)=L,则:
MOVA,R1JK
MOVB,R2×)L
MULABKL高KL低
MOVR5,A+)JL高JL低
MOVR4,BR3R4R5
MOVA,R0
MOVB,R2
MULAB
ADDA,R4
MOVR4,A
MOVA,B
ADDCA,#00H
MOVR3,A
例3-19:
编制将A中的数转换成三位BCD码程序,百位放在20H,十位、个位放在21H中。
分析:
(A)/100→商(百位)→(20H);
余数/10→商(十位)→(21H)7~4;
余数(个位)→(21H)3~0;
流程如右图,程序如下:
MOVB,#100
DIVAB
MOV20H,A
MOVA,B
MOVB,#10
DIVAB
SWAPA
ADDA,B
MOV21H,A
SJMP$
三、逻辑运算指令
逻辑运算类指令共24条,涉及A时,影响P标志。
1、基本与、或、异或运算指令
(1)指令助记符:
ANL、ORL、XRL
(2)操作数:
如下图
(3)指令描述举例:
逻辑“与”指令6条
ANLA,Rn;(A)←(A)∧(Rn)
ANLA,direct;(A)←(A)∧(direct)
逻辑“或”指令6条
ORLA,@Ri;(A)←(A)∨((Ri))
ORLA,#data;(A)←(A)∨data
逻辑“异或”指令6条
XRLdirect,A;(direct)←(direct)⊕(A)
XRLdirect,#data;(direct)←(direct)⊕data
当用于修改输出口(P0~P3)时,direct指口锁存器的内容而不是端口引脚电平。
2、对A简单逻辑指令
1)清零与取反
CLRA;清0
CPLA;求反
2)循环移位指令
RLA;
RLCA;
RRA;
RRCA;
例3-20:
按要求编程,完成下列各题:
1)选通工作寄存器组中0区为工作区。
2)利用移位指令实现累加器A的内容乘6。
3)将ACC的低4位送P1口的低4位,P1口的高4位不变。
例3-20解:
1)ANLPSW,#11100111B;PSW的D4、D3位为00
2)CLRC
RLCA;左移一位,相当于乘2
MOVR0,A
CLRC
RLCA;再乘2,即乘4
ADDA,R0;乘2+乘4=乘6
3)ANLA,#0FH;高4位屏蔽(清0)
ANLP1,#0F0H;P1低4位清0
ORLP1,A;(P1.3~1.0)←(A3~0)
例3-21:
设在外RAM2000H中放有两个BCD数,编程,使这两个BCD码分别存到2000H和2001H的低4位中。
分析:
流程如图
程序如下:
MOVDPTR,#2000H
MOVXA,@DPTR
MOVR0,A
ANLA,#0FH
MOVX@DPTR,A
MOVA,R0
ANLA,#0F0H
SWAPA
INCDPTR
MOVX@DPTR,A
四、位操作指令
布尔处理器C,可寻址内部RAM中的可寻址位bit=00~FFH,和SFR中的可寻址位。
位地址的描述形式:
(1)直接位地址,如MOCC,70H
(2)字节地址+位地址,如20H.1,ACC.4,PSW.4等
(3)位寄存器名称,如F0,C,RS1,RS0等
(4)伪指令定义过的位名称
注意:
Cy----直接地址,是位寻址;
C----位寄存器,为寄存器寻址。
例如:
CLRCy;机器码C2D7H
CLRC;机器码C3H
1、位传送指令
MOVC,bit
MOVbit,C
例如:
MOVC,06H
MOVP1.0,C
2、位变量修改指令
CLRC;(C)←0
CLRbit;(bit)←0
CPLC;(C)←()
CPLbit;(bit)←()
SETBC;(C)←1
SETBbit;(bit)←1
例如:
SETBP1.0
3、位变量逻缉“与”指令
ANLC,bit;(C)←(C)∧(bit)
ANLC,/bit;(C)←(C)∧()
例如:
设P1为输入口,P3为输出口,执行程序
MOVC,P1.0
ANLC,P1.1
ANLC,/P1.2
MOVP3.0,C
结果:
P3.0=P1.0∧P1.1∧/P1.2。
4、位变量逻缉“或”指令
ORLC,bit;(C)←(C)∨(bit)
ORLC,/bit;(C)←(C)∨()
例如:
设P1为输出口,执行下列程序,指出功能:
(1)MOVC,00H
ORLC,01H
MOVP1.7,C
(2)MOVP1,#00H
LOOP:
SETBP1.0
LCALLDELAY
CLRP1.0
LCALLDELAY
AJMPLOOP
(3)
LOOP:
SETBC
RLCA
MOVP1,A
LCALLDELAY
JNBACC.7,LOOP
例3-22将位地址40H、41H中的内容进行异或,结果存入42H中。
分析:
运算公式:
Y=A⊕B=
程序如下:
MOVC,41H
ANLC,/40H
MOV42H,C
MOVC,40H
ANLC,/41H
ORLC,42H
MOV42H,C
五、控制转移指令(22条)
1、无条件转移指令
无条件转移应用举例:
1)1030H:
AJMP100H;机器码为2100H
目的地址:
PC=1032H的高5位+100H的低11位
=00010+00100000000=1100H
2)0000H:
AJMP40H;程序转移到0040H
3)1100H:
SJMP21H;目标地址为1123H
4)1000H:
SJMPNEXT;目的地址NEXT=1020H
则:
相对地址rel=1EH(补码数)
5)0060H:
SJMPFEH;踏步指令
目的地址:
PC=(PC)+2+FEH
=0060H+2+FFFEH=0060H
6)0000H:
LJMP0030H;
例3-23:
执行下面的散转程序,程序将根据A中的内
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 32 指令系统