微机原理寻址方式

更新时间:2023-08-03 06:35:44 阅读: 评论:0

1、立即寻址
(immediate addressing )
双字节指令,第一个字节是操作码,第二个字节是操作数,操作数在指令中直接给出,故称为立即数。
在立即数前面必须加上前缀“#”。
如:MOV  DPTR,#1234H
    1234H是立即数,指令功能是把16位立即数1234H送到数据指针DPTR中,如图。
注意:
童谣有哪些立即寻址只能用于源操作数。
        MOV  A,#12H  (√)
        MOV  DPTR,#1200H  (√)
        MOV  #1200H,DPTR    (×)
2、直接寻址
(direct addressing)
在指令中直接给出操作数单元的地址。
如:MOV  A,3AH
    指令功能:把片内RAM中3AH单元内的数据传送给累加器A。如图所示:
直接寻址方式只能给出长发美女8位地址,限于片内RAM
(1)128单元,在指令中直接以单元地址形式给出。
(2)特殊功能寄存器,在指令中直接以单元地址形式给出,还可以寄存器符号形式给出。
          如:PUSH  DPH==PUSH 83H。
 
  直接寻址访问累加器A时,用ACC表示累加器,以便与寄存器寻址方式区别。
3、寄存器寻址
(register addressing)
在指令中将指定寄存器的内容作为操作数。
寄存器寻址方式中,用寄存器名表示寄存器
寻址范围:四组通用寄存器Rn(R0~R7)、部分专用寄存器( A, B, DPTR,)。
如:INC  R0
        指令功能:把寄存器R0的内容加1,再送回R0中。
4、寄存器间接寻址
(register indirect addressing )
在指令中给出的寄存器内容是操作数的地址,从该地址中取出的才是操作数。
在该寻址中,寄存器的名称前需加前缀“@”。
例如,指令MOV  A,@R0
        指令功能:若R0寄存器的内容是3AH,指令的功能是以3AH为地址,将3AH地址单元的内容送到累加器A中。如下图:
寄存器间接寻址的寻址范围:
(1)片内RAM的低128单元,只能采用R0或R1为间接寻址寄存器。其形式为@Ri(i=0,1),如MOV A,@R0。
(2)片外RAM的64KB单元,使用DPTR作为间接寻址寄存器。例如,MOVX  A,@DPTR。
(3)片外RAM的低256单元,使用R0或R1作为间接寻址寄存器。
(4)堆栈区:堆栈操作指令PUSH和POP,以SP作间接寻址寄存器(隐含SP)。
5、相对寻址
(relative addressing )
仅用于相对转移指令。
PC的当前值(即相对转移指令执行后PC的内容),加上指令中给出的偏移量,形成程序转移的目的地址,即
    目的地址=PC的当前值+偏移量
偏移量是一个8位二进制补码数,取值范围为-128~+127。
例如,指令JC  16H
(二字节指令,当标志位C=1时转移,C=0时不转移)
若进位位C=0,则PC=PC+2,即顺序往下;
若进位位C=1,则PC中的当前内容(PC+2),加上偏移量80H所得结果为该转移指令的目的地址,见下图:
6、变址寻址
(index addressing )
以DPTR或PC为基址寄存器,累加器A为变址寄存器,以两者内容相加后形成的16位地址作为操作数地址,即:
  操作数的有效地址=基址寄存器+变址寄存器
例如,MOVC A,@A+DPTR
    功能:把DPTR和A的内容相加后得到的程序存储器地址单元的内容送A。
变址方式常用于访问程序存储器的数据表,即查表指令。
3-2-3:已知片外ROM0302H单元有一常数X,现欲把它取到累加器A,请编写相应的程序.
根据变址寻址的 特点,基地址应取0300H,地址偏移量为02H.相应程序为:
      MOV    DPTR, #0300H
      MOV    A, #02H
      MOVC    A, @A+DPTR
飞字开头的成语7、位寻址
(bit addressing )
位寻址是指按位进行的寻址操作。
8051单片机中,操作数不仅可以按字节进行操作,也可以按位进行操作。把某一位作为操作数时,这个操作数的地址称为位地址。
位寻址区包括:
  1)内部RAM的位寻址区,地址范围是回族帽子20H~2FH,共16RAM单元,位地址为00H~7FH
  言为心声2)特殊功能寄存器SFR中有11个寄存器可以进行位寻址。
