指令系统按功能分类可分为六大类:
数据传送指令、数据运算指令、逻辑运算和移位指令、字符串处理指令、控制转移指令、
处理器控制指令

一、数据传送指令

MOV
格式: MOV 目的, 源
将源操作数传送到目的操作数。
注意:IP寄存器不作为操作数。
立即数和CS寄存器不作为目的操作数。
两操作数不同时为储存单元和段寄存器。
16为立即数不可以直接被传送到DS寄存器中,必须经过AX过度。

PUSH
格式:PUSH 源
压栈

POP
格式:POP 目的
弹栈
注意:CS寄存器数据只可作为源操作数,不可作为目的操作数(只可出不可进)
立即数不作为堆栈指令操作数

XCHG
格式:XCHG 目的,源
目的和源操作数数据交换
注意:段寄存器不做操作数
不可两个存储单元直接交换

XLAT
格式:XLAT 转换表 或 XLAT
将一种代码转换为表中对应另一种代码。
使用步骤:
1建立一个表格
2将表格的起始偏移地址装入BX寄存器
3将要转换的数据相对于首元素的偏移量放入AL寄存器(既最多8位256字节)
4 执行XLAT后转换代码放入AL中

IN、OUT
格式:IN AC, 地址 OUT 地址, AC
AC:AX或AL(八位或16位累加器) 完成I/O端口与累加器直接的数传输
注意:当端口地址小于FFH(255)时直接给出,大于FFH时需放在DX寄存器中间接给出。

LEA
格式:LEA 目的,源
取有效地址指令,取源操作数地址偏移量。
注意:源操作数必须是储存单元,目的操作数必须时寄存器,但不能是段寄存器。
下面两条语句作用相等:
MOV AX, OFFSET TABLE
LEA AX, TABLE

二、算数运算指令

1.加法
ADD
格式:ADD 目的, 源
源+目的->目的

ADC
带进位的加法
格式:ADD 目的, 源
源+目的+CF->目的

注意:
• 源操作数:寄存器、存储器、⽴即数;
• 目的操作数:寄存器、存储器;
• 两个操作数不能同时为存储器;
• 两个操作数的类型必须相同。
• 一条带CF的加/减指令实际上涉及两个CF,参加加/减计算的是前一个字节计算后影响的CF,本次计算后影响的CF留下给下一字节计算。

ADC可用于多字节加法:
一、多字节加法程序流程图

二、程序

DATA SEGMENT                        ;数据段
DATA1 DB 4 DUP(?)
DATA2 DB 4 DUP(?)
DATA3 DB 5 DUP(?)
DATA ENDSCODE SEGMENT                        ;代码段
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AXMOV SI,OFFSET DATA1                 ;取地址
MOV DI,OFFSET DATA2
MOV BX,OFFSET DATA3
MOV CX,DATA2-DATA1
CLCNEXT:                               ;循环做加法
MOV AL,[SI]
ADC AL,[DI]
NOP
MOV [BX],ALINC SI
INC DI
INC BXLOOP NEXTMOV AL,0                           ;处理最后的进位
ADC AL,0
MOV [BX],AL
MOV AH,4CH
INT 21HCODE ENDS
END START

REF:http://www.cnblogs.com/BlueMountain-HaggenDazs/p/5031213.html

INC
格式:INC 目的
目的+1->目的

注意:
操作数不为立即数
不影响CF标志位
当操作数是存储单元时,必须说明数据类型
例:INC BYTE PTR[BX]
INC WORD PTR[BX]

2.减法
SUB减法
SBB 带借位的减法
DEC 减量指令
格式和注意同加法

NEG
取负指令
格式:NEG 目的
目的 <- -目的

CMP
比较指令
格式:CMP 目的, 源
结果不回送,仅反应在标志位上
CMP指令仅执行减法计算,不回送结果,所以目的操作数不变,但根据减计算的结果影响6个条件标志位,可用的操作数组合也与SUB等指令相同。

ZF标志位变化意义:
ZF = 1,则两个数字相等,ZF = 0,则不相等。

CF标志位意义:无符号数判断大小:
CF = 0,则被减数大于或等于减数,若CF 0 1,则相反。

OF,SF标志位意义:有符号数判断大小:

OF = 0, SF = 0,则被减数大于等于减数。
SF = 1,则被减数小于减数
OF = 1, SF = 0,则被减数大于减数
SF = 0,则被减数小于减数

OF和SF相同,被减数大于等于减数,OF和SF不同,被减数小于等于减数

三、逻辑运算和移位指令

1.逻辑运算指令
NOT
按位取反
格式:NOT 目的

下列指令的操作数的要求同算术运算类的指令,指令执⾏后,将CF和OF清零,⽽运算的结果体现在ZF、SF和PF上,源操作数不变。

