变址寻址(P47) 也称为:基址寄存器+变址寄存器间接寻址 以16位的地址指针寄存器DPTR或16位的PC寄存 器为基址寄存,以加器A为变址寄存器,两者 中的“内容”形成一个16位的“地址”,该“地址 所指的存储单元中的内容才是操作数。 P47例:[设:A中已存有#A4H,DPTR中已存有 #1234H] MOVC A, @A+DPTR: (A)+((A)+DPTR)D) 操作:将A4H+1234H=12D8H单元中的数放进累 加器A 《单片微机原理及应用》教学课件 奔六瘳
《单片微机原理及应用》教学课件 变址寻址——(P.47) 也称为: 基址寄存器+变址寄存器间接寻址 以16位的地址指针寄存器DPTR或 16位的PC寄存 器为基址寄存器,以累加器 A 为变址寄存器,两者 中的“内容”形成一个16位的“地址”,该“地址” 所指的存储单元中的内容才是操作数。 P47例:[设:A中已 存有#A4H,DPTR中已存 有 #1234H] MOVC A,@A+DPTR;(A)←((A)+(DPTR)) 操作:将A4H+1234H=12D8H单元中的数放进累 加器A
相对寻址(P47) 当前PC值加上指令中规定的偏移量re,构成实际 的操作数地址 例: SJMP rel 操作:跳转到的目的地址=当前16位Pc值+rel 注意: 1)“当前PC值”指程序中下一条指令所在的首地 址 是一个16位数; 2)符号“re”表示“偏移量”,是一个带符号的单字 节棘28"地2标考 《单片微机原理及应用》教学课件 奔六瘳
《单片微机原理及应用》教学课件 相对寻址——(P.47) 当前PC值加上指令中规定的偏移量 rel,构成实际 的操作数地址 例: SJMP rel 操作:跳转到的目的地址 = 当前16位PC值 + rel 注意: 1)“当前PC值”指程序中下一条指令所在的首地 址, 是一个16位数; 2)符号“rel”表示“偏移量” ,是一个带符号的单字 节数在实际编程中 ,范围是:-128 , “—rel +127 ” 通常用标号代替 (80H—7FH)
位寻址(P48) 指令中直接给出了操作数所在的位地址 例:cLRP1.0;(P1.0)←0 SETB ACC7;(ACc7)←1 cPLc;(C)←NOT(C) 注意 1)位地址里的数据只可能是一个0或1 2)有的位地址十分明确如P10,ACC7等, 有的位地址则“不太明确”,如 [MoVA,17H:(A)←(17H),17H是字节地址] MOV ACO.0,17H:(AcC.0)←(17H)这里AcC0 是位地址所以该指令中的17H是22H单元的第7位 《单片微机原理及应用》教学课件 奔六瘳
《单片微机原理及应用》教学课件 位寻址——(P.48) 指令中直接给出了操作数所在的位地址。 例: CLR P1.0 ;(P1.0) ← 0 SETB ACC.7 ;(ACC.7)← 1 CPL C ;( C )← NOT( C ) 注意: 1)位地址里的数据只可能是一个 0 或 1 2)有的位地址十分明确,如 P1.0, ACC.7等, 有的位地址则“不太明确” ,如: [MOV A,17H ; (A)←(17H),17H是字节地址] MOV ACC.0,17H ;(ACC.0)←(17H),这里ACC.0 是位地址所以该指令中的17H是22H单元的第7位
片内RAM中有128个 位可按位寻址的位 D7 D6 D5 D4 D3 D2 D1 DO 位地址:00H—7FH 2FH 7F 7E 7D 7C 7B'7A 79 78 分布在:20H-2FH 单元; 位地址 ●另外,在SFR中还有 92个位可按位寻址 8H4746454443424140 总共 27HI3F3E3D3C3B3A3938 128 52子系列才有 26H3736353433323130 个可 的RAM区 按位 25I2F2E2D2C2B2A2928 寻址 80H 24H2726252423 22 2120 的位 23H IF IE ID IC IB 1A19 18 普通RAM区 2 22H1716151413121110 位寻址区 20F0E0D0C0B0A0908 工作寄存器区 20H0706050403020100 单元地址 《单片微机原理及应用》教学课件 奔六瘳
《单片微机原理及应用》教学课件 ⚫ 片内RAM中有128个 位可按位寻址的位, 位地址:00H—7FH 分布在:20H—2FH 单元; ⚫ 另外,在SFR中还有 92个位可按位寻址 00H 20H 2FH 7FH 1FH 30H 80H FFH 52子系列才有 的RAM区 普通RAM区 位寻址区 工作寄存器区 27H 22H 21H 20H 26H 24H 25H 23H 28H 07 06 05 04 03 02 01 00 0F 0E 0D 0C 0B 0A 09 08 17 16 15 14 13 12 11 10 1F 1E 1D 1C 1B 1A 19 18 27 26 25 24 23 22 21 20 2F 2E 2D 2C 2B 2A 29 28 37 36 35 34 33 32 31 30 3F 3E 3D 3C 3B 3A 39 38 47 46 45 44 43 42 41 40 2FH 7F 7E 7D 7C 7B 7A 79 78 位地址 总共 128 个可 按位 寻址 的位 单元地址 17 D7 D6 D5 D4 D3 D2 D1 D0
位寻址(P48) 指令中直接给出了操作数所在的位地址 例:CLRP1.0;(P1.0)←0 SETB ACO7;(AcC7←1 cPLc;(C)←NOT(c) 注意 1)位地址里的数据只可能是一个0或1 2)有的位地址十分明确如P1.,ACC7等 有的位地址则“丕太明确”,如 [MoVA,17H;(A)←(17H),17H是字节地址] MOV ACC.0,17H:(AcC.0)←(17H)这里AcC0 是位地址所以该指令中的17H是22H单元的第7位 《单片微机原理及应用》教学课件 奔六瘳
《单片微机原理及应用》教学课件 位寻址——(P.48) 指令中直接给出了操作数所在的位地址。 例: CLR P1.0 ;(P1.0) ← 0 SETB ACC.7 ;(ACC.7)← 1 CPL C ;( C )← NOT( C ) 注意: 1)位地址里的数据只可能是一个 0 或 1 2)有的位地址十分明确,如 P1.0, ACC.7等, 有的位地址则“不太明确” ,如: [MOV A,17H ; (A)←(17H),17H是字节地址] MOV ACC.0,17H ;(ACC.0)←(17H),这里ACC.0 是位地址所以该指令中的17H是22H单元的第7位