接下来就给学生介绍寻址方式分类,同时与现实生活中某些事件
作类比,我就我们要给某一位朋友寄快递或信件为例来说明。
如果我们知道这位朋友的地址,在信件上直接写上地址交给快递
公司就可以了。这就是直接寻址
如MOV A,30H; 将30H 地址里的内容传送给累加器A(这不是立即数吗?,应该是:MOV A,[30H]吧)
如果这位朋友是个名人,或在有名气的单位工作,那我们可只写
其单位名称和收件人,也能寄到。这就是寄存器寻址
如MOV A,R5;将工作寄存器R5 中的内容传送到A
单片机内部的工作寄存器是大家熟知的寄存器,A、B、PSW 等也
是常用的寄存器,就不用写地址而仅写寄存器名字就可以。
如果那位朋友不是名人,但地址也不详细,就只有请你认识的人
转交。
这就是间接寻址
如MOV A,@R 将R0;
假设我们想访问某单元,却又给不出该单元的地址,而是把该单
元的地址放在R0 中,让系统先通过R0 去读取该单元的地址,再用读
到的地址去访问该单元。这就是间接寻址。这种寻址的一个主要用途,
是用来对一组数据进行相同或相似的操作。我们只需要把该组单元的
首地址(或尾地址)送到地址指针中,当然并不是所有的单元都能担当
地址指针的职责,在51 单片机中,只能通过R0、R1 或DPTR 寄存器
来作地址指针。
如果该朋友地址没有具体门牌号,可在快递信封上写:某某大楼
向前500 米超市旁。这就是变址寻址
如MOV A,@A+DPTR
MOV A,@A+PC
如果我们可以每天碰到这位朋友,可见面直接将东西给他,也不
用写地址了。这就地立即寻址
作类比,我就我们要给某一位朋友寄快递或信件为例来说明。
如果我们知道这位朋友的地址,在信件上直接写上地址交给快递
公司就可以了。这就是直接寻址
如MOV A,30H; 将30H 地址里的内容传送给累加器A(这不是立即数吗?,应该是:MOV A,[30H]吧)
如果这位朋友是个名人,或在有名气的单位工作,那我们可只写
其单位名称和收件人,也能寄到。这就是寄存器寻址
如MOV A,R5;将工作寄存器R5 中的内容传送到A
单片机内部的工作寄存器是大家熟知的寄存器,A、B、PSW 等也
是常用的寄存器,就不用写地址而仅写寄存器名字就可以。
如果那位朋友不是名人,但地址也不详细,就只有请你认识的人
转交。
这就是间接寻址
如MOV A,@R 将R0;
假设我们想访问某单元,却又给不出该单元的地址,而是把该单
元的地址放在R0 中,让系统先通过R0 去读取该单元的地址,再用读
到的地址去访问该单元。这就是间接寻址。这种寻址的一个主要用途,
是用来对一组数据进行相同或相似的操作。我们只需要把该组单元的
首地址(或尾地址)送到地址指针中,当然并不是所有的单元都能担当
地址指针的职责,在51 单片机中,只能通过R0、R1 或DPTR 寄存器
来作地址指针。
如果该朋友地址没有具体门牌号,可在快递信封上写:某某大楼
向前500 米超市旁。这就是变址寻址
如MOV A,@A+DPTR
MOV A,@A+PC
如果我们可以每天碰到这位朋友,可见面直接将东西给他,也不
用写地址了。这就地立即寻址
MOV A,#78H