寻址位在指令中有以下4种表示方法:
(1)直接使用位地址表示。
(2)特殊功能寄存器符号加位数。例如PSW寄存器的第7位,可表示为:PSW.7。
(3)位名称表示方法,特殊功能寄存器中的一些寻址位是有名称的,如PSW寄存器第7位C标志位,则可使用C表示该位。
(4)用bit定义的有名字的位地址。如:
    L1  bit  PSW.7,用L1代替PSW.7
MCS-51的寻址方式(P46
课堂练习
P73:3.1第8小题
3.3  指令系统
          MCS-51单片机指令系统包括111条指令,按功能可以划分为以下5类:
1. 内部8位数据传送指令(15条)
内部8位数据传送指令共15条,主要用于MCS-51单片机内部RAM与寄存器之间的数据传送
指令基本格式:         
      MOV  <目的操作数>,<源操作数>
MOV指令在片内RAM的允许操作图
兰寿金鱼[课后习题1] 
  试编写把片内RAM 30H单元和40H单元中的内容进行交换的程序.
216位数据传送指令(1条)
格式:MOV  DPTR,#data 16
功能:把16位常数送入数据指针DPTR。其中,高位字节立即数送入DPH,低位字节
立即数送入DPL。唯一的16位立即数传送指令。
例如:MOV  DPTR,#1234H
          执行运行后:DPTR=1234H,DPH=12H,DPL=34H。
注意:
外部数据存储器传送操作
例题3-3-3:把外部数据存储器2040H单元中的数据传送到外部数据存储器2560H单元中去。
3-3-4:R0=30H30H=4AHA=28H,则执行下列指令后的结果为?
执行XCH  A,@R0后,
执行XCHD  A,@R0后,
执行SWAP  A后,
注意:
① 堆栈使用时一定先设堆栈指针,复位时SP=07H 。
② 堆栈遵循后进先出的原则安排数据。
③ 堆栈操作必须是字节操作,且只能直接寻址。   
    (√)PUSH/POP  ACC  或 PUSH/POP  0E0H
    (×)PUSH/POP  A
    (√)PUSH  00H
    (×)PUSH  R0
3.3.2  算术运算类指令
1)加法指令(4条)
指令格式: ADD A ,<src> 
    其中: <src>包括Rn@Ridirect#data
功能: A←A+ <src>
对标志位的影响:ADDPSW中的所有标志位均产生影响。
2)带进位的加法指令(4条)
指令格式: ADDC  A ,<src>
    其中: <src>包括Rn@Ridirect#data
功能: A←A+ <src> + Cy
对标志位的影响:ADDCPSW中的所有标志位均产生影响。
3)带借位的减法指令(4条)
指令格式: SUBB  A ,<src>
    其中: <src>包括Rn@Ridirect#data
功能: A←A <src> Cy
对标志位的影响:SUBBPSW中的所有标志位均产生影响。
加减法指令关系图
4)BCD码调整指令(1条)
5)1指令(5条)
6)1指令(4条)
1、无条件转移指令(4条)
临字成语LJMP    addr16                        ;addr16 → PC
转移范围:64KB程序存储器的任何单元。见下图:
AJMP addr11
          ;先PC+2 → PC, addr11 → PC10~0 , PC15~11不变
转移范围:含有下一条指令首地址的同一个2KB范围,即高5位地址相同;
SJMP    rel        ;先PC+2 → PC,后PC+ rel → PC;               
转移范围:-128~+127
对应rel值:00H~7FH(0~+127)
                  80H~FFH(-128~-1)
JMP    @A+DPTR              ;A+DPTR→ PC
转移范围:是以DPTR为首地址的256B。
脑力激荡
LCALL    addr16      ;PC+3→PC
                                  ;SP+1→SP, PC 0~7 →(SP)
                                  ;SP+1→SP, PC 8~15 →(SP)
                                  ;addr0~15→PC
说明:(1)该指令执行前PC值为下一条指令的首地址;
            (2)转移范围:整个程序存储空间,64KB范围。
3-3-13:设SP=5FH,符号地址“SUBRTN”指向5678H,分析下列指令的执行情况:
        地址        程序
      0123H      LCALL    SUBRTN
      0126H      ……..           
解:调用指令执行后,PC=0126H
      SP+1→SP=60H, PC 0~7 →(SP ),即 (60H)=26H,
      SP+1→SP=61H, PC 8~15 →(SP) ,即 (61H)=01H
      PC压栈保护后,5678H →PC,
      即新的PC值为5678H转去执行“SUBRTN”子程序。
①子程序返回指令
    RET              ;(SP)→PC 8~15 , SP -1→SP

本文发布于:2023-08-03 06:35:44,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1106265.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:指令   寄存器   地址   寻址
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图