#指令系统

指令格式

指 令 通 常 由 指 令 操 作 码 和 指 令 操 作 数 两 部 分 组 成

指令描述符号

  • A:表示累加器A,而ACC则表示累加器A的地址。
  • Rn(n = 0~7):当前选中的工作寄存器组中寄存器R0~R7之一。
  • Ri(i = 0, 1):当前选中的工作寄存器组中的寄存器R0或R1。
  • @:间接寻址或变址寻址前缀。
  • data:8位立即数。
  • data16:16位立即数。
  • direct:片内低128个RAM单元地址及SFR地址。
  • addr11:11位目的地址。
  • addr16:16位目的地址。
  • rel:一个字节的补码表示的地址偏移量,范围为128~+127。
  • bit:位寻址空间中可寻址位的地址。
  • (X):表示X地址单元或寄存器中的内容。
  • ((X)):以X单元或寄存器中的内容作为地址所指定单元的内容。
  • /:位操作数的取反操作前缀,表示对该数位取反,但不影响该数位的原值。
  • →:数据传送方向,表示箭尾一侧的内容送入箭头所指向的单元中去。
  • :表示数据交换。

指令格式

  • 单字节指令/:只有操作码,无操作数,操作数隐含在操作码中。

  • 双字节指令/:一个字节表示操作码,另一个字节表示立即数或存放操作数的地址。

  • 三字节指令/:第一个字节表示操作码,后两个字节表示操作数或操作数地址。

  • 注释:

    • 单指令、一般格式为
      操作助记符 [操作数] [;注释]
    • 双指令、一般格式如下所示:
      操作助记符 [目的操作数][,源操作数][;注释]

寻址方式

不同的计算机其寻址方式不尽相同,一般来说,寻址方式越多,计算机功能就越强,灵活性也越大。51系列单片机共有7种寻址方式

立即寻址

指令编码中直接给出操作数的寻址方式称为立即寻址。

在这种寻址方式中,紧跟在操作码后面的操作数称为立即数。
立即数可以是一个字节,也可以是两个字节,立即数以前缀“#” 符号来标识。
MOV A,#03H


直接寻址

直接寻址是指操作数的地址直接在指令中给出的寻址方式。

该地址对应单元中的内容就是操作数,
直接的操作数单元地址用“direct”表示。

MOV A,3CH ;(3CH)→A


寄存器寻址

操作数存放在寄存器中的寻址方式称为寄存器寻址。

对于这种寻址方式,寻址的寄存器已隐含在指令的操作码中,寄存器用符号Rn表示。

指令译码其实是译码的是操作码

假设(R1) = 0FFH,
执行指令:MOV  A,R1  ; (R1)→A
结果:(A) = 0FFH

寄存器间接寻址

寄存器间接寻址是指操作数存放在以寄存器内容为地址的单元中。

寄存器中的内容不再是操作数,而是存放操作数的地址。

寄存器间接寻址用符号“@”表示。

​ (1)内部RAM低128单元,地址范围00H~7FH,用Ri(i = 0,1)或SP作为间址寄存器。
​ (2)与P2口锁存器配合使用,用Ri指示低8位地址,可寻址片外数据存储器或I/O的64KB区域。
​ (3)DPTR间接寻址寄存器,可寻址程序存储器或片外数据存储器(包括I/O口)各自的64KB区域。

 设(R0) = 60H,内部RAM (60H) = 50H,执行指令MOV  A,@R0    ;((R0))→A执行结果(A) = 50H。

####变址寻址

本寻址方式以DPTR或PC作为基址寄存器,以累加器A作为变址寄存器,以两者内容相加形成的16位地址作为目的地址进行寻址。

MOVC  A,@A+DPTR
MOVC  A,@A+PC
JMP   @A+DPTR

前两条指令称为查表指令,适用于读程序存储器中固定的数据。例如,将固定的、按一定顺序排列的表格存放在程序存储器中,在程序运行中由A的动态参量来确定读取对应的表格参数。

第3条为散转指令,A中内容为程序运行后的动态结果,可根据A中的不同内容,实现跳向不同程序入口的跳转。

设(A) = 0A4H,(DPTR) = 1234H,
程序存储区
(12D8H) = 3FH,
则执行指令MOVC  A,@A+DPTR后,
(A) = 3FH。




相对寻址方式

