8086指令的基本格式
第3章 8086指令系统-汇编语言程序设计教程-陆遥-清华大学出版社

直接寻址方式可以利用变量名的偏移地址属性来 描述操作数的偏移地址(可直接用变量名,或将 变量名置于方括号[ ]中),段寄存器默认为DS。 如果实际使用的段寄存器不是DS,则必须用段 前缀明确指出。
【例3.7】设数据段内有如下变量定义语句
VAR DB 76H,5CH,0A3H,08H
分析以下指令的执行结果。
3.1 指令系统基本概念
指令是给计算机下达的一个简单操作任务,CPU 所能执行的所有指令构成了一个计算机的指令系 统(也称指令集)。
汇编语言指令是对机器指令的符号化表示,采用 助记符来表示指令的操作功能和操作对象。
指令通常可以分为以下几类:
⑴ 数据传送类指令。 ⑵ 算术运算类指令。
⑸ 程序控制类指令。 ⑹ 处理器控制类指令。
【例3.3】要求将数据68传送给AL寄存器,写出相应的传 送指令。 分析:由于AL寄存器接收数据,所以目的操作数为AL, 采用寄存器寻址方式,而源操作数为常数68,采用立即寻 址方式
MOV AL,68 ;AL←68
【例3.4】设被加数存于寄存器DX中,加数为512,写出相 应的加法指令。 分析:因为被加数由寄存器DX提供,所以DX为目的操作 数,采用寄存器寻址方式,而加数为常数512,采用立即 寻址方式
操作数。
2. ADD指令
指令格式:ADD DST,SRC 指令功能:DST←(DST)+(SRC) 。执行加法运算。 操作数特点:两个操作数。被加数DST为目的操作数,加
数SRC为源操作数。
3. NOT指令
指令格式:NOT OPR 指令功能:OPR←(OPR) 。执行逻辑非运算。 操作数特点:一个操作数。OPR既是目的操作数,也是源
段地址由段寄存器提供,用段前缀(DS:,ES:, CS:或SS:)来指明;偏移地址(亦称有效地址) 则有多种表示形式,由此形成了不同的存储器寻 址方式。
第4章8086,8088微机汇编语言程序设计

2)段内偏移量(Offset) 它是标号与段起始地址之间相距的字节数,为一16位 无符号数。 3)类型(Type) 类型表示该标号所代表的指令的转移范围,分NEA R(近)与FAR(远)两种。NEAR类型的标号仅在 同一段内使用,用2字节指针给出转移的偏移量属性(即 只改变IP值,不改变CS值);而FAR类型的标号无此限 制,必须用4字节指针指出转移的段地址与段内偏移量。 当标号用作JMP或CALL等指令的目标操作数时,若 为段内转移或调用则采用NEAR类型;若为段间转移或 调用则应当采用FAR类型。 JMP FAR PTR LINE
第4章 8086/8088汇编语言程序设计
汇编语言程序设计是开发微机系统软件的基本 功,在程序设计中占有十分重要的地位。
由于汇编语言具有执行速度快和易于实现对硬件的控 制等独特的优点,所以至今它仍然是用户使用得较多的程 序设计语言。特别是在对于程序的空间和时间要求很高的 场合,以及需要直接控制设备的应用场合,汇编语言更是必 不可少了。 由于汇编语言本身的特点,本章将选择目前国内广泛 使用的IBM PC机作为基础机型,着重讨论8086/8088汇编 语言的基本语法规则和程序设计的基本方法,以掌握一般 汇编语言程序设计的初步技术。
(1)立即操作数 立即操作数在指令中直接给出,不需要使用 寄存器,也不涉及访问数据区的操作,只能作为 源操作数。立即操作数是整数,可以是1字节或 2字节。在汇编语言中,立即操作数用常量(包 括数值常量和符号常量)以及由常量与有关运算 符组成的数值表达式表示。 如:MOV BX,1000+5*3 (2)寄存器操作数 通用寄存器AX、BX、CX、DX、BP、 SP、DI、SI以及段寄存器CS、SS、D S、ES都可以作为操作数。如:MOV BX,AX
ce 自动汇编 浮点