AND
逻辑与指令
格式:AND 目的, 源
按位与
可用与取数据的某些位,取的位与1,其余置零与0.

OR
逻辑或
格式:OR 目的, 源
按位或
可用于取数据的某些位,取得或0,其余置1或1.

XOR
逻辑异或
保留位异或0,取反位异或1

TEST
格式:TEST 目的, 源
逻辑与操作,结果保存标志,但不回传。

2.算数逻辑移位指令
SAL/SHL
算数/逻辑左移指令
格式:SAL/SHL 目的, 计数值

注意:
当移位次数大于1时必须放在CL中。

SHR
逻辑右移指令
格式:SHR 目的, 计数值

特点:若⽬的操作数为⽆符号数,每移位⼀次,相当于⽬的操作数除以2,可以实现除法运算,但是会丢弃余数。

SAR
算数右移指令
格式:SAR 目的, 计数值

每移动一次,最高位保持不变。

四、控制转移类指令

1.JMP
无条件跳转指令 (等同于C语言中的GOTO指令)
格式:JMP 目的
根据转移的距离和寻址的方式分为四类
段内直接转移
段内间接转移
段间直接转移
段间间接转移

段内直接转移
目标地址由指令直接给出
例: JMP 0011H
JMP NEXT

段内间接转移
例:JMP AX
JMP WORD PTR[AX]

段间直接转移
例:JMP FAR PTR
段间间接转移
例:JMP DWORD PTR[BX]
实质:IP ← 远标号的偏移地址
CS ← 远标号的段地址

2.过程调用及返回指令
过程调用指令:CALL
返回指令: RET

调用类型:
近调用:被调用过程与CALL在同一代码段里
远调用:不在同一代码段里

格式:CALL 过程名
执行步骤:
(1)保存断点:将CALL指令的下一行指令的有效地址压入栈中。(近调用:压入IP,远调用:压入CS和IP)
(2)根据指令给出的地址找到子程序的入口。

调⽤⽅式:
段内直接调⽤
格式:CALL NEAR PTR ⽬标地址
段内间接调⽤
格式:CALL WORD PTR [SI]
段间直接调⽤
格式:CALL FAR PTR ⽬标地址
段间间接调⽤
格式:CALL DWORD PTR [SI]

RET
格式:RET
与CALL指令相对应,通常作为⼀个⼦程序的最后⼀条指令,执⾏时从栈中弹出返回地址,即:栈顶的内容被弹出到IP(或IP和CS),⽤以返回到调⽤这个⼦程序的主程序的断点处。

3.条件转移指令
指令执行后,根据状态标志位确定是否转移。不满足条件则顺序执行。

格式:条件操作符 标号
指令的转移范围为-128~+127字节

⑴ 直接标志转移指令
特点:这类指令直接在指令助记符中给出状态标志的测试条件,共10条指令。

助记符的命名规则:
J开头,若判定条件为对应标志位为1,则加上对应标志位符号的首字母。若判定条件为对应标志位为0,则加上N接对应标志位符号的首字母。

间接标志转移指令
特点:这类指令主要是放在CMP指令的后边,⽤来⽐较两个数的⼤⼩。
判断无符号数大小:
JA:大与
JAE:大于等与
JB:小于
JBE:小于等于

判断有符号数的大小:
JG:大于
JGE:大于等于
JL:小于
JLE:小于等于

4.循环控制指令
控制一组指令重复执行。
循环次数通常放在CX中。
循环控制均不影响标志位。

(1)LOOP
格式: LOOP 短标号

功能:CX-1 -> CX
判断CX是否为0,若不为零转移至标号后执行。
否则推出循环,顺序执行。

⑵ LOOPE/LOOPZ 相等或结果为零时循环
功能:CX-1→CX;若CX≠0且ZF=1则转移;

⑶ LOOPNE/LOOPNZ 不相等或结果不为零循环
功能:CX-1→CX;若CX≠0且ZF=0则转移;

⑷ JCXZ 若CX为0跳转
功能:判断若CX=0则转移;
注意:JCXZ指令不对CX的内容进⾏⾃动减1操作

五、处理器控制指令

标志操作指令:

助记符命名规则:
清零操作:CL开头
置一操作:ST开头
后面接目的标志位的首字母

2、停机指令和空操作指令
(1)HLT停机指令
作⽤:CPU进⼊暂停状态,不进⾏任何操作,该指令常⽤来等待中断的出现。

(2)NOP空操作指令
单字节指令,执⾏时需要3个时钟周期的时间,不完成任何操作,主要⽤于循环操作中增加延时。