相对寻址用于跳转指令。本寻址方式是以该转移指令的地址(PC值)加上它的字节数,再加上相对偏移量(rel),形成新的转移目的地址,从而控制程序转移到该目的地址。

  • 目的地址 = 转移指令所在的地址 + 转移指令字节数 + rel
    其中,偏移量rel是一个字节的补码表示的带符号数, 其范围是-128~+127。

  • 因此,程序转移范围是以转移指令的下条指令首地址为基准地址,相对偏移在-128~+127单元之间。

假设指令SJMP  20H 存入2100H单元,
其机器码为80H 20H,
执行该指令后,程序将跳转到2122H单元取指令并执行


####位寻址方式

位寻址方式是指令中给出的操作数为位寻址区的位地址bit,

bit包括内部RAM的20H~2FH共16个单元的128位,以及某些 可以位寻址的特殊功能寄存器(单元地址能被8整除)的各位。

分析指令MOV  C,24H.0的执行结果。
该指令的机器码为A2H 20H,相当于MOV  C,20H,指令执行完成后Cy标志位为1


寻 址 方 式 就 是 CPU 在 指 令 中 寻 找 ( 确 定 ) 操 作 数 位 置 ( 地 址 ) 的 方 式 ( 或 寻 找 ( 确 定 )
转 移 的 目 标 地 址 的 方 式 ) 。
根 据 操 作 数 的 性 质 , 寻 址 方 式 分 为 数 据 寻 址 方 式 和 地 址 寻 址 方 式 。
根 据 操 作 数 的 位 置 , 寻 址 方 式 分 为 立 即 数 寻 址 方 式 、 寄 存 器 寻 址 方 式 、 存 储 器 寻 址 方 式 和 I/ O寻 址 方 式 。

算术运算类指令

加法指令

(1)不带进位加法指令ADD(4条)

ADD   A,Rn                   ;(A)+(Rn)→A,n = 0~7
ADD   A,direct       ;(A)+ (direct)→A
ADD   A,@Ri             ;(A)+((Ri))→A,i = 0,1
ADD   A,#data            ;(A)+#data→A

(2)带进位加法指令

ADDC  A,Rn            ;(A)+(Rn)+Cy→A,n = 0~7
ADDC  A,direct       ;(A)+(direct)+Cy→A
ADDC  A,@Ri         ;(A)+((Ri))+Cy→A,i = 0,1
ADDC  A,#data      ;(A)+#data+Cy→A

(3)加1指令(5条)

    INC   AINC   Rn          ;n = 0~7INC   direct   INC   @Ri        ;i = 0,1INC   DPTR

(4)十进制调整指令(1条)

     ```DA   A              ;调整A的内容为正确的BCD码```

减法指令

减法指令包括带借位减法指令和减1指令两类

(1)带借位减法指令(4条)

SUBB  A,Rn    ; (A) - (Rn) - Cy→A,n = 0~7
SUBB  A,direct   ; (A) - (direct) - Cy→A
SUBB  A,@Ri     ; (A) - ((Ri)) - Cy→A,i = 0,1
SUBB  A,#data    ; (A) - #data - Cy→A

(2)减1指令(4条)

DEC  A   ;(A) - 1→A
DEC  Rn         ;(Rn) - 1→Rn,n = 0~7
DEC  direct     ;(direct) - 1→direct
DEC  @Ri       ;((Ri)) - 1→(Ri),i = 0,1

####乘除运算指令
(1)乘法指令(1条)
MUL AB ;A×B→BA

(2)除法指令(1条)
DIV AB ;A÷B,商→A,余数→B

逻辑运算与移位指令

逻辑与指令
ANL  A,Rn        ;(A)∧(Rn)→A,n = 0~7
ANL  A,direct        ;(A)∧(direct)→A
ANL  A,#data     ;(A)∧#data→A
ANL  A,@Ri      ;(A)∧((Ri))→A,i = 0~1
ANL  direct,A        ;(direct)∧(A)→direct
ANL  direct,#data    ;(direct)∧#data→direct
逻辑或指令
ORL  A,Rn            ;(A)∨(Rn)→A,n = 0~7
ORL  A,direct        ;(A)∨(direct)→A
ORL  A,#data     ;(A)∨ #data→A
ORL  A,@Ri      ;(A)∨((Ri))→A,i = 0,1
ORL  direct,A        ;(direct)∨(A)→direct
ORL  direct,#data    ;(direct)∨#data→dire
逻辑异或指令
XRL  A,Rn        ;(A) (Rn)→A,n = 0~7
XRL  A,direct      ;(A)  (direct)→A
XRL  A,@Ri      ;(A)   ((Ri))→A,i = 0,1
XRL  A,#data     ;(A)  #data→A
XRL  direct,A        ;(direct)   (A)→direct
XRL  direct,#data ;(direct)  #data →direct