ce 自动汇编浮点CE指的是8086微处理器的指令集架构中的Compare and Exchange指令,该指令用于实现多线程同步操作。
在汇编语言中,浮点数的处理涉及到浮点运算指令、浮点寄存器以及浮点数的格式。
我将按照以下几个方面详细介绍CE指令及相关内容。
一、浮点运算指令:在8086指令集中,浮点运算指令主要包括加法、减法、乘法和除法等。
这些指令利用浮点寄存器来进行计算。
具体的指令如下:1. FADD:浮点加法指令,用于对两个浮点数进行相加操作。
例如,FADD ST(0), ST(1)表示将ST(1)寄存器中的浮点数与ST(0)寄存器中的浮点数相加,并将结果存储在ST(0)寄存器中。
2. FSUB:浮点减法指令,用于对两个浮点数进行相减操作。
例如,FSUB ST(0), ST(1)表示将ST(1)寄存器中的浮点数减去ST(0)寄存器中的浮点数,并将结果存储在ST(0)寄存器中。
3. FMUL:浮点乘法指令,用于对两个浮点数进行相乘操作。
例如,FMUL ST(0), ST(1)表示将ST(1)寄存器中的浮点数与ST(0)寄存器中的浮点数相乘,并将结果存储在ST(0)寄存器中。
4. FDIV:浮点除法指令,用于对两个浮点数进行相除操作。
例如,FDIV ST(0), ST(1)表示将ST(1)寄存器中的浮点数除以ST(0)寄存器中的浮点数,并将结果存储在ST(0)寄存器中。
二、浮点寄存器:8086微处理器中的浮点数是通过浮点寄存器来进行存储和计算的。
浮点寄存器主要有FPU(浮点处理器单元)中的堆栈寄存器(ST)和数据寄存器(DR)。
1. 堆栈寄存器(ST):堆栈寄存器(ST)是存储浮点操作数的寄存器堆栈,它有8个寄存器(ST(0)-ST(7)),其中ST(0)是栈顶寄存器。
浮点运算指令通常通过操作堆栈中的寄存器来进行计算。
2. 数据寄存器(DR):数据寄存器(DR)用于存储浮点操作数的中间结果或者常数。
第二章 80868088寻址方式和指令系统

(5)奇偶标志PF
用于反映运算结果中“1”的个数。如果“1”的个数为偶数,则OF被置1,否则OF被清0。
(6)辅助进位标志AF
在字节操作时,如发生低半字节向高半字节进位或借位;在字操作时,如发生低字节向高字 节进位或借位,则辅助进位标志AF被置1,否则AF被清0。
②状态控制标志
(1)方向标志DF
方向标志决定着串操作指令执行时,有关指针寄存器调整方向。 当DF为1时,串操作指令按减方式改变有关的存储器指针值, 当DF为0时,串操作指令按加方式 改变有关的存储器指针值。
其中:存储单元的物理地址是12345H, 标出的:两个重叠段的段值分别是:1002H和1233H, 在对应段内的偏移分别是2325H和0015H。
采用段值和偏移构成逻辑地址后,段值由段寄存器给出,偏移可由指令指针IP、堆栈指针SP 和其他可作为存储器指针使用的寄存器(SI、DI、BX和BP)给出,偏移还可直接用16位数给 出。
图中指令存放在代码段中,OP表示该指令的操作码部分 再例如: MOV AL,5 则指令执行后,(AL)=05H
MOV BX,3064H 则指令执行后, (BX)=3064H
2、寄存器寻址方式
操作数在CPU内部的寄存器中,指令指定寄存器号。
对于16位操作数数,寄存器可以是:
AX、BX、CX、DX、SI、DI、SP和BP等;
指令中不使用物理地址,而是使用逻辑地址,由总线接口单元BIU按需要根据段值和偏移自动 形成20位物理址。
3、段寄存器的引用
由于8086/8088CPU有四个段寄存器,可保存四个段值。所以可同时使用四个段值,但这四个 段有所分工。
在取指令的时候,自动引用代码段寄存器CS,再加上由IP所给出的16位偏移,得到要取指令 的物理地址。
汇编语言程序设计_第3章 80x86指令系统

3.3.2 算术指令
1. 加法
一般形式:
ADD dest, src ; dest = dest + src
ADC dest, src ; dest = dest + src + CF
INC
dest
; dest = dest + 1
语法格式:
ADD reg/mem, reg/mem/imm
ADC reg/mem, reg/mem/imm
movsx ax, al ; 等价于cbw movsx eax, ax ; 等价于cwde movsx eax, al ; 等价于顺序执行cbw与cwde
2019/8/26
80x86汇编语言程序设计
3.3.1 数据传送指令
(3)MOVZX 一般形式: MOVZX dest, src ; src零扩展为dest;386新增 语法格式: MOVZX reg16, reg8/mem8 MOVZX reg32, reg8/mem8/reg16/mem16
2019/8/26
80x86汇编语言程序设计
3.3.1 数据传送指令
5. 堆栈操作指令
80x86系统的堆栈具有如下特点: 堆栈是在内存的堆栈段中,具有“先进后出”的特点。 堆栈只有一个出入口,即当前栈顶。当堆栈为空时,栈顶和栈底指向同一内存单
元。 堆栈有两个基本操作:PUSH(进栈)和POP(出栈)。PUSH操作使栈顶向低地
INC
reg/mem
对标志位的影响:
ADD、ADC:按一般规则影响CF、OF、SF和ZF。 INC:不影响CF,其它同ADD。 说明:ADD与ADC的2个操作数必须类型匹配,且不能同时是内存操作数。
2019/8/26
8086指令系统一览表

