例3-2:给出下列指令的执行结果,指出源操作数的寻址方式。 MOV 20H, #25H MOV 25H, #1OH MOV PI, #OCAH MOV RO, #20H MOV A, @RO MOV RI, A MOV B, Rl MOV aRl, Pl MOV P3, RI 结果: (20H)=25H,(25H)=10H (P1)=0CAH, (R0)=20H (A)=25H, (R1)=25H, (B)=10H, (25H)=0CAH,(P3)=25H
例3-2:给出下列指令的执行结果,指出源操作数的寻址方式。 MOV 20H, #25H MOV 25H, #10H MOV P1, #0CAH MOV R0, #20H MOV A, @R0 MOV R1, A MOV B, @R1 MOV @R1,P1 MOV P3, R1 结果: (20H)=25H, (25H)=10H, (P1)=0CAH, (R0)=20H, (A)=25H, (R1)=25H, (B)=10H, (25H)=0CAH, (P3)=25H
2、ACC与外部数据存储器(或扩展ⅣO口)传递数据MOVX AA aDPTR R ;均为单字节指令 aDPTR, A aRi, A 功能:A与外部RAM或扩展IO口数据的相互传送 说明: (1)用Ri进行间接时只能寻址256个单元(0000H~00FF), 当访问超过256个字节的外RAM空间时,需利用P2口确定 高8位地址(也称页地址),而用DPTR进行间址可访问 整个64KB空间 (2)在执行上述读、写外RAM指令时,P3.7(RD)、P3.6 (WR)会相应自动有效。 (3)可用作为扩展IO口的输入/输出指令
2、ACC与外部数据存储器(或扩展I/O口)传递数据MOVX MOVX A, @DPTR MOVX A, @Ri ;均为单字节指令 MOVX @DPTR, A MOVX @Ri,A 功能:A与外部RAM或扩展I/O口数据的相互传送。 说明: (1)用Ri进行间接时只能寻址256个单元(0000H~00FF), 当访问超过256个字节的外RAM空间时,需利用P2口确定 高8位地址(也称页地址),而用DPTR进行间址可访问 整个64KB空间。 (2)在执行上述读、写外RAM指令时,P3.7(RD)、P3.6 (WR)会相应自动有效。 (3)可用作为扩展I/O口的输入/输出指令
例3-3:将外RAM2010H中内容送 F2←#20H 外RAM2020单元中。 分析:读2010H中内容→A→写数据 「0←#0 →2020H中 A+( 流程如右图: R1+#0H 程序如下: MOVP2,#20H;输出高8位地址 ())←(A) MOV RO,#10H;置读低8位间接地址 MOVX A,@RO;读2010H中数据 MOVR1,#20H;置写低8位间接地址 MOVX@R1,A;将A中数据写入2020H中
例3-3:将外RAM 2010H中内容送 外RAM 2020单元中。 分析:读2010H中内容→A→写数据 →2020H中 流程如右图: 程序如下: MOV P2,#20H ;输出高8位地址 MOV R0,#10H ;置读低8位间接地址 MOVX A,@R0 ;读2010H中数据 MOV R1,#20H ;置写低8位间接地址 MOVX @R1,A ;将A中数据写入2020H中
3、查表指令MOVC 表格:程序存储器除存放程序外,还可存放一些常数,这种数 据的结构称为表格 访问:通过两条程序存储器取数指令,即查表指令来访问, 成从ROM中读数,并只能送累加器A。 指令格式: MOVC A,A+DPTR (A)+((A)+(DPtR)) MOVC A, OA+PC (PC)←(PC)+1,(A)←((A)+(PC)) 特点:单字节指令,源操作数为变址寻址,执行时,PSEN会 自动有效。 功能:以DPTR、PC为基地址,与A中的8位无符号数相加,得 到一个新16位地址,将其内容送A。 (1)用DPTR作为基寄存器
3、查表指令MOVC 表格:程序存储器除存放程序外,还可存放一些常数,这种数 据的结构称为表格。 访问:通过两条程序存储器取数指令,即查表指令来访问, 完成从ROM中读数,并只能送累加器A。 指令格式: MOVC A,@A+DPTR ;(A)←((A)+(DPTR)) MOVC A,@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: MOV A, #3 MOV DPTR, #TABLe MOVC A, aA+DPTR;查表 ORG2000H∠2003单元内容 TABLE:DB0,1,4,9,16,25,36,49,64,81 结果:A←(2003H),(A)=09H 特点:可访问整个ROM的64KB空间,表格可放在 ROM的任何位置,与MOVC指令无必然的关系
例3-4:设外部ROM的2000H单元开始的连续10个字 节中已存放有0~9的平方数,要求根据A中的 内容(0~9)来查找对应的平方值。 START: MOV A, #3 MOV DPTR, #TABLE MOVC A, @A+DPTR ;查表 … ORG 2000H ↙2003单元内容 TABLE:DB 0,1,4,9,16,25,36,49,64,81 结果:A ←(2003H),(A)=09H 特点:可访问整个ROM的64KB空间,表格可放在 ROM的任何位置,与MOVC指令无必然的关系