说明: 1.一条指令中不能同时出现两个工作寄存器: 非法指令:MOVR1,R2 Mov R2, @RO 2.间址寄存器只能使用R0、R1。 非法指令:MoVA,@R2 3.SFR区只能直接寻址,不能用寄存器间接寻址 非法指令:MOVR0,#80H MOV A, @RO 4.指令表:B:指令字节数,M:机器周期数 只有指令表中的指令才有对应指令代码,计算机才 能执行。编程时,不能随意创造发明指令
说明: 只有指令表中的指令才有对应指令代码,计算机才 能执行。编程时,不能随意创造发明指令。 1. 一条指令中不能同时出现两个工作寄存器: 非法指令:MOV R1,R2 MOV R2,@R0 2. 间址寄存器只能使用 R0、R1。 非法指令:MOV A,@R2 3. SFR区只能直接寻址,不能用寄存器间接寻址。 非法指令:MOV R0,#80H MOV A,@R0 4. 指令表:B:指令字节数,M:机器周期数
(二)外部传送指令 实现片外数据存储器和A累加器之间的数据传送。 指令格式:MWX目的操作数,源操作数 寻址方式:片外数据存储器用寄存器间址方式。 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
(二) 外部传送指令 实现片外数据存储器和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
例3-4-2: 实现片外数据存储器数据传送(2000→>(2100H)。 MOV DPTR,#2000H DPTR= 2000H MOVX A, @DPTR ;A=Ⅹ MOV DPTR, #2100H DPTRE 2100H MOVX @DPTR, A ;(2100H=X 片外RAM 片外数据存储器不能直接 地址内容寻址。下列为非法指令: DPTR→ 2000H MOVX A, 2000H DPTR→ 2l00H MOVX2100H,2000H 思考题:为什么对DPTR的数据传送使用内部传送指令? 习题3:将片外RAM0000单元的数据传送到片内RAM的 60H单元
例3-4-2: 实现片外数据存储器数据传送(2000H)→(2100H)。 MOV DPTR,#2000H MOVX A,@DPTR MOV DPTR,#2100H MOVX @DPTR,A 片外 RAM 地址 内容 2000H X … DPTR→ 2100H 片外 RAM 地址 内容 2000H X … DPTR→ 2100H X 习题3:将片外RAM 0000H单元的数据传送到片内RAM的 60H单元。 ; DPTR= 2000H ; A= X ; DPTR= 2100H ;(2100H)= X 片外数据存储器不能直接 寻址。下列为非法指令: MOVX A,2000H MOVX 2100H,2000H 思考题:为什么对DPTR的数据传送使用内部传送指令?
(三)交换指令 实现片内RAM区的数据双向传送。 片内RAM 地址内容 1.字节交换指令 2BH 35H XCH A, Rn: A<> Rn 2AH 29H XCH A, @Ri; A< >(Ri) 20H XCH A, n A(n) 例:设A=29H,执行指令XCHA,2AH后,A=38H (2AH)=29H 习题4:将片内RAM6OH单元与61H单元的数据交换 XCH 60H, 61H ←对吗?
(三) 交换指令 实现片内RAM区的数据双向传送。 1. 字节交换指令 XCH A,Rn ;A Rn XCH A,@Ri;A (Ri) XCH A,n ;A (n) 片内 RAM 地址 内容 2BH 35H 2AH 38H … 20H 习题4:将片内RAM60H单元与61H单元的数据交换。 例:设A= 29H,执行指令 XCH A,2AH后,A= ? (2AH)= ? 38H 29H XCH 60H,61H ←对吗? 29 H
2.半字节交换指令 片内RAM 地址内容 XCHD A,@Ri;A-3(Ri)。-3R1→B3H R0→→ 2AH 38H SWAP A 4~7 匚20H83H 例803:将片内RAM2AH和2BH单元中的 ASCI码转换成压缩式BCD码存入20H单元。 单字节BCD RQH爱#旺[压缩式BCD码]00016 千位百位 0000百位 A000000d06H 十位个位 0000十位 0000个位 习题:交换片内RAM40H单元和41H单元的低半字节
2. 半字节交换指令 XCHD A,@Ri ;A0~3 (Ri)0~3 SWAP A ;A4~7 例3 A -0~4-33:将片内RAM 2AH和2BH单元中的 ASCII码转换成压缩式BCD码存入20H单元。 压缩式BCD码 千位 百位 A 10000101 00000000 10000000 00001000 08850H 十位 个位 MOV AR0 MOV 1 XCHD A SWAP A XCH A,,,#0@R10 #2AHB 20H 00000000 00H 片内 RAM 地址 内容 2BH 35H 2AH 38H … 20H 85H R1→ R0→ 单字节 BCD 0000 千位 0000 百位 0000 十位 0000 个位 习题:交换片内RAM 40H单元和 41H单元的低半字节