累加器“清零”及“取反”指令

​ (1)CLR A
​ 这条指令的功能是:将累加器A清“0”,不影响Cy、Ac和OV等标志。
​ (2)CPL A
​ 这条指令的功能是:将累加器A按位取反,不影响Cy、Ac和OV等标志。

####移位指令

  • 左环移指令
    RL A

  • 带进位左环移指令
    RLC A

  • 右环移指令
    RR A

  • 带进位右环移指令
    RRC A

  • 累加器半字节交换指令
    SWAP A

###控制转移类指令

无条件转移指令

长转移指令 LJMP addr16 ;addr16 → PC

短转移指令 AJMP addr11 ;(PC)+ 2→PC,addr11→PC10~0, PC15~11不变

相对转移指令 SJMP rel ;(PC)+2→PC,(PC)+ rel→PC

间接跳转指令(散转移指令)JMP @A+DPTR ;(PC)+1→PC,(A)+(DPTR)→PC

条件转移指令

(1)累加器A判零条件转移指令
JZ   rel        ;若(A) = 0,则PC+2+rel→PC;否则,PC+2→PC
JNZ  rel        ;若(A) ≠ 0,则PC+2+rel→PC;否则,PC+2→PC
(2)比较条件转移指令CJNE  A,direct,rel   ;若(A) ≠ (direct),则PC+3+rel→PC;否则,PC+3→PC
CJNE  A,#data,rel     ;若(A) ≠ data,则PC+3+rel→PC;否则,PC+3→PC
CJNE  Rn,#data,rel  ;若(Rn) ≠ data,则PC+3+rel→ PC;否则,PC+3→PC
CJNE  @Ri,#data,rel ;若((Ri)) ≠ data,则PC+3+rel→PC;否则,PC+3→PC
(3)减1条件转移指令
DJNZ  Rn,rel         ;(Rn)-1→Rn;若(Rn) ≠ 0,则PC+2+rel→PC;否则,PC+2→PC
DJNZ  direct,rel   ;(direct)-1→direct;若(direct) ≠ 0,则PC+3+rel→PC;否则,PC+3→PC

子程序调用及返回指令

 ① 长调用指令LCALL  addr16        ;(PC)+3→PC;(SP)+1→SP,PC7~0→(SP);(SP)+1→SP,PC15~8→(SP);addrl6→PC
② 绝对调用指令ACALL  addr11            ;(PC)+2→PC;(SP)+1→SP,PC7~0→(SP);(SP)+1→SP,PC15~8→(SP);addr11→PC10~0,PC15~11不变
RET      ;((SP))→PC15~8,(SP)-1→SP;((SP))→PC7~0,(SP)-1→SP

中断返回指令

RETI     ;((SP))→PC15~8,(SP)-1→SP;((SP))→PC7~0,(SP)-1→SP

###空操作指令
NOP ;(PC)+1→PC

位操作类指令

  • 位传送指令(2条)
    MOV C,bit ;(bit)→Cy
    MOV bit,C ;Cy→(bit)

  • 位置位/复位指令(4条)
    CLR C ;0→Cy
    CLR bit ;0→bit
    SETB C ;1→Cy
    SETB bit ;1→bit

  • 位运算指令

​ ANL C,bit ;(Cy) ∧ (bit) → Cy
​ ANL C,/bit ;(Cy) ∧
​ ORL C,bit ;(Cy) ∨ (bit) → Cy
​ ORL C,/bit ;(Cy) ∨

  • 位条件转移指令

    JC rel ;若Cy = 1,则(PC)+2+re→PC
    ;否则,(PC)+2→PC
    JNC rel ;若Cy = 0,则(PC)+2+re→PC
    ;否则,(PC)+2→PC
    JB bit,rel ;若(bit) = l,则(PC)+3+re→PC
    ;否则,(PC)+3→PC
    JNB bit,rel ;若(bit) = 0,则(PC)+3+re→PC
    ;否则,(PC)+3→PC
    JBC bit,rel ;若(bit) = 1,则(PC)+3+re→PC,0→bit
    ;否则,(PC)+3→PC

