单片机学习笔记4.汇编语言2.寻址方式

 1.立即数寻址/立即寻址

定义:直接给出指令的操作数;

eg.MOV   A, #28H    (其中#代表是立即数)

将16进制的立即数28H送入累加器A中。指令执行后将A中原来的数据覆盖掉,记作:A<-28H

执行过程如下图所示:假设指令存放的物理地址是0100H开始的地址;74H是操作码;

因为这里的累加器A是一个8位的寄存器,所以这里的立即数只能是8位数,并且只能是整数不能是小数。立即数只能作为源操作数,而且其位数要与目的操作数的位数一致

2.寄存器寻址

定义:指令所用的操作数在CPU的内部寄存器中,指令中的操作数用寄存器名来表示

eg.MOV   A, #45H 

其中,A是寄存器寻址,45H为立即数寻址

eg.INC R0      ;R0<-RO+1

R0为寄存器寻址

eg. MOV A,R1 

A和R1均为寄存器寻址

eg.MOV A,R1   ;A<-R1

INC R5      ;将寄存器R5中的内容加1再送回R5

其中源操作数的数据并不消失

3.直接寻址 

 定义:直接给出操作数所在存储器的地址 

 eg. MOV A,45H    ;将地址为45H的存储器单元中的内容取到累加器A中

其中A是寄存器寻址,45H是直接寻址

4.寄存器间接寻址 

定义:操作数所在的存储单元的有效地址在指定的寄存器中,指令给出的是存放这个地址的寄存器

 eg.MOV  A, @R0   ;将R0中的内容所表示的地址单元中的内容送A(将寄存器R0中的内容作为地址,然后让这个地址的内容取给累加器A)其中@是间接寻址用于区别寄存器寻址

5.变址寻址

定义:指令操作数指定一个存放变址基值的变址寄存器。变址寻址时,偏移量与变址基值相加,其结果作为操作数的地址。

1.用PC(程序计数器)作为基地址加上累加器A 的内容形成操作数的地址A+PC

eg.MOVC  A,@A+PC (其中MOVC表示从程序存储器中取数据)

eg.

该程序表示先将立即数2赋值给累加器A中,A的起始地址为0100,当执行到指令MOVC A,@A+PC时A=2,PC=0103H,因此,A+PC=0105H,  @A+PC表示把0105H作为地址,从这个地址指向的单元中取对应的数据送给A,所以结果就是将0105H中的64H送到了A中

2.通过DPTR(数据指针)作为基地址,加上累加器A 的内容形成操作数的地址A+DPTR

eg.

在该程序中TABLE作为标号,是一个表格的首地址,表格中存放的是0,1,2....的ascll码值。首先将02H的立即数赋值给A,然后把表格TABLE以立即数的形式送到DPTR中作为基地址,然后将基地址加上A的值。例如,若A中的值是02,就得到了TABLE+2的地址,然后通过MOVC A,@A+DPTR,将02的ascll码32H(TABLE+2的地址单元内容)送到A中,就实现了一个数字转ascll码的操作

6.相对寻址  

7.位寻址

eg.MOV  C,P1.0 ;将P1.0的状态送到C(PSW的CY位/布尔处理机)

eg. SETB 20H.6;将20H单元的第6位置1

eg. CLR   25H ;将25H位的内容清零

总结

指令的寻址方式就是寻找操作数以及寻找操作数的地址的方式

posted @ 2025-03-10 21:25  RaLi  阅读(1)  评论(0)    收藏  举报  来源