3、程序存储器向累加器A传送指令一MOVc( ◇ MOVC A,@A+PC ◇ MOVC A,aA+DPTR ◆以DPTR作为基址寄存器时,由于DPTR的内容可赋 不同的值,使得该指令应用范围较为广泛,表格常 数可设置在64KB程序存储器的任何地址空间。 ◆其缺点是,若DPTR已有它用,在赋表首地址之前 必须保护现场,执行完查表后再予以恢复。 419:12:57
3、程序存储器向累加器A传送指令——MOVC MOVC A , @A+PC MOVC A , @A+DPTR 以DPTR作为基址寄存器时,由于DPTR的内容可赋 不同的值,使得该指令应用范围较为广泛,表格常 数可设置在64KB程序存储器的任何地址空间。 其缺点是,若DPTR已有它用,在赋表首地址之前 必须保护现场,执行完查表后再予以恢复。 24 19:12:57
3、程序存储器向累加器A传送指令一MOVc( 【例4-2】试编制根据累加器A中的数(0~9之间)查其平 方表的子程序。 解:程序代码如下: COUNT: PUSH DPH PUSH DPL ;保护DPTR内容 MOV DPTR,#ABLE;赋表首址→DPTR MOCA,@A+DPTR;据A中内容查表 POP DPL POP DPH 恢复DPTR原内容 RET 返回 TABLE:DB00,01,04,09,16,25,36,49,64,81 519:12:57
3、程序存储器向累加器A传送指令——MOVC 【例4-2】 试编制根据累加器A中的数(0~9之间)查其平 方表的子程序。 解:程序代码如下: COUNT: PUSH DPH PUSH DPL ;保护DPTR内容 MOV DPTR , #TABLE ;赋表首址→DPTR MOVC A , @A+DPTR ;据A中内容查表 POP DPL POP DPH ;恢复DPTR原内容 RET ;返回 TABLE: DB 00, 01, 04, 09, 16, 25, 36, 49, 64, 81 25 19:12:57
4.51.2数据交换指令(5条) 包括字节交换指令和半字节交换指令。 1、字节交换指令(3条) XCHA,addr8:A←→(addr8) XCHA,aRi;A←→(Ri) XCHA,Rn;A←-→Rn 上述指令把累加器A中内容与第二操作数所指定的工作 寄存器、间接寻址或直接寻址的单元内容互相交换。 ◇例如,设R0=20H,A=3FH,(20H=75H, 执行指令XCHA,aR0 ;执行结果A=75H,(20H)=3FH 2619:12:57
4.5.1.2 数据交换指令 (5条) 包括字节交换指令和半字节交换指令。 1、字节交换指令 (3条) XCH A, addr8 ;A←→(addr8) XCH A, @Ri ;A←→(Ri) XCH A, Rn ;A←→Rn 上述指令把累加器A中内容与第二操作数所指定的工作 寄存器、间接寻址或直接寻址的单元内容互相交换。 26 19:12:57 例如,设R0=20H,A=3FH,(20H)=75H, 执行指令 XCH A, @R0 ;执行结果A=75H,(20H)=3FH
4.5.1.2数据交换指令 2、半字节交换指令(2条)只有寄存器间接寻址@Ri XCHD A,@Ri;A3-0←→(Ri)3-0 指令把累加器A的低4位和寄存器间接寻址的内部RAM 单元的低4位交换,高4位内容不变,不影响标志位。 ◇例如:设A=69H(01101001),R1=30H,内部RAM中 30H的内容:(30H)=87H(1000011),指令 XCHD A,@R1;只有寄存器间接寻址 ;执行结果:A=67H,(30H)=89H SWAP A;A0~3<=>A4~7(高低两半字节交换 D7 D4D3 DO 高4位「低4位」 2719:1257 t交换↑
4.5.1.2 数据交换指令 2、半字节交换指令 (2条) XCHD A, @Ri ;A3~0←→ (Ri) 3~0 指令把累加器A的低4位和寄存器间接寻址的内部RAM 单元的低4位交换, 高4位内容不变, 不影响标志位。 例如: 设A=69H (0110 1001),R1=30H,内部RAM中 30H的内容: (30H) =87H(1000 0111),指令 XCHD A, @R1 ;只有寄存器间接寻址 ; 执行结果:A=67H,(30H)=89H 27 19:12:57 SWAP A ; A0~3 <=> A4~7(高低两半字节交换) 只有寄存器间接寻址@Ri ←A
4.51.3栈操作指令(2条) ◇栈的作用—保护断点,保护现场 ◆主程序调用子程序或中断处理过程时,分别要保存 返回地址即断点地址和保护现场,以便在返回时能 够回到调用前的程序段,继续运行原来的程序。 例: LCALL COUNT;表示调用 COUNT子程序 MOV A#23H ◇现场保护和恢复 ◆保护现场:进入子程序或中断处理程序后要保护所 用到的通用寄存器的值 ◆恢复现场:子程序返回或中断处理返回前,还要能 够恢复这些寄存器的值 19:12:57
4.5.1.3 栈操作指令 (2条) 栈的作用——保护断点, 保护现场 主程序调用子程序或中断处理过程时,分别要保存 返回地址即断点地址和保护现场,以便在返回时能 够回到调用前的程序段,继续运行原来的程序。 28 19:12:57 现场保护和恢复 保护现场:进入子程序或中断处理程序后要保护所 用到的通用寄存器的值。 恢复现场:子程序返回或中断处理返回前,还要能 够恢复这些寄存器的值 例:LCALL COUNT ;表示调用COUNT子程序 MOV A, #23H