微机原理-04-指令系统相关推荐

  1. 微型计算机原理指令系统问题,微机原理复习题(指令系统).doc

    微机原理复习题(指令系统) <微机原理>复习题二 一.选择题 1.假设外部设备的状态字已经读入AL寄存器,其中最低位为"0",表示外部设备"忙", ...

  2. 微型计算机指令系统例题,微机原理复习题(指令系统)

    微机原理复习题(指令系统) <微机原理>复习题二 一.选择题 1.假设外部设备的状态字已经读入AL寄存器,其中最低位为"0",表示外部设备"忙", ...

  3. 内存中有两个4字节以压缩的bcd_高中对口计算机微机原理04第一二章测验

    原理第一.二章练习 一.选择题 1.下列四个不同进制的数中,数值最大的是__________ A. 1001001B B. 110 O C. 71D D. 4AH 2.下列四种不同数制表示的数值最小的 ...

  4. 微型计算机原理中LEA,微机原理lea指令什么意思_微机原理实训箱

    微机原理 8 关于指令系统 微机原理 8 关于指令系统 微机原理 数据传送指令 微机原理 数据传送指令 微机原理指令 解答 请帮我看看这几个指令设么意思 微机原理题目指令判断对错 int指令微机原理 ...

  5. 《微机原理及接口技术》第04章在线测试

    <微机原理及接口技术>第04章在线测试  <微机原理及接口技术>第04章在线测试 剩余时间: 59:55  答题须知:1.本卷满分20分.            2.答完题后, ...

  6. 微型计算机原理指令系统,微机原理与接口技术 指令系统.ppt

    微机原理与接口技术 指令系统 第4章 指令系统 4.1 寻址方式 4.2 8086指令系统 4.3 从80286到Pentium 系列微处理器的指令系统 第4章 指令系统 指令:计算机用以控制各个部件 ...

  7. 微机原理8086/8088——指令系统与寻址方式

    微机原理8086/8088概念系列 微机原理8086/8088--微型计算机组成 微机原理8086/8088--微处理器功能结构 微机原理8086/8088--内部寄存器 微机原理8086/8088- ...

  8. 河北专接本微机原理知识点04

    微机原理 第四章 汇编指令系统 一.8088/8086的寻址方式 立即数寻址方式 寄存器寻址方式 存储器寻址方式 直接寻址 寄存器间接寻址 寄存器相对寻址 基址变址寻址 相对基址变址 二.指令格式及功 ...

  9. 微型计算机电路试卷,微机原理试卷及答案2

    填空题: 1. 从功能上分,8086CPU由_______和_______两部分组成 执行部分EU,总线接口部分BIU 2. 8086CPU采用_______和_______两级存储器寻址方式 段地址 ...

  10. 微型计算机接口技术论文,(微机原理与接口技术课程论文.doc

    (微机原理与接口技术课程论文 <微机原理与接口技术> 论 文 学院: 班级: 姓名: 学号: 微机原理与接口技术论文 内容摘要: 微型计算机原理与接口技术是计算机科学与技术专业重要的专业基 ...

最新文章

  1. 工作之余如何提高个人技术水平
  2. mongodb studio 3t 破解无限使用脚本
  3. 鼠标划过表格行变色效果JS
  4. Keywords Search HDU - 2222(AC自动机模板)
  5. Linux下社交平台,Linux 启动
  6. Mybatis的resultMap自定义映射
  7. w3cSchool jquery学习
  8. 74LS138译码器的IP核设计
  9. MyBatis实现一对一,一对多关联查询
  10. 今日头条推荐算法原理
  11. uc手机浏览器 手机模拟_在PC上测试移动端网站和模拟手机浏览器的5大方法
  12. CTSCAPIOTHUPC2018颓废记
  13. ICMP重定向(ICMP redirect)实验分析
  14. FPGA数字信号处理(1)- AM调制的FPGA实现
  15. E. Tournament
  16. [CVE-2022-22965]Spring远程代码执行漏洞复现
  17. 运行时常量区-方法区
  18. The Triangle(数字三角形)
  19. 无法启动Outlook,无法打开Outlook…
  20. 不起眼的地推行业,有人在默默搞大钱

热门文章

  1. Kafka牛逼在哪里?
  2. From scikit-learn to Spark ML
  3. 快速了解矢量量化Vector-Quantized(VQ)及相应代码
  4. Sublime Text 4.0 4084 汉化版 — 代码编辑器
  5. 这一招可以让pdf整篇自动翻译,pdf翻译的方法分享
  6. fcpx插件:stupid raisins info pop for mac(27个信息和描述标题栏)
  7. 怎么解决localhost打不开
  8. 安全:金融信息化的命脉
  9. Qt图形视图框架详解-安晓辉-专题视频课程
  10. [C语言] 制作一个控制台的电子时钟