第3章指令系统
一、简答题
1. AT89C51共有几种寻址方式?举例说明每种寻址方式的特点。
答:寻址即寻找操作数的地址。AT89C51单片机指令系统共有7种寻址方式:
(1)立即寻址方式:所谓立即寻址就是操作数在指令中直接给出。为了与直接寻址指令中的直接地址相区别,在立即数前加“#”标志。立即寻址方式的寻址范围:RAM 0000H~FFFFH。
例如:MOV A,#56H ;单字节立即数56H送入A
MOV DPTR,#data16 ;双字节数data16送入DPTR
(2)直接寻址方式:指令中操作数直接以单元之地址的形式给出,称之为直接寻址。直接寻址的寻址范围是内RAM 00H~FFH。
例如:MOV A,40H ;设(40H)=3AH,则执行该条指令即将40H单元中的数据3AH送入累加器A。(3)寄存器寻址方式:把寄存器的内容作为操作数的寻址方式称为寄存器寻址。
寄存器寻址方式的寻址范围包括:①主要对象是通用寄存器R0~R7;②部分专用寄存器。如A、B寄存器以及DPTR等寄存器。例如:MOV A,R7 ;将寄存器R7中的内容送入A中。
(4)寄存器间接寻址:在寄存器寻址方式中,寄存器中存放的是操作数,而在寄存器间接寻址方式中,寄存器中存放的则是操作数的地址,即操作数是通过寄存器间接得到的,因此称之为寄存器间接寻址。寄存器间接寻址的寻址范围是:内RAM 00H~7FH,外RAM 0000H~FFFFH。
例如:MOV A,@R0 ;将R0中的内容为地址的那个单元的内容送入累加器A中。
(5)变址寻址方式:变址寻址是为访问程序存储器中的数据表格而设。AT89C51的变址寻址是以DPTR或PC 作基址寄存器,以累加器A作变址寄存器,并以两者内容相加形成16位地址作为操作数地址,以达到访问数据表格的目的。注意A中的数为无符号数。变址寻址方式的寻址范围是:ROM 0000H~FFFFH。
例如:MOVC A,@A+DPTR
MOVC A,@A+PC
(6)相对寻址方式:相对寻址方式是为解决程序转移而专门设置的,为转移指令所采用。在相对寻址的转移指令中,给出了地址偏移量(rel),把PC的当前值加上偏移量就构成了程序转移的目的地址。相对寻址方式的寻址范围是:ROM PC-128B~+127B。例如:SJMP 2AH ;PC←(PC)+2+2AH
(7)位寻址方式:位寻址方式的特点是在指令中直接给出操作数的位地址。其寻址范围为内RAM 20H~2FH (位地址00H~FFH)和SFR中的可寻址位。例如:MOVC C,3AH ;将位地址3AH的内容送进位位CY。2.AT89C51内部RAM低128个字节,特殊功能寄存器区、外部RAM分别有几种寻址方式?举例说明。答:AT89C51内部RAM低128字节可使用的寻址方式有:直接寻址、立即寻址、寄存器寻址、寄存器间址、位寻址。特殊功能寄存器区只能使用直接寻址方式。外部RAM也只有寄存器间接寻址一种方式。
例如:(1)内部RAM低128字节
立即寻址:MOV 20H,#50H
直接寻址:MOV A,40H
寄存器寻址:MOV A,R7 ;工作寄存器就是内部RAM低128字节的存储单元
寄存器间接寻址:MOV A,@R0
位寻址:MOV C,7FH ;位寻址区指的是片内RAM的20H~2FH区域
(2)特殊功能寄存器区
直接寻址:MOV A,P0 ;等价于MOV A,80H
(3)外部RAM
寄存器间址:MOVX A,@DPTR
3. 说明下列各条指令中目的操作数/源操作数的寻址方式
(1) ANL A,20H 寄存器/直接寻址
(2) ADDC A, #20H 寄存器/立即寻址
(3)MOV A,@R1 寄存器/寄存器间址
(4)MOV 30H, C 位寻址
(5) MOVC A,@A+DPTR 寄存器/变址寻址
(6)ADD A,40H 寄存器/直接 (7)PUSH ACC 直接 (8)MOV B,20H 寄存器/直接
(9)ANL P1,#35H 寄存器/立即 (10)MOV @R1,PSW 寄存器间址/寄存器
(11)MOVX @DPTR,A寄存器间址/寄存器
4.写出下列指令的寻址方式和功能。
(1)MOV A,#50H 解:立即寻址,功能是将立即数50H送至累加器A中。
(2)MOV A,R7 解:寄存器寻址,功能是将R7中的内容送至A中。
(3)MOV 30H,20H 解:直接寻址,将内RAM 20H单元的内容传送至内RAM 30H单元。
(4)MOVC A,@A+DPTR