微机原理与接口第六次课-课件

上传人:无*** 文档编号:241326692 上传时间:2024-06-18 格式:PPT 页数:105 大小:890.50KB
返回 下载 相关 举报
微机原理与接口第六次课-课件_第1页
第1页 / 共105页
微机原理与接口第六次课-课件_第2页
第2页 / 共105页
微机原理与接口第六次课-课件_第3页
第3页 / 共105页
点击查看更多>>
资源描述
1 算术运算符算术运算符算术运算符算术运算符(单目单目单目单目+,+,单目单目单目单目-,+,-,*,/,MOD)-,+,-,*,/,MOD)运算符运算符 格格 式式 运运 算算 +表达式表达式 取表达式正值取表达式正值 -表达式表达式 取表达式负值取表达式负值 +表达式表达式1+表达式表达式2 求表达式求表达式1、表达式、表达式2之和之和 -表达式表达式1-表达式表达式2 求表达式求表达式1、表达式、表达式2之差之差 *表达式表达式1*表达式表达式2 表达式表达式1、表达式、表达式2之积之积 /表达式表达式1/表达式表达式2 表达式表达式1、表达式、表达式2之商之商 MOD 表达式表达式1 MOD 表达式表达式2 取余数取余数 说明:说明:1、算术运算符可用于数值表达式或地址表达式、算术运算符可用于数值表达式或地址表达式2、用于地址表达式时,只有其结果有物理意义时才有效、用于地址表达式时,只有其结果有物理意义时才有效 常用的是:常用的是:地址地址地址地址+数字常量数字常量数字常量数字常量 地址地址地址地址-数字常量数字常量数字常量数字常量2(1)双目双目 MOV AL,8+4 ;MOV AX,0CH(000CH 16位)位)相当于相当于 MOV BL,08H MOV CL,04H ADD BL,CL MOV AL,BL(2)单目单目MOV AX,-4;-4补码补码 100H-04H 相当于相当于 MOV AX,0FCH MOV AX,0FFCH(16位)位)伪指令:(伪指令:(伪指令:(伪指令:(1 1)简化程序)简化程序)简化程序)简化程序 (2 2)提高程序可读性)提高程序可读性)提高程序可读性)提高程序可读性算术运算符示例算术运算符示例3 逻辑运算符逻辑运算符逻辑运算符逻辑运算符(NOT,AND,OR,XOR)(NOT,AND,OR,XOR)运算符运算符 格格 式式 运运 算算 NOT NOT 表达式表达式 按位取反按位取反 AND 表达式表达式1 AND 表达式表达式2 按位按位“与与”运算运算 OR 表达式表达式1 OR 表达式表达式2 按位按位“或或”运算运算 XOR 表达式表达式1 XOR 表达式表达式2 按位按位“异或异或”运算运算 逻辑运算符和逻辑运算指令的区别:逻辑运算符和逻辑运算指令的区别:逻辑运算符和逻辑运算指令的区别:逻辑运算符和逻辑运算指令的区别:逻辑运算指令逻辑运算指令 逻辑运算符逻辑运算符出现在语句的位置出现在语句的位置 指令助记符指令助记符 操作数字段操作数字段操作对象操作对象 可以是寄存器或可以是寄存器或 只能是整型常数只能是整型常数 存储器操作数存储器操作数何时计算何时计算 程序运行时程序运行时 源程序汇编时源程序汇编时4 移位运算符移位运算符移位运算符移位运算符(SHL,SHR)(SHL,SHR)运算符运算符 运运 算算 SHL 左移左移 SHR 右移右移 算术移位与逻辑移位的区别:算术移位与逻辑移位的区别:算术移位与逻辑移位的区别:算术移位与逻辑移位的区别:算术移位:存在溢出算术移位:存在溢出算术移位:存在溢出算术移位:存在溢出 逻辑移位:不存在溢出逻辑移位:不存在溢出逻辑移位:不存在溢出逻辑移位:不存在溢出 环移环移环移环移 存放在存放在存放在存放在CFCF进位中进位中进位中进位中 算术移位例.算术左移CF0101101010CF0011010101逻辑左移CFCF101101010CF10110101116关系运算符关系运算符关系运算符关系运算符(EQ,NE,LT,LE,GT,GE)(EQ,NE,LT,LE,GT,GE)运算符运算符 格格 式式 运运 算算 EQ 表达式表达式1 EQ 表达式表达式2 表达式表达式1=表达式表达式2为真为真 NE 表达式表达式1 NE 表达式表达式2 表达式表达式1表达式表达式2为真为真 LT 表达式表达式1 LT 表达式表达式2 表达式表达式1表达式表达式2为真为真 LE 表达式表达式1 LE 表达式表达式2 表达式表达式1表达式表达式2为真为真 GE 表达式表达式1 GE 表达式表达式2 表达式表达式1=表达式表达式2为真为真 关系运算符的两个操作数必须都是常量或同一段内的关系运算符的两个操作数必须都是常量或同一段内的符号地址,比较结果为逻辑值:符号地址,比较结果为逻辑值:如果关系成立,则返如果关系成立,则返如果关系成立,则返如果关系成立,则返回回回回0FFFFH(0FFFFH(真真真真);否则,返回;否则,返回;否则,返回;否则,返回0(0(假假假假)。7逻辑运算符示例逻辑运算符示例 MOV AH,NOTNOT 0F0H 0F0H ;0FH-AH MOV CH,AH AH AND AND 01H 01H ;保留最后一位;保留最后一位-CH(AND 常用置零,常用置零,OR 常用于置常用于置1)关系运算符示例关系运算符示例 N1 EQU 10 N2 EQU 20 .MOV BX,N1N1 EQ EQ N2 N2 ;0-BX MOV CX,N1N1 NE NE N2 N2 ;0FFFFH-CX MOV AX,N1 N1 LTLT N2 N2 ;0FFFFH-AX MOV DI,N1 N1 GEGE N2 N2 ;0-DI8数值回送运算符数值回送运算符 (SEG,OFFSET,TYPE,LENGTH,SIZE)(SEG,OFFSET,TYPE,LENGTH,SIZE)数值回送运算符对变量或标号进行分析,数值回送运算符对变量或标号进行分析,回送其地址属性值或变量特征值。回送其地址属性值或变量特征值。1.1.地址回送操作符地址回送操作符地址回送操作符地址回送操作符返回的是变量或标号的段段地地址址,偏偏移移地址地址及类型类型的属性值。格式格式:分析操作符分析操作符 变量或标号变量或标号其运算的结果为一常数(1)SEG(1)SEG取段址算符取段址算符取段址算符取段址算符(2)OFFSET(2)OFFSET取偏移地址算符取偏移地址算符取偏移地址算符取偏移地址算符功能功能:分离出该变量或标号的段址 如:MOV AX,SEG BUF功能功能:分离出该变量或标号的偏移地址 如:MOV SI,OFFSET BUF11地址回送运算符地址回送运算符地址回送运算符地址回送运算符 符号符号 作用对象作用对象 操操 作作 SEG 变量或标号变量或标号 返回其所在段的段基址值返回其所在段的段基址值OFFSET 变量或标号变量或标号 返回其在段内的偏移量返回其在段内的偏移量 SEG:标号标号 CS,变量变量 DS地址:地址:SEG10H+OFFSET(3)TYPE(3)TYPE取类型算符取类型算符取类型算符取类型算符(4)LENGTH(4)LENGTH取变量所含存储单元的个数取变量所含存储单元的个数取变量所含存储单元的个数取变量所含存储单元的个数功能功能:分离出该变量所含存储单元的个数。功能功能:分离出该变量的字节数或标号的类型。(5)SIZE(5)SIZE取变量所含存储区的总字节数。取变量所含存储区的总字节数。取变量所含存储区的总字节数。取变量所含存储区的总字节数。功能功能:SIZE=LENGTH*TYPE 13TYPE TYPE 运算符运算符运算符运算符 类型属性类型属性 运算结果运算结果变量变量 DB 1 DW 2 DD 4 DQ 8 DT 10标号标号 NEAR -1 FAR -214符号特征回送运算符符号特征回送运算符符号特征回送运算符符号特征回送运算符 符号符号 作用对象作用对象 操操 作作 TYPE 变量或标号变量或标号 用数字表示其类型属性用数字表示其类型属性 LENGTH 变量变量 用用DUP重复定义符定义的变量重复定义符定义的变量 ,返回分配的元素个数;其他,返回分配的元素个数;其他 形式,则返回形式,则返回1 SIZE 变量变量 回送回送LENGTH*TYPE之积之积 格式格式:类型类型 PTR 表达式表达式类型类型:表达式表达式:是变量、标号或数值:是变量、标号或数值 变量的类型有:变量的类型有:BYTE、WORD和和DWORD;标号的类型有:标号的类型有:NEAR和和FAR;结构名称结构名称属性修改操作符(属性修改操作符(属性修改操作符(属性修改操作符(PTRPTR、THISTHIS、SHORTSHORT)(也称合成操作符号也称合成操作符号也称合成操作符号也称合成操作符号)1.PTR1.PTR操作符操作符操作符操作符 PTR操作符用于暂时暂时修改变量或标号的原有属性。功功能能:PTR把它左边的属性指派给它右边的变量、标号或数值,使之产生一个新的存储器地址操作数。如:(1)INC BYTE PTR BX (2)ADD DX,WORD PTR FOOB20 新存储器操作数的段地址和段内偏移量与PTR运算符右边的操作数的对应量相同。PTR给已分配的存储器一个另外的定义但并不重新分配存储器。2.SHORT2.SHORT操作符操作符操作符操作符SHORT用于条件转移、转移和调用指令中,说明标号为短标号。格式:格式:格式:格式:JMP SHORT JMP SHORT 标号标号标号标号 操作:操作:操作:操作:转移的距离属性为短,即转移范围为转移的距离属性为短,即转移范围为转移的距离属性为短,即转移范围为转移的距离属性为短,即转移范围为-128+127-128+127 3.THIS3.THIS操作符操作符操作符操作符 THIS操作符与PTR操作符有类似的功能,但新的属性放在THIS的右边右边。格式:格式:THIS 类型类型/距离距离其中类型是BYTE、WORD和DWORD,距离是NEAR和FAR属性。功功能能:与PTR类似建立一个新的存储器地址操作数,但不分配存储器,其类型由THIS指定。(1)FOOB EQU THIS BYTE(2)FAR-OUT EQU THIS FAR如:19运算符优先级运算符优先级运算符优先级运算符优先级优先级优先级 运算符运算符 类类 别别 1 LENGTH,SIZE 数值回送运算符数值回送运算符 2 PTR,OFFSET,SEG,TYPE,属性与数值回送运算符属性与数值回送运算符 3 +,-符号运算符符号运算符 4 *,/,MOD,SHL,SHR 算术运算算术运算,移位运算符移位运算符 5 +,-算术运算符算术运算符 6 EQ,NE,LT,LE,GT,GE 关系运算符关系运算符 7 NOT 逻辑运算符逻辑运算符 8 AND 逻辑运算符逻辑运算符 9 OR,XOR 逻辑运算符逻辑运算符 说明:优先级说明:优先级1最高,而优先级最高,而优先级9最低最低 圆括号()可改变执行顺序圆括号()可改变执行顺序表表达达式式:由运运算算符符连接起来的式子叫表达式,按一定的规则对表达式进行运算后得到一个数值或一个地址。表达式可分为算算术术表表达达式式、逻逻辑辑表表达达式式、关关系系运运算算表表达达式式、分分析析运运算算表表达达式式和合合成成运运算算表达式。表达式。用算术运算符+、-、*、/和MOD连接的表达式。算术表达式算术表达式用逻辑运算符AND、OR、XOR和NOT连接的表达式。逻辑表达式逻辑表达式例如:例如:5*8+305*8+30,128/100 128/100,206 MOD 128 206 MOD 128 等算术等算术表达式。表达式。逻辑逻辑表达式的表达式的结结果可能果可能为为8 8位或位或1616位二位二进进制制数,视参加运算的数的字长而定。数,视参加运算的数的字长而定。逻辑运算指令中可以包含有逻辑表达式,如逻辑运算指令中可以包含有逻辑表达式,如指令指令 AND AL,10101010B AND 0FH 左边第一个左边第一个AND为逻辑运算指令,第二个为逻辑运算指令,第二个AND为逻辑运算符,为逻辑运算符,10101010B AND 0FH 为为逻辑表达式,其结果在汇编时即已确定,为逻辑表达式,其结果在汇编时即已确定,为00001010B,故上述指令等价于故上述指令等价于 AND AL,00001010B用EQ、NE、LT、GT、GE和LE连接的表达式。若条件成立,其值为11,否则为0。关系运算表达式关系运算表达式例如:指令例如:指令 MOV BX,5 GT 3 等价于等价于 MOV BX,0FFFFH 多种运算符常结合起来使用多种运算符常结合起来使用,有优先级有优先级(教材教材:P70):P70)例如:ADD AX,(port GT 60)AND 50)OR(port LE 60)AND 70)分析运算表达式和合成运算表达式分析运算表达式把存储器操作数分析运算表达式把存储器操作数分解分解为几个为几个部分部分,如分解出如分解出:段值、偏移量、类型等;段值、偏移量、类型等;合成运算表达式则把这些组成部分合成运算表达式则把这些组成部分综合综合为存为存储器操作数。储器操作数。分析运算表达式和合成运算表达式的操作对象都为分析运算表达式和合成运算表达式的操作对象都为存储器操作数存储器操作数。存存储储器操作数表示器操作数表示变变量、符号地址、存量、符号地址、存储单储单元元等等,与存储器与存储器地址地址有关。有关。例如,MOV BX,OFFSET ASC OFFSET ASC 即为分析运算表达式,其作用:取存储器操作数(变量)ASC的地址偏移量,若变量ASC的偏移地址为0001H,即OFFSET ASC=0001H。该指令等价于MOV BX,0001H 汇编语言程序的上机过程汇编语言程序的上机过程 1 1 1 1 汇编语言程序上机运行的软件环境汇编语言程序上机运行的软件环境汇编语言程序上机运行的软件环境汇编语言程序上机运行的软件环境 DOS操作系统下,编辑、修改和运行汇编语言程序,需要用文本编辑软件、宏汇编程序、连接程序和调试程序。文本编辑软件:EDIT.EXE等 宏汇编程序:MASM.EXE,TASM.EXE等 连接程序:LINK.EXE,TLINK.EXE等 调试程序:CV.EXE,TD.EXE等 2 2 源程序的编辑与汇编源程序的编辑与汇编源程序的编辑与汇编源程序的编辑与汇编1.1.编辑源程序编辑源程序编辑源程序编辑源程序 C:ASMEDIT HEXTOASC.ASM(回车)(回车)2.2.汇编源程序汇编源程序汇编源程序汇编源程序 C:ASMTASM HEXTOASC(回车)(回车)在汇编中,如果有语法错误,会给出提示信息,指出错误的类型、行号。当汇编无错之后,会自动生成目标文件(文件扩展名为OBJ)。注:待编辑的文件扩展名必须为 ASM。汇编程序通过ASSUME语句了解到运行时各段寄存器的设定值后,就可以对被汇编的指令语句中的变量和标号作如下处理。3.3.汇编程序对变量和标号的处理汇编程序对变量和标号的处理汇编程序对变量和标号的处理汇编程序对变量和标号的处理 1.检查指令中所引用的变量和标号是否合理,即它们的段属性是否和某个段寄存器的段假设值相符。2.检查是否需要为所引用的变量和标号产生跨段前缀字节,即检查变量和标号的段属性是否与硬件为该指令所规定的段寄存器的假设值相符。3 3 目标程序的连接目标程序的连接目标程序的连接目标程序的连接 C:ASMTLINK HEXTOASC(回车)(回车)连接成功后,将生成可执行程序HEXTOASC.EXE。4 4 程序的调试与运行程序的调试与运行程序的调试与运行程序的调试与运行 1 1调试可执行程序调试可执行程序调试可执行程序调试可执行程序 利用Turbo Debuger(TD)对可执行程序进行调试,以检查程序可能存在的各种错误:C:ASMTD HEXTOASC.EXE(回车)(回车)2 2运行可执行程序运行可执行程序运行可执行程序运行可执行程序 C:ASMHEXTOASC(回车)(回车)汇编语汇编语言的言的语语句格式句格式(Statement Formats)(Statement Formats)汇编语汇编语言程序的每行言程序的每行语语句由句由14个部分组成。个部分组成。指令语句和伪指令语句在格式上稍有区别,指令语句和伪指令语句在格式上稍有区别,指令指令语句的标号后有冒号语句的标号后有冒号“:”,而,而伪指令伪指令语句的标语句的标号后则没有冒号。号后则没有冒号。指令语句的格式为指令语句的格式为 LABEL:OPERATION OPERAND ;COMMENT 标号域标号域 指令助记符域指令助记符域 操作数域操作数域 注释域注释域伪指令语句的格式为伪指令语句的格式为 LABEL OPERATION OPERAND ;COMMENT 标号域标号域 伪指令助记符域伪指令助记符域 操作数域操作数域 注释域注释域 一行最多可有一行最多可有132132个字符个字符 注注:指令助记符前面还可以有指令助记符前面还可以有 前缀前缀。汇编语言程序语句中的四项,均可以用汇编语言程序语句中的四项,均可以用大写大写、小写小写或或混合编写混合编写。语句的各部分之间至少用一个语句的各部分之间至少用一个空格空格分开分开 汇编语言源程序的组成汇编语言源程序的组成汇编语言源程序的组成汇编语言源程序的组成 汇编语汇编语言源程序的言源程序的结结构构(Program Structure)(Program Structure)数据段数据段 说明:说明:堆栈段堆栈段 1、各段顺序无关、各段顺序无关 2、除代码段外,可缺省、除代码段外,可缺省 3、可有若干个数据段,、可有若干个数据段,若干代码段若干代码段 代码段代码段 END 标号标号 附加段附加段源程序结构概览简化段定义完整段定义P71汇编语言源程序由汇编语言源程序由段结构段结构组成。组成。一个段一个段由由“SEGMENTSEGMENT”(段定段定义开始开始)和和“ENDSENDS”(段定段定义结束束)语句来定句来定义。每个段都有每个段都有唯一的唯一的段名段名,前后一致。,前后一致。不同不同段段的段名不能相同。的段名不能相同。数据段、堆数据段、堆栈段和代段和代码段的作用各不相同段的作用各不相同。各个段都由一系列各个段都由一系列语句句组成成。语句包括句包括指令指令语句和句和伪指令指令语句句。通用指令集通用指令集8086指令按功能分为六大类。指令按功能分为六大类。8086指令系统数据传送指令算术运算指令逻辑运算指令串操作指令程序控制指令CPU控制指令一、数据传送指令一、数据传送指令一、数据传送指令一、数据传送指令数据传送指令能够完成下列操作数的传送任务。立即数存储器段寄存器CS,DS,ES,SS通用寄存器组AX,BX,CX,DXBP,SP,SI,DI(CS不能作目的)1.1.1.1.通用数据传送指令通用数据传送指令通用数据传送指令通用数据传送指令(1)MOV d,s功功能能:将源操作数s复制到目标操作数d,源保持不变,目标被源代替。注注:d,s不能同时为存储器错误指令:MOV BX,SI d不能为立即数 错误指令:MOV 1234H,AX d,s必须同时为字节型或字型错误指令:MOV AX,BL 指令后的分号“;”以后为注释部分,对指令的执行没有任何影响,主要是便于阅读或解释指令的功能。例例:MOV AX,0 ;AX0,AX清0 执行后,AX=0MOV SI,BP ;SIBP,BP内容送SI 执行后,SI=BP,BP不变不变MOV AL,BUFFERS ;BUFFERS内存单元内容送入AL这里,BUFFERS代表符符号号地地址址,从该地址单元中取出内容送AL寄存器。相当于直接寻址方式。相当于直接寻址方式。EA=BUFFERS偏移量偏移量3030HBUFFERSALMOV AX,DATA SI+BXEA=SI+BX+DATA,在数据段中寻找字单元,取出该字单元的内容送入AX。设DS=3000H,SI=200H,BX=1000H,DATA的偏移量为100H,则EA=SI+BX+DATA=200H+1000H+100H=1300H物理地址=DS16+EA=30000H+1300H=31300H 即从31300H和31301H两单元中取出内容送AX。DS1630000H123434H12HAXAH ALEA=1300HDATASIBXDATA31300H31301HMOV AX,DATA SI+BX(2)PUSH s;SP2 SP,源源 操操 作作 数数 压 入 堆堆 栈栈 保 存POP d;SP所指堆栈所指堆栈的内容内容送目 标,SP+2 SP例:PUSH BX;把BX内容压入堆栈设 SS=2000H,SP=0040H,BX=2340H则执行后,2340H被保存到堆栈,同时SP=003EH,BX内容不变SS1620000HSP=0040HSP=0040H(初值初值初值初值)20040H2003EH4023SP=003EH(压栈后压栈后)XX23 40BX注注:s和d只能为16位寄存器或存储器错误指令:PUSH 1234HPOP AL(3)XCHG d,s;交换源和目标操作数注注:d=通用寄存器s=通用寄存器或存储器例:XCHG AX,SI+400H执行后,5678H被送到内存单元AX=1234H3412SI+400H5678AH ALAX34127856(4)XLAT ;查表转换 注注:a.表首相对于段起始地址的偏移量预先送入BX中;b.待查找的表表内内某单元相对于表首的偏偏移移量量送入AL中;c.以EA=BX+AL在表中(数据段)查找,将查得的数据再送回AL中。例例:设表首的偏移地址为2000H,要查找表内第4号单元(从0号算起)的内容并送回AL,则程序段如下:MOV BX,2000HMOV AL,04HXLAT设表中内容如下页图所示,则执行后,AL=09H 18H34H05H06H09H2000HBX 04HAL(表首)TABLE DS1604 AL09 2.2.2.2.目标地址传送指令目标地址传送指令目标地址传送指令目标地址传送指令对于任一个存储器操作数,由段地址和偏移地址确定了它们在存储器中的位置。目标地址传送指令就用于获得存储器操作数的段地址或偏移地址。(1)LEA d,s功能功能:取存储器源操作数有效地址有效地址送入目标dd=通用寄存器 例:LEA BX,COUNTER;取COUNTER地址偏移量BX 若COUNTER地址偏移量为0002H,则执行后BX=0002H(2)LDS d,s功能功能:装入地址指针,段地址DS,偏移地址d这条指令往往改变了段段寄寄存存器器DS的内容,使得DS指向了另外一个数据段。例例:LDS SI,BASE设执行前,DS=1000H,SI=0000H,BASE偏移地址为0004H,10004H10007H单元内容依次为00H,30H,00H,20H,则执行后,DS=2000H,SI=3000H003000200004HSI=3000H原DS所指向的数据段新DS所指向的数据段1000H1610000HDS BASE30002000SIDS2000H1620000HDS(3)LES d,s功能功能:装入地址指针,段地址 ES,偏移地址d3.3.3.3.标志位传送指令标志位传送指令标志位传送指令标志位传送指令(1)LAHF功能功能:将标志寄存器低低8位位装入AH寄存器 SF ZFAFPFCFFR70 AH(2)SAHF功功能能:把AH的内容送入标志寄存器的低低8位位。(3)PUSHF功功能能:把16位的标志寄存器压入堆堆栈栈保存,同时SP2SP。(4)POPF功功能能:将当当前前SP所指内容(2字节)弹出至标志寄存器标志寄存器,同时SP+2SP。4.I/O4.I/O4.I/O4.I/O数据传送指令数据传送指令数据传送指令数据传送指令 功能:从指定端口输入数据至累加器acc(AL或AX),port=0255(1)IN acc,portAH ALacc端口port 16位数据时(2)IN acc,DX功功能能:从DX指示的端口输入数据至累加器acc,DX=065535(3)OUT port,acc功能:将累加器的数据输出至指定端口。(4)OUT DX,acc功功能能:将累加器的数据输出到DX所指示的端口。注注:16位端口地址必须送入DX中。若采用AX,则表示16位数据传送(输入/输出)(4)换码指令XLAT功功能能:该指令通过AL和BX寄存器进行表格查找,将8位数装入AL中。它完成的操作为:AL BX+AL,XLAT指令常用于查表操作,即BX寄存器含有表格的起始地址,而AL中的值是作进入表格中的偏移量,查出表格中的内容送入AL中。例例例例 设设DS=3000HDS=3000H,AL=09H AL=09H,BX=0080H BX=0080H 执行指令执行指令XLATXLAT作用是:将存储单元作用是:将存储单元30089H30089H的内容送的内容送入入ALAL中。中。二、算术运算指令二、算术运算指令二、算术运算指令二、算术运算指令算算术术运运算算指指令令的的操操作作数数可可以以是是无无符符号号数数,也可以是有符号数。也可以是有符号数。算算术术运运算算指指令令一一般般影影响响标标志志位位,而而数数据据传传送指令一般不影响标志位。送指令一般不影响标志位。1.1.1.1.加法指令加法指令加法指令加法指令(1)ADD d,s功功能能:将s与d相加,结果在d中。根据操作结果设置标志位标志位。例例:ADD BX+106BH,1234H设DS=2000H,BX=1200H,EA=1200H+106BH=226BH物理地址:2000H16+226BH=2226BH 又设原来(2226BH)=90H,(2226CH)=30H则指令执行后:3090H+1234H=42C4H即(2226BH)=C4H,(2226CH)=42H又 42C4H=0100,0010,1100,0100B 标志位:CF=0,ZF=0,SF=0 AF=0,PF=0(3个个1),OF=0(2)ADC d,s功功能能:将s与d再与进位CF相加,结果留在d中,ADC指令主要用于多字节相加。例例:MOV AX,0FH ;AX=000FHADD AL,0F1H ;AL+F1HAL ADC AH,0 ;AH+0+CFAH 最后结果:最后结果:AH=01H,AL=00H注注:若是立即数,且最高位为数码AF,则必须在前面添加一个0,以避免混淆。(3)INC d功能功能:将d加1后送回d。注注:INC指令不影响不影响进位标志CF。该指令经常用于修改地址指针寄存器(BX,BP,SI,DI),使之指向下一个单元。2.2.2.2.减法指令减法指令减法指令减法指令(1)SUB d,s功能功能:dsd,同时影响影响标志位。(2)SBB d,s功能功能:dsCFd,同时影响影响标志位。(3)DEC d功能功能:d1d 该指令与INC相反操作,也不不影影响响进位标志CF。(4)NEG d功功能能:对d进行求补运算后送回(按位求反再加1)。例例:MOV AL,7FHNEG AL结果:结果:AL=7F按位求反按位求反+1=80H+1=81H(5)比较指令 CMP d,s功功能能:作一次减法运算ds,但不回送结果,只根据结果设置设置标志位。比较指令往往用于判断两数是否相等,或两数大小关系。若相等,则零标志ZF=1。3.3.3.3.乘法指令乘法指令乘法指令乘法指令乘法指令在指令中只出现一个操作数s(乘乘数数),另一个操作数固定在累累加加器器(AX或AL)中。(1)MUL s功能功能:无符号数乘法指令a.8位乘法被乘数=AL,乘数=s积(16位)=AH:AL中,即在AX中 AH为高8位,AL为低8位。AL(8位)s(8位)AHAL(16位)b.16位乘法被乘数=AX,乘数=s积(32位)=DX:AXDX为高16位,AX为低16位。AX(16位)s(16位)DXAX(32位)例例:MUL BX 若执行前 AX=0012H,BX=0066H 则执行后 DX=0000H,AX=072CH(2)IMUL s功能功能:有符号数乘法指令8086规规定定,有有符符号号数数一一般般采采用用补补码码表表示示。故故有有符符号号数数作作乘乘法法运运算算时时,必必须须先先把把它它们们转转变变为为原原码码数数相相乘乘,积积也也为为原原码码数数,再再将将原原码码数转变为补码数。这个工作由数转变为补码数。这个工作由CPU自动完成。自动完成。例例:MOV AL,88H;88H为 120的补码 MOV BL,2IMUL BL结果:AX=FF10H;FF10H为240的补码若直接用MUL BL指令,则AX=0110H4.4.4.4.除法指令除法指令除法指令除法指令(1)DIV s功能功能:无符号数相除a.字节除 被除数=AX,除数=s(s0)结果:商=AL,余数=AHALAHAL(8位)(16位).AH(8位)s(8位)商余数b.字除 被除数=DX:AX,除数=s(s0)结果:商=AX,余数=DXAXDXAX(16位)(32位).DX(16位)s(16位)商余数注注:如果除数太小,使得商超出了一个字节或字所能表示的范围,则会产生“被0除”错误。例例:MOV AX,800HMOV BL,2DIV BL结果错误,“被0除”(2)IDIV s功能功能:带符号数除法采用的固定寄存器与DIV相同。(3)CBW和CWDCBW:字节除法的符号扩展指令功能功能:若AL为正数正数(D7=0)则 AH=00H AL为负数负数(D7=1)则 AH=FFH CWD:字除法的符号扩展指令功能功能:若AX为正数正数(D15=0)则 DX=0000H AX为负数负数(D15=1)则 DX=FFFFH CBW和CWD一般用于带符号数除法指令之前。5.5.5.5.十进制调整指令十进制调整指令十进制调整指令十进制调整指令运运算算器器按按二二进进制制规规律律进进行行运运算算,如如果果参参与与运算的是运算的是BCDBCD码数,则需要对结果进行调整。码数,则需要对结果进行调整。100010010000100100001000组合组合的BCD码数未组合未组合的BCD码数899(低位)8(高位)代表89(1)AAA功功能能:对未未组组合合型型BCD码码加加法法的结果进行校正(调整)。校正(调整)方法:若AL中低4位数值 9 或 AF=1,则:a.AL+6 AL,且 AL 高4位清0 b.AH+1 AH 否则不作调整。(2)DAA功功能能:对组组合合型型BCD码码加加法法的结果进行校正(调整)。DAA同时对AL中低低4位位和高高4位位进行调整。例例:MOV AH,0MOV AL,00000110B;代表6ADD AL,00000111B;代表7AAA000001106+00000111 7调整调整+00000110 00000011 AL清000000000+1=00000001AH 最后结果 AH=01H,AL=03H例例.组合BCD码调整 MOV AL,00100111B;代表27ADD AL,10000110B;代表86DAA+10000110调整调整+011001101 00010011进位1调整后结果:调整后结果:CF=1,AL=00010011(代表13)进位位与AL合成结果:113(3)AAS功能功能:对未组合型未组合型BCD的减法的减法结果进行调整。功能功能:对组合型组合型BCD的减法的减法结果进行调整。(4)DAS最后结果最后结果 AL=00110110B(代表代表36),CF=0例例:MOV AL,01110011B (代表73)MOV BL,00110111B (代表37)SUB AL,BL 00110111DAS相减调整调整 00000110(5)AAM功能功能:对未组合型BCD的乘法乘法结果进行调整。例:例:MOV AL,00001000B (代表8)MOV BL,00001001B (代表9)MUL BLAAM 00001001AL=01001000AH=00000000最后结果 AH=00000111B(代表7)对结果进行调整:AL/00001010B=00000111BAH AL%00001010B=00000010BALAL=00000010B(代表2)AH,AL中表示未组合型BCD码72。(6)AAD功功能能:对未组合型BCD码(在AX中)进行除法除法前的校正。例例:MOV AX,00000111 00000010B (代表72)AAD调整前调整前,AH=00000111AL=00000010调整后调整后,AH=00000000AL=00000111B00001010B+00000010B=01001000B 7D10D2D72D=48HAAD相当于将两个未组合型BCD码数合并为一个二进制数。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!