第3章数据处理(3)算数与逻辑运算指令
第三章 运算方法
第三章运算方法一名词解释(1)溢出——在运算过程中如出现数据超过这个数表示范围的现象,称溢出。
(2)运算器——运算器是一个用于信息加工的部件,又称执行部件。
它对数据进行算术运算和逻辑运算。
(3)并行加法器——全加器的位数与操作数的位数的加法器称并行加法器。
(4)进位链——进位信号的产生与传递的逻辑结构称为进位链。
(5)进位产生函数——当xi与yi都为1时,Ci=1,即有进位信号产生,所以将xiyi称为进位产生函数,以Gi表示。
(6)进位传递函数——当xi⊕yi=1、Ci-1=1时,则Ci=1。
这种情况可看作是当xi⊕yi=1时,第i-1位的进位信号Ci-1可以通过本位向高位传送。
因此把xi⊕yi称为进位传递函数,以Pi表示。
(7)桶形移位器——在选择电路的控制下可以实现左移、右移、直送操作的具有移位功能的电路。
一.选择题1.大部分计算机内的减法是用_____实现。
A.将被减数加到减数中B.从被减数中减去减数C.补码数的相加 D.补码数的相减2.原码加减法是_____。
A.操作数用原码表示,连符号位直接相加减B.操作数用原码表示,尾数直接相加减,符号位单独处理C.操作数用原码表示,根据两数符号决定实际操作,符号位单独处理D.操作数取绝对值,直接相加减,符号位单独处理3.补码加减法是指______。
A.操作数用补码表示,两尾数加减,符号位单独处理,减法用加法代替B.操作数用补码表示,符号位和尾数一起参加运算,结果的符号与加减相同C.操作数用补码表示,连符号位直接相加减,减某数用加负某数的补码代替,结果的符号在运算中形成D.操作数用补码表示,由数符决定两尾数的操作,符号位单独处理4.在原码加减交替除法中,符号位单独处理,参加操作的数是_____。
A.原码 B.绝对值C.绝对值的补码 D.补码5.两补码相加,采用1位符号位,则当_____时,表示结果溢出。
A.最高位有进位 B.最高位进位和次高位进位异或结果为0C.最高位为1 D.最高位进位和次高位进位异或结果为16.在下列有关不恢复余数法何时需恢复余数的说法中,正确的是_____。
第3章 STC15单片机的指令系统
;进位位C与30H位相与,结果保存在C中 ;进位位C送35H位 ;20H位置1
单片机原理与接口技术————基于STC15系列的51单片机原理
第3章 STC15单片机的指令系统
七、 相对寻址
在相对寻址的转移指令中,转移指令的所在的PC值加上其指令的字节数构成了 程序转移的目的地址。
目的地址表达式: 目的地址=转移指令地址+转移指令字节数+偏移量
据传送指令不影响标志C、AC和OV(除非以PSW为目的的指 令),但可能会对奇偶标志P有影响。
单片机原理与接口技术————基于STC15系列的51单片机原理
第3章 STC15单片机的指令系统
一、 内部数据传送指令
以累加器A为目的操作数的指令
MOV A,data ;直接寻址 ,(data)→(A), 直接单元地址中的内容送到累加器A
一、 STC15单片机指令格式
1. 机器指令与汇编指令
机器指令:二进制代码形式,是CPU唯一能识
别和处理的指令
11101000
汇编指令:将机器指令用类似于英文的助记符
表示。
MOV A,R0
单片机原理与接口技术————基于STC15系列的51单片机原理
第3章 STC15单片机的指令系统
4
一、 STC15单片机指令格式
2. 操作数与操作码
操作数:操作的对象。
操作码:指令执行的操作
MOV A,R0
源操作数
目的操作数
单片机原理与接口技术————基于STC15系列的51单片机原理
第3章 STC15单片机的指令系统
一、 STC15单片机指令格式
4. 汇编语言的语句格式
[标号:] 操作码助记符 [目的操作数][,源操作数][;注释] AGAIN: MOV A,R0 ;把R0的内容送累加器A
精品文档-计算机组成与系统结构(裘雪红)-第3章
(4) 运算结果为补码表示。
第3章 运算方法与运算器
10
2. 溢出判断 1) 溢出的概念 例3.4 有两个定点整数63和85,利用补码加法求63+85=? 解 根据题意,用8位二进制补码表示63和85:
第3章 运算方法与运算器
11
例3.5 设正整数X=+1000001,Y= +1000011,若用8位补 码表示,则[X]补=01000001,[Y]补=01000011,求[X+Y]补。
第3章 运算方法与运算器
15
(2) 进位判决法。若Cn-1为最高数值位向最高位(符号位)的 进位,Cn表示符号位的进位(即进位标志CF),则判别溢 出的逻辑表达式为
(3-4)
OF=Cn-1⊕Cn
溢出判定如表3.1所示。在例3.6的运算过程中,Cn-1为0而 Cn为1 ,故Cn-1⊕Cn=1,表示运算结果有溢出。
第3章 运算方法与运算器
28
图 3.3 四位先行进位链电路
第3章 运算方法与运算器
29
5. BCD数加法器 1) 8421 BCD码
第2章中已详细地介绍了BCD码。在所描述的几种BCD码中, 计算机中应用最广泛的是8421 BCD码。8421 BCD码只利用了四 位二进制编码的0000~1001这十种来表示十进制数的0~9,剩余的
(3-6)
第3章 运算方法与运算器
19
3. 一位全加器的实现
设一位全加器的输入分别为Xi和Yi,低一位对该位的进位 为Ci, 全加器的结果和向高一位的进位分别用Zi和Ci+1表示, 则 一位全加器所实现的逻辑表达式如下:
(3-7)
(3-8)
第3章 运算方法与运算器
20
实现上述逻辑功能的一位全加器的逻辑电路及其框图分别
反汇编语言常用指令
内容目录计算机寄存器分类简介计算机寄存器常用指令一、常用指令二、算术运算指令三、逻辑运算指令四、串指令五、程序跳转指令计算机寄存器分类简介:32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)6 个段寄存器(ES、CS、SS、DS、FS 和GS)1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)1、数据寄存器数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。
32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。
对低16位数据的存取,不会影响高16位的数据。
这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU 中的寄存器相一致。
.4个16位寄存器又可分割成8个独立的8位寄存器(AX: AH-AL、BX:BH-BL、CX: CH-CL、DX: DH-DL),每个寄存器都有自己的名称,可独立存取。
程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字 /字节的信息。
寄存器EAX通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。
可用于乘、除、输入/输出等操作,使用频率很高;寄存器EBX称为基地址寄存器(Base Register) o它可作为存储器指针来使用;寄存器ECX称为计数寄存器(Count Register)。
在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数;寄存器EDX称为数据寄存器(Data Register)。
在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。
在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址,在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果,而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。
第3章运算方法和运算器讲义(计算机组成原理课件)
N → ½ 1 Cn 2A-B→ A 2C → C
A<0?
Y → ½ 0 Cn 2A+B→A 2C → C
CR+1→CR N
CR=n? Y A<0? N 1 → Cn XS⊕YS→ QS End Y 0→Cn A+B→A
24
原码不恢复余数法需要注意的问题:
(1) 在定点小数除法运算时,为了防止溢出,要求被除 数的绝对值小于除数的绝对值, |X|< |Y| ( |X|=|Y|除 外),且除数不能为0。 (2)在原码加减交替法中,当最终余数为负数时,必须 恢复一次余数,使之变为正余数,注意此时不需要再左移 了。
二、补码乘法
将此式展开,得到递推关系: [Z0]补=0 [Z1]补=2-1{[Z0]补+(yn+1-yn)[x]补} [Z2]补=2-1{[Z1]补+(yn-yn-1)[x]补} . . [Zn]补=2-1{[Zn-1]补+(y2-y1)[x]补} 从而得到: [x×y]补=[Zn]补+(y1-ys).[x]补 --------补码一位乘比较法
1.补码一位乘
• 用补码做加减运算很方便,做乘法(包括除法)却
是原码很方便,既然这样为何又有补码乘法呢?主 要为了避免频繁的码制转换。 被乘数x, [x]补=xs.x1…xn 乘数y, [y]补=ys.y1…yn • 校正法 ⑴ x任意,y>0时, [X×Y]补 = [Y]补× [Y]补 ⑵ x任意,y<0时, [X×Y]补 = [X]补× (0.y1…yn )+[-X]补
3
§3.3 定点乘法运算
X×Y=X×0.1011 =X×0.1+X×0.00+X×0.001+X×0.0001 =0.1{X+0.1[0+0.1(X+0.1×X)]} =2-1{X+2-1{0+2-1[X+2-1(X+0)]}} |X|×|Y| = |X|× (0.Y1Y2 … Yn )
微机原理与接口技术(第四版)课后习题答案(1)
第1章微型计算机系统〔习题1.1〕简答题(2)总线信号分成哪三组信号?(3)PC机主存采用DRAM组成还是SRAM组成?(5)ROM-BIOS是什么?(6)中断是什么?(9)处理器的“取指-译码-执行周期”是指什么?〔解答〕②总线信号分成三组,分别是数据总线、地址总线和控制总线。
③ PC机主存采用DRAM组成。
⑤ ROM-BIOS是“基本输入输出系统”,操作系统通过对BIOS的调用驱动各硬件设备,用户也可以在应用程序中调用BIOS中的许多功能。
⑥中断是CPU正常执行程序的流程被某种原因打断、并暂时停止,转向执行事先安排好的一段处理程序,待该处理程序结束后仍返回被中断的指令继续执行的过程。
⑨指令的处理过程。
处理器的“取指—译码—执行周期”是指处理器从主存储器读取指令(简称取指),翻译指令代码的功能(简称译码),然后执行指令所规定的操作(简称执行)的过程。
〔习题1.3〕填空题(2)Intel 8086支持___________容量主存空间,80486支持___________容量主存空间。
(3)二进制16位共有___________个编码组合,如果一位对应处理器一个地址信号,16位地址信号共能寻址___________容量主存空间。
(9)最初由公司采用Intel 8088处理器和()操作系统推出PC 机。
② 1MB,4GB③ 216,64KB(9)IBM,DOS〔习题1.4〕说明微型计算机系统的硬件组成及各部分作用。
〔解答〕CPU:CPU也称处理器,是微机的核心。
它采用大规模集成电路芯片,芯片内集成了控制器、运算器和若干高速存储单元(即寄存器)。
处理器及其支持电路构成了微机系统的控制中心,对系统的各个部件进行统一的协调和控制。
存储器:存储器是存放程序和数据的部件。
外部设备:外部设备是指可与微机进行交互的输入(Input)设备和输出(Output)设备,也称I/O设备。
I/O设备通过I/O接口与主机连接。
2_第3章 8086指令系统_加减运算指令比较指令52
3.4.2 算术运算指令
算术运算指令涉及两种类型数据,即无符号数和有符号数 对加法指令和减法指令而言,无符号和有符号数可采用同
一套指令,其先决条件有两个: 一是参加的操作数必须同为无符号数或同为有符号数 二是要采用不同标志位来检查无符号数和有符号数的 运算结果是否溢出
而乘除运算指令则需要区分无符号数和有符号数
11 11
ADC指令的使用价值
主要用于由于数据较大(多字节),需要多次运算的加法 运算中。 例:有两个4字节的无符号数相加:
2D568F8CH+3C9E489BH=? 设 被加数存放在BUF1开始的存储区内
加数存放在BUF2开始的存储区内 要求和放回BUF1存储区 假设CPU进行8位的加法运算,为此将进行4次加法运算
.386
……
MOVZX AX, A
MOVZX BX, B
ADD
AX, BX
MOVZX BX, C
ADD
AX, BX
MOV
SUM, AX
;取第一个数,扩展0传送 ;取第二个数 ;加第二个数 ;取第三个数 ;加第三个数 ;保存三个数的和
20 20
[例] P,Q,R均为8位有符号数,求它们的和,送入TOTAL
这个问题的另一种方法:
MOV AL, A
;取第一个数
MOV AH, 0
;高8位清零,准备存放和的高8位
ADD AL, B
;加第二个数
ADC AH, 0
;如果有进位,存入AH
ADD AL, C
;加第三个数
ADC AH, 0
;如果有进位,加入AH
MOV SUM, AX ;保存三个数的和
19 19
这个问题的第三种方法:
大学计算机基础试题及答案第三章
、题目1正确获得分中的分标记题目~题干CPU主要由运算器和控制器组成,下列说法正确的是()…选择一项:a. 控制器直接控制计算机系统的输入与输出操作b. 运算器主要负责分析指令,并根据指令要求作相应的运算—c. 控制器主要负责分析指令,并根据指令要求作相应的运算d. 运算器主要负责完成对数据的运算,包括算术运算和逻辑运算正确反馈|正确答案是:运算器主要负责完成对数据的运算,包括算术运算和逻辑运算题目2正确[获得分中的分标记题目题干?下列存储器中,访问速度最慢的是()选择一项:a. ROM¥b. RAMc. Cached. 硬盘正确>反馈正确答案是:硬盘题目3~正确获得分中的分标记题目…题干计算机的内存储器相比外储存器()选择一项:(a. 读/写速度快正确b. 存储容量大c. 价格便宜%d. 读/写速度慢反馈正确答案是:读/写速度快~题目4正确获得分中的分@标记题目题干下列叙述正确的是()|选择一项:a. 指令由操作数和操作码两部分组成正确b. 计算机语言是完成某一任务的指令集¥c. 计算机的一个字长总等于两个字节d. 常用xxMB表示计算机的速度反馈)正确答案是:指令由操作数和操作码两部分组成题目5正确~获得分中的分标记题目题干/目前微型计算机中采用的逻辑元件是()选择一项:&a. 大规模和超大规模集成电路正确b. 中规模集成电路c. 小规模集成电路d. 分立元件》反馈正确答案是:大规模和超大规模集成电路~题目6正确获得分中的分标记题目}题干微型计算机中,运算器的主要功能是进行()&选择一项:a. 逻辑运算和算术运算正确b. 复杂方程的求解c. 算术运算·d. 逻辑运算反馈正确答案是:逻辑运算和算术运算<题目7正确获得分中的分:标记题目题干。
下列存储器中,存取速度最快的是()选择一项:a. 光盘存储器]b. 内存储器正确c. 硬磁盘存储器d. 软磁盘存储器反馈[正确答案是:内存储器题目8|正确获得分中的分标记题目"题干下列打印机中,打印效果最佳的一种是()选择一项:}a. 喷墨打印机b. 激光打印机正确c. 点阵打印机d. 热敏打印机<反馈正确答案是:激光打印机.题目9正确获得分中的分标记题目~题干微型计算机中,不属于控制器功能的是()】选择一项:a. 传输各种控制信号b. 产生各种控制信息]c. 存储各种控制信息d. 输出各种信息正确反馈-正确答案是:输出各种信息题目10正确.获得分中的分标记题目题干>微型计算机配置高速缓存是为了解决()之间的速度不匹配问题。
算术与逻辑运算指令PPT课件
第2页/共45页
算术与逻辑运算指令
次高位进位 • 溢出O:当进行8位或16位数的加法或减法运算时,O = 最高位进位(借位) (借位)
• 49H + 6DH = 0100 1001B + 0110 1101B = 1011 0110B • 最高位(8th)无进位,次高位(7th)有进位 • O=1,有溢出
第9页/共45页
加法、减法与比较指令
• 带进位(借位)加法(减法)指令 • 指令形式:ADC/SBB REG/MEM, REG/MEM/imm • 目的操作数=目的操作数±源操作数±C(进位标志位) • 与ADD/SUB指令形式一致 • 实现位宽大于16位的加法/减法 • BX-AX+DX-CX
ADC
LEA SI, DATA2; 装载DATA2 MOV CX, [SI] MOV DX, [SI+2]
ADD AX, CX;计算BX-AX+DX-
CX|DATA1+DATA2
ADC BX, DX
• STACK SEGMENT • DW 128 DUP(0) • ENDS • CODE SEGMENT
LEA SI, RESULT;存储结果 MOV [SI], AX MOV [SI+2], BX ENDS END 代ST码ART
第8页/共45页
加法、减法与比较指令
• 寄存器加法/减法
• 操作数均为寄存器 • ADD/SUB AX, BX; AX = AX ± BX
• 立即数加法/减法
• 源操作数为立即数 • ADD/SUB AX, 100H • ADD/SUB WORD PTR[DI], 100H • 内存与寄存器加法/减法 • ADD/SUB AX, [DI] • ADD/SUB AX, NUM • ADD/SUB AX, [DI+2]
汇编语言指令大全X86和X87汇编指令大全(带注释)
汇编语⾔指令⼤全X86和X87汇编指令⼤全(带注释)⽬录⼀、数据传输指令1. 通⽤数据传送指令.2. 输⼊输出端⼝传送指令.3. ⽬的地址传送指令.4. 标志传送指令.⼆、算术运算指令三、逻辑运算指令四、串指令五、程序转移指令六、伪指令七、处理机控制指令:标志处理指令浮点运算指令集1、控制指令2、数据传送指令3、⽐较指令4、运算指令其它1.机械码,⼜称机器码.2.需要熟练掌握的全部汇编知识(只有这么多)3.常见修改(机器码)4.两种不同情况的不同修改⽅法⼀、数据传输指令它们在存贮器和寄存器、寄存器和输⼊输出端⼝之间传送数据.1. 通⽤数据传送指令.MOV 传送字或字节.MOVSX 先符号扩展,再传送.MOVZX 先零扩展,再传送.PUSH 把字压⼊堆栈.POP 把字弹出堆栈.PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压⼊堆栈.POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压⼊堆栈.POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.BSWAP 交换32位寄存器⾥字节的顺序XCHG 交换字或字节.(⾄少有⼀个操作数为寄存器,段寄存器不可作为操作数)CMPXCHG ⽐较并交换操作数.(第⼆个操作数必须为累加器AL/AX/EAX)XADD 先交换再累加.(结果在第⼀个操作数⾥)XLAT 字节查表转换.----BX指向⼀张256字节的表的起点,AL为表的索引值(0-255,即0-FFH);返回AL为查表结果.([BX+AL]->AL)2. 输⼊输出端⼝传送指令.IN I/O端⼝输⼊. ( 语法: IN 累加器, {端⼝号│DX} )OUT I/O端⼝输出. ( 语法: OUT {端⼝号│DX},累加器 )输⼊输出端⼝由⽴即⽅式指定时, 其范围是 0-255; 由寄存器 DX 指定时,其范围是 0-65535.3. ⽬的地址传送指令.LEA 装⼊有效地址.例: LEA DX,string ;把偏移地址存到DX.LDS 传送⽬标指针,把指针内容装⼊DS.例: LDS SI,string ;把段地址:偏移地址存到DS:SI.LES 传送⽬标指针,把指针内容装⼊ES.例: LES DI,string ;把段地址:偏移地址存到ES:DI.LFS 传送⽬标指针,把指针内容装⼊FS.例: LFS DI,string ;把段地址:偏移地址存到FS:DI.LGS 传送⽬标指针,把指针内容装⼊GS.例: LGS DI,string ;把段地址:偏移地址存到GS:DI.LSS 传送⽬标指针,把指针内容装⼊SS.例: LSS DI,string ;把段地址:偏移地址存到SS:DI.4. 标志传送指令.LAHF 标志寄存器传送,把标志装⼊AH.SAHF 标志寄存器传送,把AH内容装⼊标志寄存器.PUSHF 标志⼊栈.POPF 标志出栈.PUSHD 32位标志⼊栈.POPD 32位标志出栈.⼆、算术运算指令ADD 加法.ADC 带进位加法.INC 加 1.AAA 加法的ASCII码调整.DAA 加法的⼗进制调整.SUB 减法.SBB 带借位减法.DEC 减 1.NEG 求反(以 0 减之).CMP ⽐较.(两操作数作减法,仅修改标志位,不回送结果).AAS 减法的ASCII码调整.DAS 减法的⼗进制调整.MUL ⽆符号乘法.结果回送AH和AL(字节运算),或DX和AX(字运算),IMUL 整数乘法.结果回送AH和AL(字节运算),或DX和AX(字运算),AAM 乘法的ASCII码调整.DIV ⽆符号除法.结果回送:商回送AL,余数回送AH, (字节运算);或商回送AX,余数回送DX, (字运算).IDIV 整数除法.结果回送:商回送AL,余数回送AH, (字节运算);或商回送AX,余数回送DX, (字运算).AAD 除法的ASCII码调整.CBW 字节转换为字. (把AL中字节的符号扩展到AH中去)CWD 字转换为双字. (把AX中的字的符号扩展到DX中去)CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去)CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去)三、逻辑运算指令AND 与运算.XOR 异或运算.NOT 取反.TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果).SHL 逻辑左移.SAL 算术左移.(=SHL)SHR 逻辑右移.SAR 算术右移.(=SHR)ROL 循环左移.ROR 循环右移.RCL 通过进位的循环左移.RCR 通过进位的循环右移.以上⼋种移位指令,其移位次数可达255次.移位⼀次时, 可直接⽤操作码. 如 SHL AX,1.移位>1次时, 则由寄存器CL给出移位次数.如 MOV CL,04 SHL AX,CL四、串指令DS:SI 源串段寄存器 :源串变址.ES:DI ⽬标串段寄存器:⽬标串变址.CX 重复次数计数器.AL/AX 扫描值.D标志 0表⽰重复操作中SI和DI应⾃动增量; 1表⽰应⾃动减量.Z标志⽤来控制扫描或⽐较操作的结束.MOVS 串传送.( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. )CMPS 串⽐较.( CMPSB ⽐较字符. CMPSW ⽐较字. )SCAS 串扫描.把AL或AX的内容与⽬标串作⽐较,⽐较结果反映在标志位.LODS 装⼊串.把源串中的元素(字或字节)逐⼀装⼊AL或AX中.( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. ) STOS 保存串.是LODS的逆过程.REP 当CX/ECX<>0时重复.REPE/REPZ 当ZF=1或⽐较结果相等,且CX/ECX<>0时重复.REPNE/REPNZ 当ZF=0或⽐较结果不相等,且CX/ECX<>0时重复.REPC 当CF=1且CX/ECX<>0时重复.REPNC 当CF=0且CX/ECX<>0时重复.五、程序转移指令1. ⽆条件转移指令 (长转移)JMP ⽆条件转移指令CALL 过程调⽤RET/RETF 过程返回.2. 条件转移指令 (短转移,-128到+127的距离内)( 当且仅当(SF XOR OF)=1时,OP1<OP2 )JA/JNBE 不⼩于或不等于时转移.JAE/JNB ⼤于或等于转移.JB/JNAE ⼩于转移.JBE/JNA ⼩于或等于转移.以上四条,测试⽆符号整数运算的结果(标志C和Z).JG/JNLE ⼤于转移.JGE/JNL ⼤于或等于转移.JL/JNGE ⼩于转移.JLE/JNG ⼩于或等于转移.以上四条,测试带符号整数运算的结果(标志S,O和Z).JE/JZ 等于转移.JNE/JNZ 不等于时转移.JC 有进位时转移.JNC ⽆进位时转移.JNO 不溢出时转移.JNP/JPO 奇偶性为奇数时转移.JNS 符号位为 "0" 时转移.JO 溢出转移.JP/JPE 奇偶性为偶数时转移.JS 符号位为 "1" 时转移.3. 循环控制指令(短转移)LOOP CX不为零时循环.LOOPE/LOOPZ CX不为零且标志Z=1时循环.LOOPNE/LOOPNZ CX不为零且标志Z=0时循环.JCXZ CX为零时转移.JECXZ ECX为零时转移.4. 中断指令INT 中断指令INTO 溢出中断IRET 中断返回5. 处理器控制指令HLT 处理器暂停, 直到出现中断或复位信号才继续.WAIT 当芯⽚引线TEST为⾼电平时使CPU进⼊等待状态.ESC 转换到外处理器.LOCK 封锁总线.NOP 空操作.STC 置进位标志位.CLC 清进位标志位.CMC 进位标志取反.STD 置⽅向标志位.CLD 清⽅向标志位.STI 置中断允许位.CLI 清中断允许位.六、伪指令DW 定义字(2字节).PROC 定义过程.ENDP 过程结束.SEGMENT 定义段.ASSUME 建⽴段寄存器寻址.ENDS 段结束.END 程序结束.七、处理机控制指令:标志处理指令CMC 进位位求反指令STC 进位位置为1指令CLD ⽅向标志置1指令STD ⽅向标志位置1指令CLI 中断标志置0指令STI 中断标志置1指令NOP ⽆操作HLT 停机WAIT 等待ESC 换码LOCK 封锁浮点运算指令集1、控制指令(带9B的控制指令前缀F变为FN时浮点不检查,机器码去掉9B)FINIT 初始化浮点部件机器码 9B DB E3FCLEX 清除异常机器码 9B DB E2FDISI 浮点检查禁⽌中断机器码 9B DB E1FENI 浮点检查禁⽌中断⼆机器码 9B DB E0WAIT 同步CPU和FPU 机器码 9BFWAIT 同步CPU和FPU 机器码 D9 D0FNOP ⽆操作机器码 DA E9FXCH 交换ST(0)和ST(1) 机器码 D9 C9FXCH ST(i) 交换ST(0)和ST(i) 机器码 D9 C1iiiFSTSW ax 状态字到ax 机器码 9B DF E0FSTSW word ptr mem 状态字到mem 机器码 9B DD mm111mmmFLDCW word ptr mem mem到状态字机器码 D9 mm101mmmFSTCW word ptr mem 控制字到mem 机器码 9B D9 mm111mmmFLDENV word ptr mem mem到全环境机器码 D9 mm100mmmFSTENV word ptr mem 全环境到mem 机器码 9B D9 mm110mmmFRSTOR word ptr mem mem到FPU状态机器码 DD mm100mmmFSAVE word ptr mem FPU状态到mem 机器码 9B DD mm110mmmFFREE ST(i) 标志ST(i)未使⽤机器码 DD C0iiiFDECSTP 减少栈指针1->0 2->1 机器码 D9 F6FINCSTP 增加栈指针0->1 1->2 机器码 D9 F7FSETPM 浮点设置保护机器码 DB E42、数据传送指令FLDZ 将0.0装⼊ST(0) 机器码 D9 EEFLD1 将1.0装⼊ST(0) 机器码 D9 E8FLDPI 将π装⼊ST(0) 机器码 D9 EBFLDL2T 将ln10/ln2装⼊ST(0) 机器码 D9 E9FLDL2E 将1/ln2装⼊ST(0) 机器码 D9 EAFLDLG2 将ln2/ln10装⼊ST(0) 机器码 D9 ECFLDLN2 将ln2装⼊ST(0) 机器码 D9 EDFLD real4 ptr mem 装⼊mem的单精度浮点数机器码 D9 mm000mmmFLD real8 ptr mem 装⼊mem的双精度浮点数机器码 DD mm000mmmFLD real10 ptr mem 装⼊mem的⼗字节浮点数机器码 DB mm101mmmFILD word ptr mem 装⼊mem的⼆字节整数机器码 DF mm000mmmFILD dword ptr mem 装⼊mem的四字节整数机器码 DB mm000mmmFILD qword ptr mem 装⼊mem的⼋字节整数机器码 DF mm101mmmFBLD tbyte ptr mem 装⼊mem的⼗字节BCD数机器码 DF mm100mmmFST real4 ptr mem 保存单精度浮点数到mem 机器码 D9 mm010mmmFST real8 ptr mem 保存双精度浮点数到mem 机器码 DD mm010mmmFIST word ptr mem 保存⼆字节整数到mem 机器码 DF mm010mmmFIST dword ptr mem 保存四字节整数到mem 机器码 DB mm010mmmFSTP real4 ptr mem 保存单精度浮点数到mem并出栈机器码 D9 mm011mmmFSTP real8 ptr mem 保存双精度浮点数到mem并出栈机器码 DD mm011mmmFSTP real10 ptr mem 保存⼗字节浮点数到mem并出栈机器码 DB mm111mmmFISTP word ptr mem 保存⼆字节整数到mem并出栈机器码 DF mm011mmmFISTP dword ptr mem 保存四字节整数到mem并出栈机器码 DB mm011mmmFISTP qword ptr mem 保存⼋字节整数到mem并出栈机器码 DF mm111mmmFBSTP tbyte ptr mem 保存⼗字节BCD数到mem并出栈机器码 DF mm110mmmFCMOVB ST(0),ST(i) <时传送机器码 DA C0iiiFCMOVBE ST(0),ST(i) <=时传送机器码 DA D0iiiFCMOVE ST(0),ST(i) =时传送机器码 DA C1iiiFCMOVNB ST(0),ST(i) >=时传送机器码 DB C0iiiFCMOVNBE ST(0),ST(i) >时传送机器码 DB D0iiiFCMOVNE ST(0),ST(i) !=时传送机器码 DB C1iiiFCMOVNU ST(0),ST(i) 有序时传送机器码 DB D1iiiFCMOVU ST(0),ST(i) ⽆序时传送机器码 DA D1iii3、⽐较指令FCOM ST(0)-ST(1) 机器码 D8 D1FCOMI ST(0),ST(i) ST(0)-ST(1) 机器码 DB F0iiiFCOMIP ST(0),ST(i) ST(0)-ST(1)并出栈机器码 DF F0iiiFCOM real4 ptr mem ST(0)-实数mem 机器码 D8 mm010mmmFCOM real8 ptr mem ST(0)-实数mem 机器码 DC mm010mmmFICOM word ptr mem ST(0)-整数mem 机器码 DE mm010mmmFICOM dword ptr mem ST(0)-整数mem 机器码 DA mm010mmmFICOMP word ptr mem ST(0)-整数mem并出栈机器码 DE mm011mmmFICOMP dword ptr mem ST(0)-整数mem并出栈机器码 DA mm011mmmFTST ST(0)-0 机器码 D9 E4FUCOM ST(i) ST(0)-ST(i) 机器码 DD E0iiiFUCOMP ST(i) ST(0)-ST(i)并出栈机器码 DD E1iiiFUCOMPP ST(0)-ST(1)并⼆次出栈机器码 DA E9FXAM ST(0)规格类型机器码 D9 E54、运算指令FADD 把⽬的操作数 (直接接在指令后的变量或堆栈缓存器) 与来源操作数 (接在⽬的操作数后的变量或堆栈缓存器) 相加,并将结果存⼊⽬的操作数FADDP ST(i),ST 这个指令是使⽬的操作数加上 ST 缓存器,并弹出 ST 缓存器,⽽⽬的操作数必须是堆栈缓存器的其中之⼀,最后不管⽬的操作数为何,经弹出⼀次后,⽬的操作数会变成上⼀个堆栈缓存器了FIADD FIADD 是把 ST 加上来源操作数,然后再存⼊ ST 缓存器,来源操作数必须是字组整数或短整数形态的变数FSUB 减FSUBPFSUBR 减数与被减数互换FSUBRPFISUBFISUBRFMUL 乘FMULPFIMULFDIV 除FDIVPFDIVRFDIVRPFIDIVFIDIVRFCHS 改变 ST 的正负值FABS 把 ST 之值取出,取其绝对值后再存回去。
微型计算机原理与应用三
3.3 8086的寄存器结构
8086CPU内部具有14个16位寄存器,用于 提供运算、控制指令执行和对指令及操作数寻 址,也就是以前提到的工作寄存器组,基本分 为通用寄存器组、控制寄存器组和段寄存器组。
• 通用寄存器组
8个16位通用寄存器组分为两组:数据寄 存器及地址指针和变址寄存器。
1. 数据寄存器
数据寄存器包括AX、BX、CX和DX。在指 令执行过程中既可用来寄存操作数,也可用于 寄存操作的结果。它们中的每一个又可将高8 位和低8位分成独立的两个8位寄存器来使用。 16位寄存器可以用来存放数据,又可以用来存 放地址。而8位寄存器(AH、AL、BH、BL、CH 、CL、DH和DL)只能用于存放数据。
A L U
标志寄存器
执行 控制
电路
指令对列
1
2
3
4
8086为 6 字节
执行单元(EU)
总线接口单元
(BIU)
• 总线接口单元(BIU)
BIU包括4个段寄存器、指令指针IP(PC)、 指令队列寄存器(IR)、完成与EU通讯的内部寄 存器、地址加法器和总线控制逻辑。它的任务 是执行总线周期,完成CPU与存储器和I/O设备 之间信息的传送。具体地讲,就是取指令时, 从存储器指定地址取出指令送入指令队列排队; 执行指令时,根据EU命令对指定存储单元或I/O 端口存取数据。
决定I/O地址空间的容量。例如在8086CPU系统 中,地址总线的条数为20条,则存储器的最大 容量为220,即1MB字节;它的地址总线的低16 位用来对I/O端口编址,则I/O地址空间的容量为 216,即64K个I/O端口地址。
• 存储器和I/O端口的组织
地址 存储器中的字节 0 1
接 口 CPU 数 据 线 控 制 线 地 址 线 高位决定模块 I/O接口 I/O端口 I/O设备 01
第3章__S7-200_PLC的基本指令
图3-4 栈操作
逻辑读栈(Logic Read,LRD)指令 将栈中第2层的数据复制到栈顶,第2~7层 的数据不变,但是原栈顶值消失。
逻辑出栈(Logic Pop,LPP)指令使 栈中各层的数据向上移动一层,第2层的数 据成为栈新的栈顶值,栈顶原来的数据从 栈内消失。
3.1.2 置位与复位指令
1.置位与复位指令
置位/复位指令则是将线圈设计成置位 线圈和复位线圈两大部分,将存储器的置 位、复位功能分离开来。
S(Set)指令是置位指令,R(Reset) 指令是复位指令,指)指令时, 从指定的位地址开始的N个连续的位地址 都被置位或复位,N=1~255。当置位、复 位输入同时有效时,复位优先。置位/复位 指令的应用如图3-8所示,图中N=1。
保持(记忆),使能端再次接通有效时, 在原记忆值的基础上递增计时。TONR采 用线圈的复位指令进行复位操作,当复位 线圈有效时,定时器当前值清零,输出状 态位置为0。
保持型接通延时定时器应用程序如图 3-12所示。
图3-12 保持型接通延时定时器应用程序
(3)断电延时定时器
使能端输入有效时,定时器输出状态 位立即置1,当前值复位为0。使能端断开 时,开始计时,当前值从0递增,当前值达 到设定值时,定时器状态位复位置0,并停 止计时,当前值保持。
3.1.3 其他指令
1.边沿触发指令
边沿触发指令分为正跳变触发(上升 沿)和负跳变触发(下降沿)两种类型。
正跳变触发是指输入脉冲的上升沿使 触点闭合1个扫描周期。负跳变触发是指输 入脉冲的下降沿使触点闭合1个扫描周期, 常用作脉冲整形。边沿触发指令格式及功 能如表3-4所示。
第3章MCS-51单片机指令系统
第3章MCS-51单片机指令系统3.1概述3.1.1指令格式3.1.2指令的三种表示形式3.1.3指令的字节数1. 单字节指令(49条)图3-1 MOVA,Rn指令的格式2单片机原理及其接口技术(第2版)2. 双字节指令(46条)3. 三字节指令(16条)3.1.4指令的分类1. 数据传送指令(28条)2. 算术运算指令(24条)3. 逻辑操作和环移指令(25条)4. 控制转移指令(17条)5. 位操作指令(17条)3.1.5指令系统综述1. 指令系统中所用符号的说明2. 指令对标志位的影响3.2寻址方式3.2.1寄存器寻址图3-2寄存器寻址示意图单片机原理及其接口技术(第2版) 3 3.2.2直接寻址图3-3直接寻址示意图3.2.3立即寻址3.2.4寄存器间址图3-4寄存器间址寻址示意图3.2.5变址寻址图3-5变址寻址示意图4单片机原理及其接口技术(第2版)3.2.6相对寻址图3-6相对寻址示意图3.2.7位寻址3.3数据传送指令3.3.1内部数据传送指令(15条)1. 立即寻址型传送指令2. 直接寻址型传送指令3. 寄存器寻址型传送指令4. 寄存器间址型传送指令5. 内部数据传送指令的使用图3-7 8×C552/8051指令的数据传送方式单片机原理及其接口技术(第2版) 5 3.3.2外部数据传送指令(7条)1. 16位数传送指令2. 外部ROM的字节传送指令图3-8 0~9平方值表3. 外部RAM的字节传送指令3.3.3堆栈操作指令(2条)图3-9例3.8的堆栈变化示意图6单片机原理及其接口技术(第2版)3.3.4数据交换指令(4条)3.4算术与逻辑运算和移位指令3.4.1算术运算指令(24条)1. 加法指令2. 减法指令3. 十进制调整指令4. 乘法和除法指令3.4.2逻辑运算指令(20条)1. 逻辑与运算指令2. 逻辑或指令3. 逻辑异或指令4. 累加器清零和取反指令3.4.3移位指令(5条)单片机原理及其接口技术(第2版)7图3-10例3.26附图3.5控制转移和位操作指令3.5.1控制转移指令(17条)1. 无条件转移指令图3-11 AJMP指令转移范围8单片机原理及其接口技术(第2版)图3-12例3.29附图图3-13带符号数的比较方法3. 子程序调用和返回指令图3-14二级子程序嵌套及断点地址存放单片机原理及其接口技术(第2版)9图3-15例3.33附图10单片机原理及其接口技术(第2版)4. 空操作指令3.5.2位操作指令(17条)1. 位传送指令2. 位置位和位清零指令3. 位运算指令4. 位控制转移指令习题与思考题3.1指令通常有哪三种表示形式?各有什么特点?3. 2 MCS-51指令按功能可以分为哪几类?每类指令的作用是什么?3. 3 MCS-51共有哪七种寻址方式?各有什么特点?3. 4指出下列每条指令源操作数的寻址方式和功能。
第3章8086指令系统(上)
或
(SS)×16+(BP)
【例3-4】 已知:(DS)=3000H,(BX)=1100H,(31100H)= 12H,(31101H)=34H,执行指令:MOV AX, [BX]。 操作数的物理地址为:(DS)×16+(BX)=3000H×16+ 1100H=31100H,指令执行后(AX)=3412H。
本章内容提要
3.1 8086指令系统入门 3.2 数据据传送类指令 3.3 算术运算与逻辑运算类指令
3.1 8086指令系统入门
3.1.1 指令分类
数据传送类指令 算术运算类指令
字符串操作指令 处理器控制类指令
逻辑运算类指令
程序控制类指令
3.1.2 指令格式
操作码 [目的操作数][,源操作数]
3.1.3 操作数寻址
ADD SI, 2 LOOP LOP MOV BX, SI MOV DI, BX MOV 1000[DI], AX
;将累加和存入1000+(DI)指 ;向的内存单元
3.2 数据传送类指令
3.2.1 传送指令
格式:MOV DST, SRC 功能:将源操作数传送给目的操作数。 ① ② ③ ④ 在CPU内部寄存器之间进行数据传送 MOV AX,BX 在CPU内部寄存器与存储器之间进行数据传送 MOV AX,[1000H] 将立即数传送给寄存器 MOV AX,1234H 将立即数传送给存储单元 MOV [1000H],1000H
【例3-15】 已知:(DS)=3000H,(32000H)=12H,(32001H)= 34H,(32002H)=56H,(32003H)=78H。 执行指令:LDS SI, [2000H]。
汇编逻辑运算类指令
汇编逻辑运算类指令
汇编语言中的逻辑运算类指令包括与、或、非和异或等操作。
这些指令用于对数据进行逻辑运算,常用于处理位操作和逻辑判断。
首先是“与”操作,通常用AND指令表示,在大多数汇编语言
中是用关键字“AND”来表示。
AND指令用于将两个操作数的对应位
进行逻辑与操作,结果为1的位保留,结果为0的位清零。
其次是“或”操作,通常用OR指令表示,在汇编语言中是用关
键字“OR”来表示。
OR指令用于将两个操作数的对应位进行逻辑或
操作,只要有一个操作数的对应位为1,结果位就为1。
接下来是“非”操作,通常用NOT指令表示,在汇编语言中是
用关键字“NOT”来表示。
NOT指令用于对操作数的每一位进行取反
操作,即1变为0,0变为1。
最后是“异或”操作,通常用XOR指令表示,在汇编语言中是
用关键字“XOR”来表示。
XOR指令用于将两个操作数的对应位进行
异或操作,即相同则结果为0,不同则结果为1。
这些逻辑运算指令在汇编语言中被广泛应用于各种数据处理和控制流程中,能够对数据进行精确的位操作和逻辑判断,是编程中不可或缺的重要指令。
通过合理的组合和应用,可以实现复杂的逻辑运算和数据处理功能。
第三章基本指令系统
注:该指令用在多字节加法运算中。
28
例:两个4字节无符号数相加,两数分别在2000H、3000H开 始的内存单元,和放在2000H开始的4个内容单元。
MOV SI, 2000H MOV AX, [SI] MOV DI, 3000H ADD AX, [DI] MOV [SI], AX MOV AX, [SI+2] ADC AX, [DI+2] MOV [SI+2], AX ;SI指向一加数首址 2000H ;AX 8423H ;DI指向另一加数首址 ;AX 8423H+7F00H ;低16位和送[2000H][2001H] ;AX 1000H 3000H ;AX 1000H+2000H+CF ;高16位和送[2002H][2003H]
4)DST、SRC长度要一致。
MOV AL, BX ()
5) DST 不能是立即数 MOV 1000H, AX () 6)DST、SRC 不能同时为存储器寻址 MOV [1000H], [3000H] () 7)MOV指令不破坏源操作数
6
一、通用传送指令——XCHG
2、XCHG 格式:XCHG OPR1, OPR2 ; OPR1 OPR2 功能:两操作数内容相交换。 例: XCHG BL, AL ;两寄存器内容交换(字节交换)
第三章基本指令系统指令系统8086指令系统什么是指令系统cpu指令系统mcs51指令系统指令系统层指令系统的作用微处理器的指令系统指令系统就是指令吗
第三章 8086CPU基本指令系统
3.1 数据传送指令 3.2 算术运算指令
3.3 十进制调整指令
3.4 逻辑运算指令和移位指令 3.5 处理器控制指令
27
一、加法指令——ADC
计算机组成原理第3章-计算机指令和控制器-指令部分刘
A2 A2
A2
9
A3 A3
A3
15条二地址指令
3.1.2 指令的格式
3、扩展操作码技术—— 以指令字长16位为例
OP
A1
A2
A3
12位操作码
1111 1111
:
1111
1111 1111
1111
0000
A3
0001
A3
15条一地址指令
1110
A3
16位操作码 1111
1111
1111
1111
17
3.1.2 指令的格式
3、指令字长度(P119) 指令字长=操作码的位数+(操作数地址个数)*(操作数地 址码位数) 单字长指令——指令字长度等于机器字长度的指令 半字长指令、双字长指令、三/四字长指令、可变字长 等
4、简单指令系统的具体指令格式 ① pentium机指令 ② 嵌入式系统ARM机指令 ③ 模型指令(P121例1、例2)
已被淘汰
400
788
35
基址/变址寻址
指定一个寄存器R,其存放基址/变址,R被称为基址/变址 寄存器。
EA=(R)
MOV AX, [SI]
SI,DI 都称为变址寄存器
Mov AX,[BX]
BX是基址寄存器 内存
OP X
R
300 400
R 300
400
788
36
相对寻址
相对寻址是基址寻址的一 种变通,由程序计数器 PC提供基准地址,即
存储器地址名称:物理地址←→逻辑地址 物理地址——内存中实际地址 逻辑地址——在指令中表现形式 逻辑地址=段地址:偏移地址(8086CPU)
有效地址 EA=(R)+A
微机原理与接口技术(楼顺天)-第3章4资料讲解
3.5 算术运算类指令
(三)取负指令(NEG) Negate byte or word
格式:
NEG DST
;(DST) ←0-(DST)
说明:
DST可以取通用寄存器和存储单元。NEG指令
影响PSW中的6个状态标志位.
13
3.5 算术运算类指令
例如,设(AL)=01H,则执行指令 NEG AL 后,
5
3.5 算术运算类指令
例3.2 设在DVAR开始的连续8字节中分别存
放着两个数A和B(每个数为32位),求
C=A+B,并将结果C放到DVARC开始的内
存解中:。设这两个数分别为A=00127654H、
B=00049821H,则在数据段中有变量定义语
句:
DVAR DD 00127654H
DD 00049821H
SF=1,这说明-113<-104。 19
3.5 算术运算类指令
三、增量减量指令
格式:
INC DST
; (DST) ← (DST)+1
DEC DST
; (DST) ← (DST)-1
说明: INC和DEC指令可以正常影响PSW中的5个标志 位:AF、OF、SF、ZF和PF,但它们不会影响CF 位。
当两个有符号数进行比较时,OF=1表 示运算产生了溢出,但大小的比较要根据 OF和SF共同来决定,
当OFSF=0时,(DST)>(SRC), 当OFSF=1时,(DST)<(SRC)。
17
3.5 算术运算类指令
例: 两个无符号数(AL)=49H、(BL)= 28H进行大小比较。 解:指令段为:
MOV AL, 49H MOV BL, 28H CMP AL, BL 执行后,CF=0,ZF=0,说明49H>28H。 如果采用CMP BL,AL语句,则CF=1, 说明28H<49H。
单片机原理与接口技术(第3版)[李晓林]-第3章
有46条,三字节指令有16条。
3) 位操作指令极为丰富,这体现了MCS-51单片机
具有面向控制的特点。
09:28
单片机原理与接口技术(第3版).李晓林.电子工业出版社
返回目录
7
3.1.1 指令系统的分类
----按指令所占存储空间分类
MCS-51单片机能够识别并执行的指令共有111条。 按指令所占字节数、指令执行时间和指令功能进
09:28
单片机原理与接口技术(第3版).李晓林.电子工业出版社
返回目录
6
3.1 指令系统简介
----特点
1) 指令执行时间短。只需1个机器周期的指令有64 条, 2 个机器周期的指令有 45 条,而 4 个机器周 期的指令仅有2条(既乘法和除法指令)。 2) 指令字节少。单字节指令有49条,双字节指令
09:28
单片机原理与接口技术(第3版).李晓林.电子工业出版社
返回目录
18
3.1.4 寻址方式
----直接寻址
2.直接寻址 直接寻址是将操作数的地址直接存放在指令中。 这种寻址方式的操作数指的是内部数据存储器中存 放数据的地址,或存放数据的一个特殊功能寄存器 地址。
例如:MOV A, 30H
;(30H)→A
单片机原理与接口技术(第3版).李晓林.电子工业出版社
返回目录
16
09:28
3.1.4 寻址方式
如何找到参与运算的操作数据或数据所在的 地址称为寻址方式。所以寻址方式是在地址范围 内如何找到所需要的操作数的地址。 MCS-51指令系统的寻址方式主要有立即寻址、 直接寻址、寄存器寻址、寄存器间接寻址、基址
加变址寻址、相对寻址和位寻址等七种。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
12
〔例〕大小写字母转换程序
数据段定义的是小写字母 定义的是小写字母, ; 数据段定义的是小写字母,转换为大写字母后显示 大写=小写- 大写=小写-20H msg byte 'welcome',0 小写=大写+ 小写=大写+20H ; 代码段 msg)mov ecx,(lengthof msg)-1 ECX等于字符串长度 ; ECX等于字符串长度 EBX= mov ebx,0 ; EBX=0指向头一个字母 msg[ebx],'a'again: sub msg[ebx],'a'-'A' 小写字母减20H 20H转换为大写 ; 小写字母减20H转换为大写 inc ebx ; 指向下一个字母 loop again ; 循环 mov eax,offset msg call dispmsg ; 显示
6
增量指令INC 3. 增量指令INC
只有一个操作数:寄存器或存储单元 只有一个操作数: 对操作数加1 增量) 对操作数加1(增量)再将结果返回原处 reg/mem←reg/mem+ INC reg/mem ;加1:reg/mem←reg/mem+1 用于计数器和地址指针的调整 不影响进位CF标志, CF标志 不影响进位CF标志,影响其他状态标志位 例如 inc ecx inc esi inc wvar inc dvar[ebx+edi]
3.5 算术运算类指令
算术运算 对数据进行加减乘除 基本的数据处理方法 加减运算有“ 的结果外, 加减运算有 “ 和 ” 或 “ 差 ” 的结果外 , 还有进借 溢出等状态标志, 位、溢出等状态标志,也是结果的一部分 注意算术运算类指令对标志的影响 注意算术运算类指令对标志的影响 掌握: 掌握:加法和减法指令 熟悉: 熟悉:乘法和除法指令 理解:零位扩展和符号扩展 理解:
16
比较指令CMP 5. 比较指令CMP
SUB与 SUB与CMP? ?
将目的操作数减去源操作数,按照减法结果影响状态 将目的操作数减去源操作数, 标志, 标志,差值不回送目的操作数 做减法运算:dest- CMP dest,src ;做减法运算:dest-src 根据标志状态获知两个操作数的大小关系 给条件转移等指令使用其形成的状态标志 操作数与减法指令相同
;EAX=AAFF736FH,OF= ;EAX=AAFF736FH,OF=0,SF=0,ZF=0,PF=1,CF=0 SF= ZF= PF= CF= ax,3 add ax,3fffh ;ax=736fh+3fffh=b36eh ax=736fh+3fffh=b36eh 736fh+ 36
;EAX=AAFFB36EH,OF= ;EAX=AAFFB36EH,OF=1,SF=1,ZF=0,PF=0,CF=0 SF= ZF= PF= CF= eax,88000000 88000000h add eax,88000000h ;0aaffb36eh+88000000h aaffb36eh+88000000h 36eh+88000000
1
3.5.1 加法指令
加法指令 ADD 带进位加法指令 ADC 增量指令 INC INC不影响进位标志CF外 不影响进位标志CF 除INC不影响进位标志CF外 其他指令按定义影响全部状态标志位 按照运算结果相应设置各个状态标志为0或为1 按照运算结果相应设置各个状态标志为0或为1
数据传送类指令不影响( 不改变) 数据传送类指令不影响(=不改变)状态标志 不影响 加法和减法指令根据结果按定义改变 根据结果按定义改变状态标志 加法和减法指令根据结果按定义改变状态标志
7
3.5.2 减法指令
减法指令 SUB 带借位减法指令 SBB 减量指令 DEC 求补指令 NEG 比较指令 CMP DEC不影响CF标志外 不影响CF 除DEC不影响CF标志外 其他按定义影响全部状态标志位
数据传送类指令不影响( 不改变) 数据传送类指令不影响(=不改变)状态标志 不影响 加法和减法指令根据结果按定义改变 根据结果按定义改变状态标志 加法和减法指令根据结果按定义改变状态标志
13
求补指令NEG 4. 求补指令NEG
对操作数执行求补运算, 对操作数执行求补运算,即用零减去操作数 reg←0-reg, NEG reg/mem ;reg←0-reg,或者 mem←0- ;mem←0-mem 实际上是求机器负数——负数变正, ——负数变正 实际上是求机器负数——负数变正,正数变负 绝对值不变。 数,绝对值不变。 与求数的补码不一样,这点要注意。 与求数的补码不一样,这点要注意。 对标志的影响与用零作减法的SUB指令一样。 SUB指令一样 对标志的影响与用零作减法的SUB指令一样。 如果是一个负数,利用该指令, 如果是一个负数,利用该指令,可以求出它的 绝对值。 绝对值。
8
减法指令SUB 1. 减法指令SUB
目的操作数减去源操作数,差送到目的操作数 目的操作数减去源操作数, 减法:dest←dest- SUB dest,src ;减法:dest←dest-src
注: ① ② ③ ④ dest是寄存器,src可以是立即数、寄存器、 dest是寄存器,src可以是立即数、寄存器、存储单元 是寄存器 可以是立即数 dest是存储单元 src可以是立即数 是存储单元, 可以是立即数、 dest是存储单元,src可以是立即数、寄存器 不能两个操作数都是存储器操作数 dest不能是立即数 dest不能是立即数
;EAX=32FFB36EH,OF=1,SF=0,ZF=0,PF=0,CF=1 ;EAX=32FFB36EH,OF= SF= ZF= PF= CF=
4
带进位加法指令ADC 2. 带进位加法指令ADC
两个操作数相加,再加CF,结果送目的操作数 两个操作数相加,再加CF, CF 按照定义影响6 按照定义影响6个状态标志位 ;dest←dest+src+ ADC dest,src ;dest←dest+src+CF 注意事项与ADD ADD指令相同 注意事项与ADD指令相同 主要用于与ADD指令相结合实现多精度数的加法, 主要用于与ADD指令相结合实现多精度数的加法,例如 指令相结合实现多精度数的加法 64为数据的加法 为数据的加法: 64为数据的加法:
15
可用于求补码或由补码求其绝对值 mov ax,0ff64h ;AX=FF9CH,OF=0,SF=1,ZF=0,PF=1, neg al ;AX=FF9CH,OF=0,SF=1,ZF=0,PF=1,CF=1 ;AX=FFFFH,OF=0,SF=1,ZF=0,PF=1, sub al,9dh ;AX=FFFFH,OF=0,SF=1,ZF=0,PF=1,CF=1 ;AX=0001H,OF=0,SF=0,ZF=0,PF=0, neg ax ;AX=0001H,OF=0,SF=0,ZF=0,PF=0,CF=1 ;AX=0000H,OF=0,SF=0,ZF=1,PF=1, dec al ;AX=0000H,OF=0,SF=0,ZF=1,PF=1,CF=1 ;AX=0000H,OF=0,SF=0,ZF=1,PF=1, neg ax ;AX=0000H,OF=0,SF=0,ZF=1,PF=1,CF=0
可以是字节加法、16位加法、32位加法。 可以是字节加法、16位加法、32位加法。 位加法 位加法 影响6 影响6个状态标志位
3
例 eax,0aaff7348 7348h mov eax,0aaff7348h al,27 27h add al,27h ;EAX=AAFF7348H EAX=AAFF7348H 7348 ;al=48h+27h=6Fh al=48h+27h=带借位减法指令SBB
目的操作数减去源操作数,再减CF,结果送目的操作数 目的操作数减去源操作数,再减CF, CF 按照定义影响6 按照定义影响6个状态标志位 格式: 格式:SBB dest,src ;dest←dest-src- ;dest←dest-src-CF
操作数的注意事项与SUB指令相同。 操作数的注意事项与SUB指令相同。 SUB指令相同 用于与SUB指令相结合实现多精度数的减法 用于与SUB指令相结合实现多精度数的减法 SUB 先将两个操作数的低32位相减( SUB指令) 先将两个操作数的低32位相减(用SUB指令) 32位相减 指令 然后减高位部分、并减去借位( SBB指令 指令) 然后减高位部分、并减去借位(用SBB指令)
到此,已经学习过的算术运算指令, 到此,已经学习过的算术运算指令,注意进行功能对比 ADD与 ADD与ADC? ? ADD与 ADD与SUB? ? SUB与 SUB与SBB? ? ADC与 ADC与SBB? ? INC与 INC与DEC? ? DEC与 DEC与NEG? ?
2
加法指令ADD 1. 加法指令ADD
目的操作数加上源操作数, 目的操作数加上源操作数,和送到目的操作数 ADD dest,src 注:
① ② ③ ④
;加法:dest←dest+src 加法:dest←dest+
dest是寄存器,src可以是立即数、寄存器、存储单元 dest是寄存器,src可以是立即数、寄存器、 是寄存器 可以是立即数 Dest是存储单元 src可以是立即数 是存储单元, 可以是立即数、 Dest是存储单元,src可以是立即数、寄存器 不能两个操作数都是存储器操作数 Dest不能是立即数 Dest不能是立即数
14
如果 AX=0FFFFH, 执行 NEG AX 后,AX=0001, 可以看到,并不是数据FFFFH的补码, FFFFH的补码 可以看到,并不是数据FFFFH的补码, 如果是补码,应该是除符号位外,其它位取反, 如果是补码,应该是除符号位外,其它位取反,然后在最低位 +1 1111 1111 1111 1111 1000 0000 0000 0000 ;除符号外,每一位取反 除符号外, 最低位+1 1000 0000 0000 0001 ;最低位+1 8 0 0 1 ; 8001