RCR op1, 1 带进位位的循环右移 RCR op1, CL
reg mem reg mem
串 MOVSB 操 作 MOVSW 类
((DI)) ← ((SI)) (SI) ← (SI)±1, (DI) ← (DI)±1 ((DI)) ← ((SI)) (SI) ← (SI)±2, (DI) ← (DI)±2
SAR op1, 1 算术右移 SAR op1, CL
ROL op1, 1 循环左移 ROL op1, CL
ROR op1, 1 循环右移 ROR op1, CL
reg mem mem, reg reg, mem reg, reg reg, imm mem, imm acc, imm reg, mem reg, reg reg, imm mem, imm acc, imm reg mem reg mem
9+22/rep 不重复:15 1 重复:
9+15/rep 1 不重复:15 重复:
9+15/rep
2
1
2
1
REPNE/REP (CX)=0 或(ZF)=1 退出重复,否则
NZ
(CX)←(CX)-1 并执行其后的串指令
ቤተ መጻሕፍቲ ባይዱ
string_instruc
控 JMP SHORT 无条件转移 制 op1 转 JMP NEAR 移 PTR op1 类 JMP FAR
reg mem
PTR op1
JMP WORD
PTR op1
JMP DWORD
PTR op1 JZ/JE op1 JNZ/JNE op1 JS op1
ZF=1 则转移 ZF=0 则转移 SF=1 则转移
JNS op1
第三章 8086 8088指令系统

SI 1200
+)
6000 0 1200 61200 AX 33 44
61200H 61201H
存储器 . . . 44H 33H 数 据 段
. . .
图 3-5 寄存器间接寻址示意图
3.2.5 寄存器相对寻址
寄存器相对寻址——操作数在存储器中。由指令指定的地址寄存器的内容加上指令中
给出的一个8位或16位的地址位移量,即可得操作数的偏移地址。
SI AX AX AX AX AX
3.2.8隐含寻址
隐含寻址—— 操作数隐含在操作码中,在有些指令的操作数中,不仅包含了操作的性质,
还隐含了部分操作数的地址。如乘法指令 MUL,在这条指令中只须指明乘数的地址,而被乘数 已经乘积的地址是隐含且固定的。这种将一个操作数隐含在指令码中的寻址方式就称为隐含
立即数操作数: 所谓立即数指具有固定数值的操作数,不因指令的执行而发生变化 。立即数操作 数只能用作源操作数,而不能用作目标操作数。
寄存器操作数:
8086CPU的8个通用寄存器和4个段寄存器可以作为指令中的寄存器操作数,寄存
器操作数在指令中既可以作为源操作数,也可以用作目标操作数。 存储器操作数: 参加运算的数据是存放在内存中。
两单元的内容送到AX中。假设DS=2000H,则所寻找的操作数的物理地址为: 2000H×10H+3102H = 23102H, 指令的执行情况如图3-3所示
存储器 . . .
MOV操作码
02H 31H AH AL 23102H 23103H
图 3-3 直接寻址方式
代 码 段
. . . ×× ×× . . . 数 据 段
请注意:使用基址—变址方式时,不允许将两个基址寄存器或两个变址寄存器组合
汇编语言指令详解

