3.立即数寻址立即数寻址就是操作数在指令中直接给出,或者说指令操作码后面立即给出一字节或两字节操作数。指令中给出的操作数是立即数,立即数前加“#”号标志,以区别直接寻址中的直接地址。16位立即数传送指令“MOV√DPTR,#datal6”,其中#data16是一个16位立即数。MOVDPTR,#OFFOH
3. 立即数寻址 ▪ 立即数寻址就是操作数在指令中直接给出,或者说 指令操作码后面立即给出一字节或两字节操作数。 ▪ 指令中给出的操作数是立即数,立即数前加“#”号 标志,以区别直接寻址中的直接地址。 ▪ 16位立即数传送指令“MOV DPTR,#datal6” ,其 中#data16是一个16位立即数。 ▪ MOV DPTR,#0FF0H
4.寄存器间接寻址寄存器间接寻址是把指定寄存器的内容作为操作数地址,该地址所指定的单元内容作为操作数为了区分寄存器寻址和寄存器间接寻址,在寄存器间接寻址中,所用到的寄存器的前面要加间接寻址符“@”寄存器RO、R1和数据指针DPTR可以作为间接寻址寄存器。MOVXA,@RO
4. 寄存器间接寻址 ▪ 寄存器间接寻址是把指定寄存器的内容作为操作数 地址,该地址所指定的单元内容作为操作数。 ▪ 为了区分寄存器寻址和寄存器间接寻址,在寄存器 间接寻址中,所用到的寄存器的前面要加间接寻址 符“@” 。 ▪ 寄存器R0、R1和数据指针DPTR可以作为间接寻址寄 存器。 ▪ MOVX A,@R0
例如:寄存器RO内容为30OH,片内RAM3OH单元的内容为45H。解:指令“MOVA,RO"的功能是将RO的内容3OH传送给累加器A,指令执行结果是累加器A中的内容为30H。指令“MOVA,@RO"的功能是将RO的内容3OH作为操作数的地址,根据这一地址找到内部RAM3OH单元,将其内容45H传送至累加器A,指令执行结果是累加器A中内容为45H。RAM地址RO30H45H30H45H寄存器间接寻址示意图
寄存器间接寻址示意图 例如:寄存器R0内容为30H,片内RAM 30H单元的内容为 45H。 解:指令“MOV A,R0”的功能是将R0的内容30H传送给累 加器A,指令执行结果是累加器A中的内容为30H。 指令“MOV A,@R0”的功能是将R0的内容30H作为操 作数的地址,根据这一地址找到内部RAM 30H单元,将 其内容45H传送至累加器A,指令执行结果是累加器A中 内容为45H。 RAM R0 地址 45H 30H 30H A 45H
5,变址寻址(基址寄存器+变址寄存器间接寻址变址寻址是以DPTR或者PC作为基址寄存器其内容为基地址,以累加器A作为变址寄存器其内容为变址,并将两个寄存器内容也就是基址和变址相加,形成16位操作数地址。然后在程序存储器中找到该地址所对应的单元其内容即为操作数
5. 变址寻址(基址寄存器+变址寄存器间接寻址) ▪ 变址寻址是以DPTR或者PC作为基址寄存器, 其内容为基地址,以累加器A作为变址寄存器, 其内容为变址,并将两个寄存器内容也就是 基址和变址相加,形成16位操作数地址。然 后在程序存储器中找到该地址所对应的单元, 其内容即为操作数
例如:指令“MOVCA,@A+DPTR”是变址寻址变址寻址示意图解:假设DPTR的内容为2030H,累加器A的内容为12H。DPTRROM地址2030H该指令的功能是将2030H和12H相加,得到56H=2042HA2042H作为操作数地址12H在程序存储器中找到2042H单元,将其内容56H送至累加器A
变址寻址示意图 例如:指令“MOVC A, @A+DPTR”是变址寻址。 解: 假设DPTR 的内容为 2030H,累加器A的内容 为12H。 该指令的功能是将 2030H和12H相加,得到 2042H作为操作数地址, 在 程序 存储 器中找 到 2042H单元,将其内容 送至累加器A。 DPTR ROM + = 2042H 2030H 12H 56H 56H A A7 A0 地址