编辑: hgtbkwd | 2016-06-11 |
11010111 位寻址区
七、位寻址方式指令给出位地址.一位数据在存储器位寻址区. 例: MOV C,40H;
Cy(位地址40H) 设指令执行前 Cy=1,位地址40H存储器单元如图, 执行指令后, Cy= ? * MCS-51指令系统中共有111条指令,按功能可分为以下四大类:・ 数据传送类・ 算术操作类・ 逻辑操作类・ 控制转移类 3.3 指令的类型、字节和周期 * 3.4 数据传送指令 实现寄存器、存储器之间的数据传送.
1、内部传送指令:片内数据存储器数据传送.
2、外部传送指令:片外数据存储器数据传送.
3、交换指令: 片内数据存储器数据传送.
4、堆栈操作指令:片内数据存储器数据传送.
5、查表指令: 程序存储器数据传送. *
(一)内部传送指令:实现片内数据存储器中数据传送. 指令格式: MOV 目的操作数,源操作数 寻址方式:立即寻址、直接寻址、寄存器寻址、寄存器间址. MOV A,Rn ;
A←Rn,Rn=R0~R7 MOV A,direct ;
A←(direct),MOV A,@Ri ;
A←(Ri),Ri=R
0、R1MOV A,#data ;
A←dataMOV Rn,direct ;
Rn←(direct)MOV @Ri,direct ;
((Ri))←(direct)MOV direct1,direct2 ;
(direct1)←(direct2)MOV DPTR,#d1d2 ;
DPTR←d1d2 * 操作码 目的 源 操作内容 字节数 执行时间 MOV A, #datadirect@RiRn (A)←#data(A)←(data)(A)←((Ri))(A)←(Rn)
2211 1111 Rn, #datadirectA (Rn)←#data(Rn)←(data)(Rn)←(A)
221 121 Data, #dataAdirect@RiRn (data)←#data(data)←(A)(data)←(data)(data)←((Ri))(data)←(Rn)
32322 21221 @Ri, #datadirectA ((Ri))←#data((Ri))←(data)((RO)←(A)
221 121 * 例:顺序执行下列指令序列,求每一步执行结果. MOV A,#30HMOV 4FH,AMOV R0,#20HMOV @R0,4FHMOV 21H,20H ;
A= 30H;
(4FH)= 30H;
R0= 20H;
(20H)= 30H;
(21H)= 30H * 1. 一条指令中不能同时出现两个工作寄存器:非法指令:MOV R1,R2 MOV R2,@R0 2. 间址寄存器只能使用 R
0、R1. 非法指令: MOV A,@R2 3. SFR区只能直接寻址,不能用寄存器间接寻址.非法指令: MOV R0,#80H MOV A,@R0(以上指令的作用是将8052的内部RAM80H内容送A) *
(二)外部传送指令 实现片外数据存储器和A累加器之间的数据传送. 指令格式:MOVX 目的操作数,源操作数 寻址方式:片外数据存储器用寄存器间址方式. 1. DPTR作16位数据指针,寻址64KB片外RAM空间 MOVX A,@DPTR;
A←(DPTR) MOVX @DPTR,A;
(DPTR)←A 2. Ri作8位数据指针,寻址256B片外RAM空间 MOVX A,@Ri;
A←(Ri) MOVX @Ri,A ;
(Ri)←A * 例:实现片外数据存储器数据传送 (2000H)和(2100H). MOV DPTR,#2000HMOVX A,@DPTRMOV DPTR,#2100HMOVX @DPTR,A ;
DPTR= 2000H;
A= X;
DPTR= 2100H;
(2100H)= X 片外数据存储器不能直接寻址. 下列为非法指令: MOVX A,2000H MOVX 2100H,2000H *
(三) 查表指令 实现从程序存储器读取数据到A累加器,只能使用变址间接寻址方式.多用于查常数表程序,可直接求取常数表中的函数值. 1.DPTR为基址寄存器MOVCA,@A+DPTR ;
A?(A+DPTR) 查表范围为 64KB 程序存储器任意空间,称为远程查表指令 . 2. PC为基址寄存器MOVCA,@A+PC;
A?(A+PC) 常数表只能在查表指令后256B范围内. (PC内容为下一条指令的起始地址.) * 查表法求Y=X2.设X(0≤X≤15)在片内RAM的20H单元中,要求将查表求Y,存入片内RAM21H单元.1)ORG 1000HSQU:MOV DPTR,#TAB ;
确定表首地址(基地址)MOV A,20H ;
取X(偏移量)MOVC A,@A+DPTR;
查表求Y=X2MOV 21H,A ;
保存YRET ;
子程序结束…其它程序段ORG 3000H ;
常数表格首地址TAB:DB 00,01,04,09,…,225;
平方表 *