11 第5章-寻址方式和指令系统(第11次课.v2015)
简述计算机指令的寻址方式
简述计算机指令的寻址方式计算机指令的寻址方式是指在执行指令时,CPU通过其中一种方式定位到指令所需的操作数或操作数所在的内存位置。
寻址方式可以分为立即寻址、直接寻址、间接寻址、寄存器寻址、寄存器间接寻址、寄存器相对寻址、相对基址寻址、相对变址寻址和堆栈寻址等形式。
立即寻址 (Immediate addressing):指令中的操作数直接包含在指令本身中。
该方式的特点是指令长度固定,操作数长度有限制。
直接寻址 (Direct addressing):指令中的操作数是内存中的一个绝对地址。
CPU将指令中的地址直接作为内存地址,在该地址处读取或写入数据。
间接寻址 (Indirect addressing):指令中的操作数是一个内存地址,该内存地址中保存了真正的操作数所在的内存地址。
CPU首先读取间接寻址所指向的内存地址,然后再从该地址处读取或写入数据。
寄存器寻址 (Register addressing):指令中的操作数是CPU内部的寄存器,不需要访问内存。
CPU直接从寄存器中读取或写入数据。
这种寻址方式的快速性和效率高。
寄存器间接寻址 (Register indirect addressing):指令中的操作数是CPU内部的寄存器,该寄存器中保存了一个内存地址,CPU使用该地址从内存中读取或写入数据。
寄存器相对寻址 (Register relative addressing):指令中的操作数是CPU内部的寄存器和一个固定的偏移量,CPU首先将寄存器的内容与偏移量相加,然后使用计算所得的结果作为内存地址,从内存中读取或写入数据。
相对基址寻址 (Base-indexed addressing):指令中的操作数是一个基址寄存器和一个索引寄存器,以及一个固定的偏移量。
CPU首先将基址寄存器的内容与索引寄存器的内容相加,然后再与偏移量相加,最后使用计算所得的结果作为内存地址,从内存中读取或写入数据。
相对变址寻址 (Relative addressing with offset):指令中的操作数是一个地址寄存器和一个偏移量,地址寄存器中保存了一个内存地址,CPU将地址寄存器中的地址与偏移量相加,然后使用计算所得的结果作为内存地址,从内存中读取或写入数据。
计算机指令系统寻址方式
2010-10-24
和基址寻址方式) •基址变址寻址方式 • 相对基址变址寻址方式 •比例变址寻址方式 •基址比例变址寻址方式 •相对基址比例变址寻址 34 方式
4.3 Intel 80x86/Pentium系列微型计算机寻址方式
8086/8088的指令采用变字长指令格式,指 令长度1~6个字节。第一个字节包含操作码, 第二字节通常表示寻址方式,第3~6个字节表 示位移量、立即数。
•
• • • • •
寄存器间接寻址
寄存器相对寻址 基址变址寻址 相对基址变址寻址 比例变址寻址方式 基址比例变址寻址方式
2010-10-24
MOV AX , [ BX ]
MOV AX , COUNT [ SI ] MOV AX , [ BP ] [ DI ] MOV AX , MASK [ BX ] [ SI ] MOV AX,5[EBX*2] MOV AX,[EBX][ESI*4]
2010-10-24 3
4.2 指令和数据的寻址方式
寻址方式:是指寻找操作数地址或操作数的方式。 4.2.1 指令的寻址方式 PC
顺序寻址方式 跳跃寻址方式
4
4.2.1 指令的寻址方式
跳跃寻址方式
5
4.2 指令和数据的寻址方式
4.2.2 操作数寻址方式
操作数包含在CPU的某一个内部寄存器中; 操作数包含在I/O 根据操作数放在不同的地方,从而派生各种不同 的寻址方式,往往不同的计算机具有不同的寻址 方式。
北京化工大学BUCT 信息科学与技术学院 本科课程教学 CSE22700D
微机原理及应用 Principles and Applications of Microcomputer Systems
(计算机原理)第5章指令系统
寻址方式
MIPS指令支持多种寻址方式,包括直接寻 址、间接寻址、寄存器寻址等,以满足不
同操作的需求。
指令格式
MIPS指令格式固定为32位或32位对齐的 64位,操作码和操作数之间通过分隔符进 行区分。
指令特点
MIPS指令集具有高效能、低功耗和高可靠 性的特点,广泛应用于网络通信、数字信 号处理等领域。
感谢您的观看
THANKS
指令长度设计
在设计指令长度时,需要综合考虑指令系统的功能、指令系统的长度、存储空 间的利用率等多个因素。同时,还需要考虑到不同指令长度的兼容性和扩展性。
03
指令系统的特性
指令系统的兼容性
总结词
指令系统的兼容性是指一个指令系统能够执行不同类型和 规模的程序的能力。
详细描述
指令系统的兼容性是衡量指令系统性能的重要指标之一。 一个好的指令系统应该能够支持多种类型的程序,包括操 作系统、应用程序、游戏等,以满足不同用户的需求。
总结词
指令系统的效率与软件优化密切相关。
详细描述
通过软件优化,可以减少完成一项任务所需的指令数量, 从而提高指令系统的效率。因此,在设计和实现指令系统 时,应充分考虑软件优化的需求和可能性。
04
指令系统的发展历程
第一代计算机的指令系统
总结词
简单、直接、低效
详细描述
第一代计算机采用真空管作为主要元件,指令系统非常简单,通常只有几十条指令,执 行速度慢,效率低下。
指令系统的执行时间
总结词
指令系统的执行时间是指完成一条指令所需的时间。
详细描述
指令系统的执行时间取决于多个因素,包括指令的复杂度 、处理器的时钟频率、指令缓存的命中率等。一个高效的 指令系统应该能够快速地完成指令的执行,从而提高计算 机的整体性能。
寻址方式与指令系统
(3)直接寻址
指令 寄存器
寄存器 EA (4)寄存器间接寻址
存储器 数据
图4-1 数据的寻址方式的寻址过程(2)
指令
寄存器
位移量
存储器 EA + 寄存器 地址 数据
(5)寄存器相对寻址
图4-1 数据的寻址方式的寻址过程(3)
指令 基址 寄存器 变址 寄存器
寄存器 变址值 存储器
EA
+ 寄存器
数据
除以上两种寻址方式外,下面各种寻址方式的
操作数均在存储器中,通过采用不同的寻址方 式取得操作数地址,从而取得操作数。
(3)直接寻址(Direct Addressing)
说明:在讨论寻址方式时,通常把操作数的偏
移地址称为有效地址EA (Effective Address) , EA可通过不同的寻址方式来得到。
寄存器寻址的特点
(1) 操作数就在寄存器中,不需要访问存储器来 取得操作数(指令执行时,操作就在CPU的内 部进行),因而执行速度快。 (2)寄存器号比内存地址短
* 在编程中,如有可能,尽量使用这种寻址方式的指令。
* 寄存器寻址方式既可用于源操作数,也可用于目的操 作数,还可以两者都用于寄存器寻址方式(如 MOV BX , AX )
在直接寻址方式中,指令中直接给出操作数的
有效地址,或者说,有效地址EA就在指令中。 它(操作数的有效地址,而不是操作数本身)存 放在代码段中指令的操作码之后,但操作数一 般存放在数据段中。
例 1. MOV AX , DS:[2000H];
如(DS)= 3000H, 则指令的执行情况如下图 所示:
OP 64
代
码
段
ADD AL, 20H ; 30 ADD AX, 1090H; 高地址
北航计算机系汇编语言课件2.寻址方式和指令系统
CALL BX
CALL [BX]
CALL word ptr [BX]
CALL dword ptr add1 CALL dword ptr [BX]
2.4 逻辑指令
(1) 逻辑运算: AND, OR, XOR,NOT AND AL,0Fh AND AND AL,0FEh OR XOR AL,AL OR AL,30h 与 AND (2) 测试指令: TEST TEST TEST dst,src AL,80h AL,08h
AL,0F0h AL,80h
第二部分:寻址方式和指令系统
一.指令格式与寻址方式
1. 8086指令的汇编语言格式
2. 3.
与数据有关的6种寻址方式 与转移指令有关的4种寻址方式
二.8086的指令系统
1. 2. 3. MOV指令、数据通路与指令规则 传送、算术、逻辑、移位指令 条件与转移
1.1 指令格式与寻址方式
Intel 8086/8088的指令格式
2.5 控制转移指令
(1) 无条件转移指令: JMP
(2) 条件转移指令: JA/JB/JE系列 JG/JL/JE系列 CF/ZF/SF标志位 求a-b的绝对值
(3) LOOP,LOOPZ,LOOPNZ MOV CX,100 L1: ……
above/below/equ greater/less/equ
LOOP L1 ;执行后,CX-1,CX=0,往下执行 极端情况:CX=0,则执行ffff次 (4) CALL与RET/RETF 分为段内调用/返回、段间调用/返回 (5) INT n与IRET 多了一个PUSHF/POPF
2.6 与转移指令有关的寻址方式
标号与过程名:定义了代码段内的偏移值(直接)
寻址方式与指令系统节
寻址方式与指令系统节导言在计算机科学中,寻址方式和指令系统是计算机体系结构设计中至关重要的两个方面。
寻址方式决定了数据的存取方式,而指令系统则规定了计算机执行操作的方法。
本文将探讨寻址方式和指令系统在计算机设计中的重要性,并对它们的一些常见形式和特点进行详细介绍。
寻址方式直接寻址直接寻址是一种简单的寻址方式,其中地址字段直接指向要访问的内存单元。
这种寻址方式效率高,但存储器可以直接访问的容量有限。
间接寻址在间接寻址中,地址字段指向另一个存储位置,该位置包含最终要访问的内存地址。
这种方式可以扩展寻址范围,但多了一次内存访问的开销。
寄存器寻址在寄存器寻址中,指令中直接给出一个寄存器地址,该寄存器中存储了要访问的内存地址。
这种方式速度快,但寄存器数量有限。
基址寻址基址寻址方式使用一个基址寄存器存储一个基地址,再使用另一个寄存器存储偏移量,通过将这两者相加得到最终的内存地址。
这种方式适合访问分散存储的数据结构。
变址寻址变址寻址方式类似于基址寻址,不同之处在于,变址寻址方式允许加上的偏移量不是固定的,而是由指令中提供的。
这种方式适合迭代访问数组等数据结构。
指令系统CISC复杂指令集计算机(CISC)是一种指令系统,其指令集包含了丰富的功能,一条指令可以完成多种操作。
CISC指令集通常包含复杂的寻址方式和复杂的指令格式,适合处理复杂的任务。
RISC精简指令集计算机(RISC)是另一种指令系统,其每条指令只执行一项操作,指令集更加简单明了。
RISC指令集通常使用固定长度的指令格式,寻址方式也相对较简单,适合处理简单快速的任务。
SIMD单指令多数据流(SIMD)是一种并行计算技术,其指令系统中一条指令可以同时处理多个数据元素。
SIMD适用于需要大量相同计算的任务,例如图像处理和数字信号处理。
VLIW超长指令字(VLIW)是一种指令系统,其一条指令包含多个操作,由硬件解析并同时执行。
VLIW通常需要编译器生成多个操作的组合,并且对硬件要求较高。
寻址方式及指令系统
协同发展提高计算机性能
通过寻址方式和指令系统的协同发展,可以不断提高计 算机的性能和灵活性,满足不断变化的计算需求。
谢谢
THANKS
序的可读性和可维护性。此外,间接寻址方式还可以用于实现间接函数调用、数组元素的访问等。
基址寻址方式
总结词
基址寻址方式是指将基址寄存器BX或BP 的内容加上位移量DISP。
VS
详细描述
在基址寻址方式中,操作数的有效地址是 由基址寄存器BX或BP的内容与位移量 DISP相加得到的。基址寻址方式常用于 数组元素的访问和变址运算等场景。通过 基址寻址方式,可以方便地实现数组元素 的遍历和跳转等操作。
变址寻址方式
总结词
变址寻址方式是指将变址寄存器的内容加上 位移量DISP。
详细描述
在变址寻址方式中,操作数的有效地址是由 变址寄存器的内容与位移量DISP相加得到 的。变址寻址方式常用于数组元素的访问和 程序中的循环结构等场景。通过变址寻址方 式,可以实现数组元素的动态遍历和循环变 量的自增等操作。
02 指令系统概述
CHAPTER
指令系统的定义
指令系统的定义
指令系统是计算机硬件能够直接执行 的指令集合,它规定了计算机所具有 的基本功能。
指令系统的特点
指令系统是计算机体系结构的核心组 成部分,其特点包括指令集的规模、 指令的功能、寻址方式、操作码的长 度等。
指令系统的组成
指令格式
01
指令格式是指令系统中每条指令的固定格式,包括操作码和地
间接寻址方式
总结词
间接寻址方式是指操作数通过间接指定的地址来访问,而不是直接给出操作数的值或寄 存器名称。
详细描述
在间接寻址方式中,指令中的地址码指示的是一个内存单元的地址,而不是直接给出操作数的值或寄存器名 称。通过访问该内存单元,可以得到操作数的值。间接寻址方式的优点是可以隐藏操作数的实际值,提高程
计算机指令寻址方式
计算机指令寻址方式计算机指令寻址方式是计算机系统中用来定位和获取操作数(即数据)或操作数所在存储单元地址的方法。
计算机指令寻址方式可以分为直接寻址、间接寻址、寄存器寻址、立即寻址和相对寻址等多种方式。
每种寻址方式都有其适用的场景和优缺点。
一、直接寻址直接寻址是指指令给出操作数的地址,CPU根据该地址直接访问内存或外设,找到对应的数据。
直接寻址方式简单直接,寻址速度较快。
但是,该寻址方式的局限性在于地址位数有限,只能寻址有限的存储单元。
如果需要操作的数据存储在比较远的地方,地址差距较大,直接寻址方式则会产生较长的指令长度,影响指令的执行效率。
二、间接寻址间接寻址是指指令中给出了一个地址,该地址中存放着实际操作数所在的地址。
CPU先根据给定的地址找到实际操作数的地址,然后再根据这个地址从内存或外设中获取数据。
间接寻址方式使得CPU可以通过操作数的地址间接地访问数据,具有较大的灵活性。
但是,这种寻址方式需要执行两次寻址操作,会降低执行效率。
三、寄存器寻址寄存器寻址是指将操作数存放在寄存器中,在指令中使用寄存器的编号或别名来表示操作数。
寄存器是一个位于CPU内部的高速存储器,读写速度非常快。
使用寄存器寻址方式可以提高程序的执行效率和运行速度。
然而,寄存器数量有限,无法存放过多的操作数,因此寄存器寻址方式适用于存放频繁使用的操作数。
四、立即寻址立即寻址是指操作数本身直接包含在指令中,不需要额外的访存操作。
立即寻址方式常用于执行简单的运算任务,提高了指令的执行速度。
但是,由于立即数的长度有限,导致该寻址方式只适用于操作数比较小的情况。
五、相对寻址相对寻址是指根据指令中给出的相对地址和程序计数器(PC)中存储的当前指令地址进行计算,获得绝对地址。
相对寻址方式常用于程序的跳转和分支指令,可以方便地实现程序的流程控制。
但是,相对寻址方式需要进行计算,执行速度较慢。
总结:计算机指令寻址方式是计算机系统中用来定位和获取操作数或操作数地址的方法,包括直接寻址、间接寻址、寄存器寻址、立即寻址和相对寻址等方式。
寻址方式和指令系统
语句格式:IMUL OPS
功 能 : 字 节 乘 法 : ( AL)*(OPS)→AX, 字 乘 法 : (AX)*(OPS)→DX、AX。
IMUL指令除计算对象是带符号二进制数外,其他都与 MUL一样,但计算结果不同。 【例2.26】有符号数 0B4H与11H相乘。
MOV AL,0B4H ;(AL)=B4H
2.3.3 乘运算指令
1.无符号数乘法指令MUL 2.有符号乘指令IMUL
第2章 寻址方式和指令系统
1.无符号数乘法指令MUL
语句格式: MUL OPS
功能: 若是字节数据相乘,(AL)与OPS相乘得到字数据存入AX 中;若是字数据相乘,则(AX)与OPS相乘得到双字数据,高字存 入DX、低字存入AX中。
第2章 寻址方式和指令系统
5.往目的串中存数指令STOS 语句格式:① STOSB——往字节串中存数 ②(2)STOSW——往字串中存数 功能:将AL或AX中的数据送入DI所指的目的串中的字节 (或字)存储单元中。 即:① 字节操作:(AL)→[DI],字操作:(AX) →[DI]。 ② 修改指针DI,使之指向串中的下一个元素。 当DF=0时,(DI)增量)。当DF=1时,(DI)减量。
第2章 寻址方式和指令系统
1.简单条件转移指令
第2章 寻址方式和指令系统
第2章 寻址方式和指令系统
2.无符号数条件转移指令 表2.2 无符号数条件转移指令
第2章 寻址方式和指令系统
【例2.53】比较无符号数大小,将较大的数存放AX 寄存器。
CMP AX, BX ;(AX)-(BX)
JNB NEXT
优秀精品课件文档资料
第2章 寻址方式和指令系统
第2章 寻址方式和指令系统
[计算机硬件及网络]计算机组成与汇编语言第五章笔记整理
计算机组成与汇编语言笔记整理第五章:指令系统本章要点指令、指令系统、指令的格式8086微处理器中指令与操作数的寻址方式8086指令系统指令系统的发展趋势5.1 指令系统概述5.1.1 指令的格式一条指令通常由操作码(Operation Code)和操作数(Operand)两部分组成,因此指令的基本格式可表示为:5.1.2 操作码指令的操作码是指用二进制编码表示的不同性质的操作,如加、减、乘、除、取数、存数等,每一种操作都有唯一对应的编码表示。
操作码的位数一般取决于计算机指令系统的规模。
一个包含n位的操作码最多能表示2n种操作。
CPU通过指令译码器来解释每一个操作码5.1.3 操作数的类型根据操作数的存储位置不同,可将其分为立即数、寄存器数、存储器数三种类型。
立即数类型的操作数直接在指令中给出。
寄存器类型的操作数存储于通用寄存器中,指令中给出寄存器编号。
存储器类型的操作数存储于存储器单元中,指令中给出直接地址或间接地址。
5.1.4 操作数地址码一条指令中有几个操作数,就应该有几个地址码。
一般情况下,根据指令中操作数地址码的个数,可将指令分为三地址指令格式、二地址指令格式、一地址指令格式和零地址指令格式。
立即数类型的操作数直接在指令中给出。
在CISC计算机中,指令中的地址码结构并不是单一的,往往多种格式混合使用,以便增强指令的功能。
5.2 寻址方式5.2.1 指令寻址方式在8086微处理器中,程序的执行顺序是由代码段寄存器CS和指令指针寄存器IP的内容决定的。
指令的寻址分为顺序寻址和跳跃寻址两种情况。
在顺序寻址方式下,每当BIU完成一条取指周期后,就自动改变指令指针IP的内容,使之指向下一条指令,这样程序就能够按预先编制的顺序执行。
跳跃寻址发生在程序控制类指令出现时,此时必须通过改变指令指针寄存器IP和代码段寄存器CS的内容,来改变程序的正常执行顺序,转到指定的指令地址。
跳跃寻址可分为段内直接寻址、段内间接寻址、段间直接寻址、段间间接寻址4种寻址方式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2) “或”运算指令 OR (or)
3) “非”运算指令 NOT (invert)
4) “异或”运算指令 XOR (Exclusive or)
– – – – 格式:XOR OP1,OP2 操作:两操作数相“异或”,结果送目标 地址 格式: TEST OP1,OP2 操作: 执行“与”运算,但运算的结果不送回目标地址。
3、逻辑运算与移位指令:
• 逻辑运算指令
– – – – – AND OR NOT XOR TEST SHL/SHR SAL/SAR ROL/ROR RCL/ROR Opd, Ops Opd, Ops Opd Opd, Ops Opd, Ops Opd, CNT Opd, CNT Opd, CNT Opd, CNT 对字节或字进行逻辑“与”操作 对字节或字进行逻辑“或”运算 对字节或字进行取反操作 对字节或字进行逻辑“异或”运算 对字节或字进行测试(“与”操作) 逻辑左移/右移 算术左移/右移 循环左移/右移 带进位循环左移/右移
STRING1
38H 35H 36H 32H
...
STRING2
• 试写出实现上述操作的源程 序,结果为?
39H 31H 36H 33H
数 据 段
...
SUM
参考源程序:
LEA SI,STRING1 LEA DI,STRING2 LEA BX,SUM MOV CX,4 CLC NEXT: MOV AL,[SI] ADC AL,[DI] AAA MOV [BX],AL INC SI INC DI INC BX DEC CX JNZ NEXT
微型计算机原理与接口技术
(第十一讲)
2、算术运算类指令:
•
– –
加法指令
ADD/ADC INC Opd, Ops Opd Opd, Ops Opd Ops Ops 加法/带进位加法(字节或字) 加1(字节或字) 减法/带借位减法/比较(字节或字) 减1/求补(字节或字) 无符号/有符号乘法(乘数、乘积隐含在AX) 无符号/有符号除法(被除数、商/余隐含AX)
2) 字到双字扩展指令CWD(Convert Word to Double Word)
• 格式:CWD • 功能:将AX内容扩展到DX: AX
• 说明:若最高位=1,则执行后DX=FFFFH;若最高位=0,则 执行后DX=0000H;对标志位无影响;
(6) BCD码调整指令
1) 加法调整指令AAA/DAA(ASCII/Decimal Adjust for Add) • 功能:非压缩/压缩BCD码加法结果调整 2) 减法调整指令 AAS/DAS(ASCII/Decimal Adjust for Subtract) • 功能:非压缩/压缩BCD码减法结果调整 3) 乘法调整指令 AAM (ASCII Adjust for Multiply) • 功能:非压缩BCD码乘法结果调整 4) 除法调整指令 AAD (ASCII Adjust for Divide) • 功能:非压缩BCDI码除法结果调整 说明: ① 均为隐含寻址方式,隐含的操作数是AL或AL、AH; ② 不能单独使用,要紧跟在相应的算术运算指令之后; ③ 执行结果为压缩BCD码或扩展BCD码的十进制数。
(1)无溢出:
若 C > 0 ,则 A >B 若 C < 0 ,则 A <B OF=0,SF=0,举例 127 - 3 OF=0,SF=1,举例 3 - 127
(2)有溢出:
若 C < 0 ,则 A >B (正溢出) 若 C > 0 ,则 A <B (负溢出) OF=1,SF=1,举例 127 - (-3) OF=1,SF=0,举例 -3 - 127
5) “测试”指令 TEST (And Function to Flags, No Result)
说明:
① 逻辑运算指令对操作数的要求与MOV指令基本相同; ② “非”运算指令要求操作数不能是立即数; ③ 除“非”指令外,其余指令执行都会使标志位OF=CF=0
例:
XOR AX, AX OR CL, 0FH AND AX, AX OR AL, 80H AND AL, 0FH ; 累加器中各位清零
AAA的调整法则:
• 若 (AL&0FH) > 9 或 AF = 1,则 AL = AL+6 AH = AH+1 AF = 1 CF = 1 AL = AL & 0FH
例:
• 计算2658+3619=? 结果存放 在SUM单元。 • 设被加数和加数的每一位都 以ASCII码形式存放在内存中, 低位在前,高位在后。
; 计数寄存器低4位置1
; 清除OF、CF标志 ; AL最高位置1
; AL高4位清零
;累加器中各位取反 ;指定地址存储单元内容取反
NOT AX
NOT BYTE PTR[BX]
(2) 移位指令
非循环移位指令(SHL/SHR、SAL/SAR)
循环移位指令
• •
–
(ROL/ROR、RCL/RCR)
格式: 功能:
– – – – – – – – 格式:AND OP1,OP2 功能:两操作数相“与”,结果送目标地址 应用:使目标操作数的某些位清零,其他位不变; 格式:OR OP1,OP2 功能:两操作数相“或”,结果送目标地址 应用:使某些位置“1” ,其他位不变; 格式:NOT OP 操作:操作数按位取反再送回原地址;
–
xxL / xxR OP1, 1/CL
目的操作数OP1按照源操作数(1或CL)值进行相应移位,
将移出位送进位标志CF,结果存入目的操作数OP1中;
•
说明:
① 目的操作数OP1可以是寄存器操作数或存储器操作数;
② 移动1位由指令直接给出,移动两位及以上由CL指定;
1) 非循环移位指令
(Shift Logical Left/Right)
例:
1) MOV AL, 0001 0001B ; 无符号数 17 SHL AL, 1 2) MOV AL, 1111 1001B ;有符号数 -7 SAL AL, 1 AL=0010 0010B ;无符号数 34
CF=0
AL=1111 0010B ;有符号数 -14 CF=1
•
– – –
BCD调整指令
AAA/DAA AAS/DAS AAM/AAD
•
掌握要点:
① ② 可以处理无符/有符号的8/16位二进制数,以及不带符号的BCD型十进制数; 对BCD码数先按二进制数进行运算,再对中间结果进行调整(紧跟运算指令)
(1) 加法指令
1) 普通加法指令 ADD (Add) • 格式:ADD OP1, OP2 • 功能:OP1+OP2 OP1 • 说明:对全部6个状态标志位都产生影响; 2) 带进位加法指令 ADC (Add with Carry) • 格式:ADC OP1, OP2 • 功能:OP1+OP2+CF OP1 • 说明:用于多字节数相加,使用前要先将CF清零。 3) 加1指令 INC (Increment) • 格式:INC OP1 • 功能:OP1+1 OP1 • 说明:操作数不能是段寄存器或者立即数;不影响CF标志;
• 若将两操作数看作有符号数,则执行指令: IMUL CL 结果:AX = FFDEH ;有符号数 -34
(4) 除法指令
1) 无符号除法指令 DIV (Divide) • 格式:DIV OP • 功能: 若OP是字节数,则执行AX / OP 若OP是双字节数,则执行 DX : AX / OP
AL=商 AH=余数 AX=商 DX=余数
•
– –
减法指令
SUB/SBB/CMP DEC/NEG
•
–
乘法指令
MUL/IMUL
•
–
除法指令
DIV/IDIV
•
– –
符号扩展指令
CBW CWD 将AL中的符号位扩展到AH中的所有位 将AX中的符号位扩展到DX中的所有位
非压缩/压缩BCD码加法结果调整 非压缩/压缩BCD码减法结果调整 UL
(Integer Multiply)
• 格式: IMUL OP • 说明:将OP视为有符号数,运算时若操作数为负数,则先将 其变补(求绝对值),运算后再将结果变补。
例:
设:AL = FEH,CL = 11H,求AL与CL的乘积。 • 若为无符号数,则执行指令 MUL CL 结果:AX = 10DEH ;无符号数 8382
CMP指令:
• 两个无符号数的比较: CMP AX,BX 若 CF=0 AX > BX 若 CF=1 AX < BX • 两个有符号数的比较: CMP AX,BX 两个数的大小由OF和SF共同决定: OF和SF状态相同 AX > BX OF和SF状态不同 AX < BX
两个有符号数的比较:
设两个有符号数A、B作减法运算,结果为C;
结果为:
SUM 6277 07 H 07 H 02 H 06 H
DAA的调整法则:
• 若 (AL&0FH) > 9 或 AF = 1,则 AL = AL + 06H AF = 1 • 若 AL > 9FH 或 CF = 1,则 AL = AL + 60H CF = 1
思考:若将上述程序中的AAA指令,替换为DAA则SUM为?
• 说明:对标志位无影响;要求被除数是除数的双倍字长; 2) 有符号除法指令 IDIV (Integer Divide) • 格式:IDIV OP • 说明:对标志位有影响,其他情况同DIV;
(5) 符号位扩展指令
1) 字节到字扩展指令CBW(Convert Byte to Word)
• 格式:CBW • 功能:将AL内容扩展到AX • 说明:若最高位=1,则执行后AH=FFH;若最高位=0,则执行 后AH=00H;对标志位无影响;