8086cpu学习笔记(4):指令系统相关推荐

  1. 8086CPU学习笔记:8086的寻址方式

    认真写好一篇文章 前言:8086汇编指令概述 计算机的指令通常包含操作码和操作数两部分.指令有单操作数.双操作数和无操作数三种,其中双操作数的两个操作数要用逗号隔开,逗号左边是目的操作数,逗号右边是源 ...

  2. 计算机组成原理学习笔记第5章指令系统 5.3——操作数寻址方式

    有诗云:苔花如米小,也学牡丹开.--袁枚 本篇笔记整理:Code_流苏(CSDN) Last(在此处点击使用,直达文末) First (在文末点击使用,返回文章首部) 目录 0.思维导图 1.立即数寻 ...

  3. 硬编码学习笔记(二)—— 经典变长指令

    硬编码学习笔记(二)-- 经典变长指令 前言 指令结构 符号说明 寻址符号 操作数符号 上标符号 One-Byte Opcode Map 变长指令 ModR/M 例:0x88 例:0x89 例:0x8 ...

  4. 计算机组成原理的基础知识,计算机组成原理:基础知识部分习题解答(学习笔记)...

    计算机组成原理:基础知识部分习题解答(学习笔记) 1.冯·诺依曼型计算机的主要设计思想是什么?它包括哪些主要组成部分? 答:存储程序并按地址顺序执行,是冯·诺依曼型计算机的主要设计思想.冯·诺依曼型计 ...

  5. 评价微型计算机总线的性能指标,计算机组成原理学习笔记(3):总线

    文章目录 课程笔记导览 附录:英语解释 第三章 总线 3.1 总线的基本概念 使用总线的原因: 总线的定义 总线上信息的传送 总线结构举例 单总线结构 面向CPU的双总线结构 以存储器为中心的双总线结 ...

  6. Cortex-M3学习笔记(一)

    Cortex-M3学习笔记(一) 首先,在学习Cortex-M3时,我们必须要知道必要的缩略语.整理如下:AMBA:先进单片机总线架构   ADK:AMBA设计套件 AHB:先进高性能总线    AH ...

  7. 计算机组成原理学习笔记一

    计算机组成原理学习笔记一 计算机发展历程 一.计算机硬件发展 (1)计算机的四代变化 (2)计算机元件更新换代 二.计算机软件发展 三.计算机的分类 计算机系统层次结构 一.计算机系统的组成 二.计算 ...

  8. 51单片机学习笔记-1简介及点灯

    51单片机学习笔记 文章目录 51单片机学习笔记 1. 51单片机简介 1.1 安装软件 1.2 单片机简介 2. LED灯 2.1点亮一个LED 2.1.1原理分析 2.1.2 创建工程 2.2LE ...

  9. 计算机组成原理 | 第八章《计算机的外围设备》、第九章《输入/输出系统》 学习笔记

    计算机组成原理 | 第八章<计算机的外围设备>.第九章<输入/输出系统> 学习笔记 引言 & 声明 第一章 计算机系统概论 第二章 计算机中数据的表示方法 第三章 运算 ...

  10. JMM 学习笔记(一) 跨平台的JMM

    前言 其实关于并发.多线程这方面的文章,我已经写过了一些: <当我们说起多线程与高并发时> <Java多线程学习笔记(一) 初遇篇> <Java多线程学习笔记(二) 相识 ...

最新文章

  1. 综述:神经网络中 Normalization 的发展历程
  2. 分布式计算互相sayhello
  3. GIT项目管理工具(part8)--版本控制
  4. 6款国内外SNS开源软件 搭建社交网站利器
  5. React实现图片自适应
  6. cass绘制围墙lisp_CASS中用LISP完成高程值的可视化处理
  7. 程序员养生(01) -- 心态
  8. 3dmax脚本_3DMax二种距离测量方法
  9. Android 驱动开发(1)---Hello 实例
  10. 学会这6个强大的CSS选择器,将真正帮你写出干净的CSS代码!
  11. 增量式PID公式的4点疑问和理解
  12. 计算机软件后缀名,如何显示文件后缀名
  13. Sub Matrix Sum 含负数的最短区间+ 矩阵一维化
  14. 基于k-近邻算法的室内WiFi位置指纹定位实验报告
  15. Jenkins 打包项目出错汇总(持续)
  16. HDFS 磁盘写及balance
  17. maven 官方网站
  18. H5仿抖音上下切换翻页动态加载效果
  19. 去水印的手机APP哪个好用,怎么一键去水印
  20. solr两种安装、ik分词器设置、DIH导入mysql数据

热门文章

  1. 创建sprite 组
  2. 区块链基础语言(二十)——Go语言结构体
  3. [模板]01分数规划
  4. ATC空管系统的实时控制软件系统分析
  5. Stopwatch 计时器类
  6. css 修改占位符(placeholder)默认颜色、字体
  7. 转:你真的懂iOS的autorelease吗?
  8. STL:STL各种容器的使用时机详解
  9. 通俗易懂!《图机器学习导论》附69页PPT
  10. 情人节,我用字符画出了一个对象!