第一讲第三章 指令系统--寻址方式回顾: 8086/8088的内部结构和寄放器,地址分段的概念,8086/8088的工作进程。
重点和纲要:指令系统--寻址方式。
有关寻址的概念;6种大体的寻址方式及有效地址的计算。
教学方法、实施步骤时间分配 教学手段 回 顾 5”×2 板书 计算机 投影仪 多媒体课件等讲 授 40” ×2 提 问 3” ×2 小 结2” ×2教学内容:8086/8088寻址方式操作码 操作数 …… 操作数运算机中的指令由操作码字段和操作数字段组成。
操作码:指运算机所要执行的操作,或称为指出操作类型,是一种助记符。
操作数:指在指令执行操作的进程中所需要的操作数。
该字段除能够是操作数本身外,也能够是操作数地址或是地址的一部份,还能够是指向操作数地址的指针或其它有关操作数的信息。
寻址方式就是指令顶用于说明操作数所在地址的方式,或说是寻觅操作数有效地址的方式。
8086/8088的大体寻址方式有六种。
1.当即寻址所提供的操作数直接包括在指令中。
它紧跟在操作码的后面,与操作码一路放在代码段区域中。
如图所示。
例如:MOV AX,3000H当即数能够是8位的,也能够是16位的。
若是16位的,则存储时低位在前,高位在后。
当即寻址主要用来给寄放器或存储器赋初值。
2.直接寻址操作数地址的16位偏移量直接包括在指令中。
它与操作码—起寄存在代码段区域,操作数一般在数据段区域中,它的地址为数据段寄放器DS加上这16位地址偏移量。
如图2-2所示。
例如:MOV AX,DS:[2000H];图2-2(对DS来讲能够省略成MOV AX,[2000H],系统默以为数据段)这种寻址方式是以数据段的地址为基础,可在多达64KB的范围内寻觅操作数。
8086/8088中允许段超越,即还允许操作数在以代码段、堆栈段或附加段为基准的区域中。
现在只要在指令中指明是段超越的,则16位地址偏移量能够与CS或SS或ES相加,作为操作数的地址。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8086指令的基本格式
一、概述
在计算机科学领域中,指令是计算机执行操作的基本单位。
8086指令集是Intel 于1978年推出的一种16位微处理器指令集,被广泛应用于个人电脑和其他嵌入式系统中。
本文将详细介绍8086指令的基本格式及其组成部分。
二、8086指令的组成
8086指令由若干个字节组成,每个字节代表一个特定的操作码或操作数。
根据指令的功能和操作数的个数,8086指令可以分为不同的类型,包括数据传输指令、算术运算指令、逻辑运算指令、控制转移指令等。
三、8086指令的基本格式
8086指令的基本格式包括操作码、操作数和标志位。
下面将对每个部分进行详细介绍。
1. 操作码
操作码是指令的关键部分,用于指定要执行的操作类型。
8086指令的操作码通常由一个或多个字节组成,不同的操作码代表不同的指令功能。
例如,MOV指令用于数据传输,ADD指令用于算术运算。
2. 操作数
操作数是指令的操作对象,用于指定要操作的数据。
8086指令的操作数可以是寄存器、内存地址或立即数。
寄存器是8086处理器内部的存储单元,用于存储和操作数据。
内存地址指的是存储器中的某个位置,可以通过地址来访问其中的数据。
立即数是指令中直接给出的常数值。
3. 标志位
标志位是用于记录处理器状态和指令执行结果的标志位。
8086处理器有多个标志位,包括进位标志、零标志、符号标志等。
这些标志位可以通过特定的指令来设置或清除,并在指令执行过程中进行判断和使用。
四、8086指令的执行过程
8086指令的执行过程可以分为取指令、译码、执行和写回等阶段。
1.取指令阶段:处理器从内存中读取下一条指令,并将其存储在指令寄存器中。
2.译码阶段:处理器对取出的指令进行解码,确定要执行的操作类型和操作数。
3.执行阶段:处理器根据指令的操作类型和操作数执行相应的操作,如数据传
输、算术运算等。
4.写回阶段:处理器将执行结果写回到寄存器或内存中,更新标志位。
五、8086指令的示例
下面将通过示例来说明8086指令的基本格式和使用方法。
1.数据传输指令 MOV指令用于将数据从一个位置传输到另一个位置。
例如,
MOV AX, BX表示将BX寄存器的值传输到AX寄存器。
2.算术运算指令 ADD指令用于执行加法运算。
例如,ADD AX, BX表示将AX寄
存器中的值与BX寄存器中的值相加,并将结果存储在AX寄存器中。
3.逻辑运算指令 AND指令用于执行与运算。
例如,AND AX, BX表示将AX寄存
器中的值与BX寄存器中的值进行与运算,并将结果存储在AX寄存器中。
4.控制转移指令 JMP指令用于无条件跳转到指定的地址。
例如,JMP 1000H表
示跳转到地址1000H处执行。
六、总结
本文介绍了8086指令的基本格式及其组成部分,包括操作码、操作数和标志位。
8086指令的执行过程包括取指令、译码、执行和写回等阶段。
通过示例,我们了
解了不同类型的8086指令的用法和功能。
熟悉8086指令的基本格式对于理解和编写汇编语言程序至关重要。