版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1格式:INC reg/mem功能:类似于C语言中的+操作:对指定的操作数加1 例: INC AL INC SI INC BYTE PTRBX+4注:本指令不影响注:本指令不影响CFCF标志。标志。3) 3) 加加1 1指令指令INCINC(单操作数指令单操作数指令)2ADD/ADC对条件标志位对条件标志位(CF/OF/ZF/SF)的影响:的影响:CF位表示无符号数相加的溢出。位表示无符号数相加的溢出。OF位表示带符号数相加的溢出。位表示带符号数相加的溢出。1 结果为负结果为负0 否则否则SF=1 结果为结果为00 否则否则ZF=1 和的最高有效位有向高位的进位和的最高有效位有向高位的进位0
2、否则否则CF=1 两个操作数符号相同,而结果符号与之相反两个操作数符号相同,而结果符号与之相反0 否则否则OF=3(1) (1) 不考虑借位的减法指令不考虑借位的减法指令SUBSUB 格式: SUB dest, src 操作: dest(dest)-(src)注:注:1.1.源和目的操作数不能同时为存储器操作数源和目的操作数不能同时为存储器操作数 2.2.立即数不能作为目的操作数立即数不能作为目的操作数指令例子:指令例子: SUB AL,60H SUB BX+20H,DX SUB AX,CX2. 2. 减法指令减法指令4SBB指令主要用于多字节的减法。格式: SBB dest, src操作:
3、dest(dest)-(src)-(CF)指令例子:指令例子: SBB AX,CX SBB WORD PTRSI,2080H SBB SI,DX(2) (2) 考虑借位的减法指令考虑借位的减法指令SBBSBB5例:例:x、y、z均为均为32位数,分别存放在地址为位数,分别存放在地址为X, X+2;Y,Y+2;Z,Z+2的存储单元中,用指令序列的存储单元中,用指令序列实现实现w x+y+24-z,结果放在,结果放在W, W+2单元中。单元中。 6DX-Z+2-(CF) (DX)X+2+Y +2+(CF) (DX)X+Y (AX)XY+2X+2YZ+2ZW+2WAX+24 (AX)DX+0+(CF
4、) (DX)AX-Z (AX)AX WDX W+27 MOV AX, X MOV DX, X+2 ADD AX, Y ADC DX, Y+2 ; x+y ADD AX, 24 ADC DX, 0 ; x+y+24 SUB AX, Z SBB DX, Z+2 ; x+y+24-z MOV W, AX MOV W+2, DX ; 结果存入结果存入W, W+2单元单元8作用类似于C语言中的”操作符。格式:DEC opr 操作:opr(opr)-1指令例子:指令例子: DEC CL DEC BYTE PTRDI+2 DEC SI (3) (3) 减减1 1指令指令DECDEC9格式: NEG opr操
5、作: opr 0-(opr)对一个操作数取补码相当于用0减去此操作数,故利用NEG指令可得到负数的绝对值。例:若(AL)=0FCH,则执行 NEG AL 后, (AL)=04H,CF=1本例中,0FCH为-4的补码,执行求补指令后,即得到4(-4的绝对值)。(4) (4) 求补指令求补指令NEGNEG10SUB/SBB对标志位对标志位(CF/OF/ZF/SF)的影响的影响 CF=1表示无符号数减法溢出。表示无符号数减法溢出。 OF=1表示带符号数减法溢出。表示带符号数减法溢出。NEG指令对指令对CF/OF的影响:的影响: CF:操作数为:操作数为0时,求补的结果使时,求补的结果使CF=0,否则
6、,否则CF=1。 OF:字节运算对:字节运算对-128求补或字运算对求补或字运算对-32768求补时求补时OF=1, 否则否则OF=0。(0-80H=80H,但但OF=1)1 被减数的最高有效位有向高位的借位被减数的最高有效位有向高位的借位0 否则否则CF=1 两个操作数符号相反,而结果的符号与减数相同两个操作数符号相反,而结果的符号与减数相同0 否则否则OF=11格式: CMP dest, src操作: (dest)-(src)CMP也是执行两个操作数相减,但结果不送目标操作数,其结果只反映在标志位上。指令例子:指令例子: CMP AL,0AH CMP CX,SI CMP DI,BX+03(
7、5) (5) 比较指令比较指令CMPCMP12根据标志位来判断比较的结果根据标志位来判断比较的结果1)根据ZF判断两个数是否相等。若ZF=1,则两数相等。2)若两个数不相等,则分两种情况考虑: 比较的是两个无符号数 若CF=0,则destsrc; 若CF=1,则destsrc。 比较的是两个有符号数 若OF SF=0,则destsrc; 若OF SF=1,则destsrc。13比较指令在使用时,一般在其后紧跟一条比较指令在使用时,一般在其后紧跟一条条件转移指令,判断比较结果的转向。条件转移指令,判断比较结果的转向。举例:比较AL、BL、CL中带符号数的大小,将最小数放在AL中。 14ALBL?
8、交换AL、BL的内容YALCL?NYN交换AL、CL的内容END CMP AL,BL ;AL和BL比较 JNG BBB ;若ALBL,则转 XCHG AL,BL ;若ALBL,则交换BBB:CMP AL,CL ;AL和CL比较 JNG CCC ;若ALCL,则转 XCHG AL,CL ;若ALCL,则交换CCC: HLT15 进行乘法时:8位*8位16位乘积 16位*16位32位乘积(1) 无符号数的乘法指令MUL(MEM/REG)格式:格式: MUL src操作:字节操作数操作:字节操作数 (AX) (AL) (src) 字操作数字操作数 (DX, AX) (AX) (src)指令例子:指令
9、例子: MUL BL ;(AL)( (BL),乘积在AX中 MUL CX ;(AX)( (CX),乘积在DX,AX中 MUL BYTE PTRBX3. 3. 乘法指令乘法指令 16格式与MUL指令类似,只是要求两操作数均为有符号数有符号数。指令例子:指令例子: IMUL BL ;(AX)(AL)(BL) IMUL WORD PTRSI ;(DX,AX)(AX)(SI+1SI) (2) (2) 有符号数乘法指令有符号数乘法指令IMULIMUL注意:注意:MUL/IMUL指令中 AL(AX)为隐含的乘数寄存器; AX(DX,AX)为隐含的乘积寄存器; SRC不能为立即数; 除CF和OF外,对其它标
10、志位无定义。17乘法指令对乘法指令对CF/OF的影响:的影响:0 乘积的高一半为零乘积的高一半为零1 否则否则MUL指令指令: CF/OF =0 乘积的高一半是低一半的符号扩展乘积的高一半是低一半的符号扩展1 否则否则 IMUL指令指令: CF/OF =例:例:(AL) = A5H(-5B),(BL) = 11H (1) IMUL BL ; (AX) (AL)(BL) ; A511 -5B11=-060B F9F5 ; (AX) = F9F5H CF=OF=1 (2) MUL BL ; (AX) (AL)(BL) ; A511= 0AF5 ; (AX) = 0AF5H CF=OF=1 184.
11、 4. 除法指令除法指令进行除法时:16位/8位8位商 32位/16位16位商对被除数、商及余数存放有如下规定: 被除数 商余数字节除法 AX AL AH 字除法 DX:AX AX DX19格式:格式: DIV src操作:字节操作操作:字节操作 (AL) (AX) / (SRC) 的商的商 (AH) (AX) / (SRC) 的余数的余数 字操作字操作 (AX) (DX, AX) / (SRC) 的商的商 (DX) (DX, AX) / (SRC) 的余数的余数指令例子:指令例子: DIV CL DIV WORD PTRBX注:若除数为零或注:若除数为零或ALAL中商大于中商大于FFH(FF
12、H(或或AXAX中商大于中商大于FFFFH)FFFFH),则,则CPUCPU产生一个类型产生一个类型0 0的内部中断。的内部中断。(1) (1) 无符号数除法指令无符号数除法指令DIVDIV20(2) (2) 有符号数除法指令有符号数除法指令IDIVIDIV格式:格式: IDIV src操作与DIV类似。商及余数均为有符号数,且余数符号总是与被除数符号相同。注意注意: 对于对于DIV/IDIV指令指令 AX(DX,AX)为隐含的被除数寄存器。为隐含的被除数寄存器。 AL(AX)为隐含的商寄存器。为隐含的商寄存器。 AH(DX)为隐含的余数寄存器。为隐含的余数寄存器。 src不能为立即数。不能为
13、立即数。 对所有条件标志位均对所有条件标志位均无定义无定义。21 除法运算要求被除数字长是除数字长的两倍,若不满足则需对被除数进行扩展对被除数进行扩展,否则产生错误。 对于无符号数除法扩展,只需将AH或DX清零即可。 对有符号数而言,则是符号位的扩展。可使用前面介绍过的符号扩展指令CBW和CWD关于除法操作中的字长扩展问题关于除法操作中的字长扩展问题22例例: 写出写出34H25H的程序段。的程序段。MOV AL,34H MOV BL,25H CBW ; AL的符号扩展到AH IDIV BL ; 0034H25H,结果为 ; (AH)=0FH, (AL)=01H235.BCD5.BCD码运算的
14、十进制调整指令码运算的十进制调整指令 专用于对BCD码运算的结果进行调整 包括:AAA、DAA、AAS、DAS、AAM、AAD 均为隐含寻址,隐含的操作数为ALAL和AHAH 为何要对BCD码的运算结果进行调整? BCD码本质上是十进制数,即应遵循逢码本质上是十进制数,即应遵循逢十进一的规则。而计算机是按二进制十进一的规则。而计算机是按二进制(十六进制)进行运算,并未按十进制(十六进制)进行运算,并未按十进制规则进行运算。规则进行运算。241 1) )加法的十进制调整指令加法的十进制调整指令( (1 1) )非压缩非压缩BCDBCD码加法调整码加法调整AAA本指令对在AL中的由两个未组合的BC
15、D码相加后的结果进行调正,得到一个正确的未组合的BCD码。AAAAAA指令只影响指令只影响AFAF和和CFCF,其余标志无定义。其余标志无定义。AAAAAA指令应紧跟在指令应紧跟在ADDADD或或ADCADC指令之后。指令之后。25如果AL的低4位9AF=1,则: AL(AL)+6,(AH)(AH)+1,AF1 AL(AL)0FH) CFAF否则AL(AL)0FHAAAAAA指令的操作如下:指令的操作如下:26调整原理:先看一个例子调整原理:先看一个例子 计算89 0000 1000 见右式 +0000 1001 0001 0001 11 结果应为17,而计算机相加为11,原因在于运算过程中,
16、如遇到低4位往高4位产生进位时(此时AF=1)是按逢十六进一的规则,但BCD码要求逢十进一,因此只要产生进位,个位就会少6,这就要进行加6调正。这个1代表了16,而实际上仅应为10,即多进了6。 27实际上当低4位的结果9(即AF之间)时,也应进行加6调正 (原因是逢十没有进位,故用加6的方法强行产生进位) 。如对上例的结果进行加6: 0001 0001 11 + 0000 0110 6 0000 0111 17 0000 1111- 1 0000 011128例2:有两个字符串形式的十进制数,2658和 3619,求二者之和。即2658+3619=? 由题意知,被加数和加数的每一位都以ASC
17、IIASCII码码形式存放在内存中。假定二数在内存中均是低位在前,高位在后,另留出5个单元存放相加的结果。内存中数据存放形式见下页图。2936H32H39H31HSTRING1STRING238H35H36H33H被加数加数数据段85629163SUM结果.30程序段为: LEA SI,STRING1 ;STRING1偏移地址送SI LEA DI,STRING2 ;STRING2偏移地址送DI LEA BX,SUM ;SUM偏移地址送BX MOV CX,4 ;循环4次 CLC ;清进位标志AGAIN:MOV AL,SI ADC AL,DI ;带进位加 AAA ;未压缩BCD码调正 MOV BX
18、,AL ;结果存入SUM INC SI ;调整指针 INC DI INC BX DEC CX ;循环计数器减1 JNZ AGAIN ;若未处理完,则转AGAIN31 思考题: 1.根据程序写出结果SUM的值。 2.若最高位有进位,程序如何修改? 3.从此例不难看出,用AAA指令也可对字符串形式的十进制数加法进行调整,所以它又被称为加法的ASCII调正指令。为什么AAA指令既可对非压缩BCD码加法进行调整,也可对ASCII码形式的十进制数进行调整?(注意AAA指令的第步)32( (2 2) )压缩压缩BCDBCD码加法调整码加法调整DAAl两个压缩BCD码相加结果在AL中,通过DAA调整得到一个
19、正确的压缩BCD码.l指令操作(调整方法): 若AL的低4位9AF=1 则(AL)(AL)+6,AF1 若AL的高4位9CF=1 则(AL)(AL)+60H,CF1l除OF外,DAA指令影响所有其它标志。lDAADAA指令应紧跟在指令应紧跟在ADDADD或或ADCADC指令之后。指令之后。33例: 0100 1000 48H MOV AL,48H + 0111 0100 74H MOV BL,74H 1011 1100 BCH ADD AL,BL + 0110 0110 66H DAA 1 0010 0010 1 22H (进位) (进位) 执行ADD后,(AL)=BCH,高4位低4位均大于9
20、,故DAA指令执行加66H调整,最后结果为: (AL)=22H, CF=1, AF=134( (1)1)非压缩非压缩BCDBCD码减法的十进制调正指令码减法的十进制调正指令AASAAS 对AL中由两个非压缩的BCD码相减的结果进行调整。调整操作为: 若AL的低4位9或AF=1,则: AL(AL)-6,AH(AH)-1,AF1 AL(AL)0FH CFAF 否则:AL(AL)0FH2)2)减法的十进制调整指令减法的十进制调整指令35举例:16-8=? MOV AX,0106H 0000 0110 06 MOV BL,08H - 0000 1000 - 08 SUB AL,BL 1111 1110
21、 FE AAS - 0000 0110 - 06 1111 1000 F8 0000 1111 0F 0000 1000 08结果为:(AL)=08H,(AH)=0,CF=AF=136( (2)2)压缩压缩BCDBCD码减法的十进制调正指令码减法的十进制调正指令DASDAS 对AL中由两个压缩BCD码相减的结果进行调整。调整操作为: 若AL的低4位9AF=1,则: AL(AL)-6, 且AF1 若AL的高4位9CF=1,则: AL(AL)-60H,且CF1 DAS对OF无定义,但影响其余标志位。DAS指令要求跟在减法指令之后。373) 3) 乘法的十进制调正指令乘法的十进制调正指令AAM 对AX中由两个非压缩BCD码相乘的结果进行调整。调整操作为: (AL)/0AH, (AH)商,(AL)余数隐含的操作寄存器为AL和AH;AAM跟在MUL指令之后使用;影响标志位PF、SF、Z
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业员工转正述职报告8篇
- 学习自我鉴定范文集合十篇
- 医生年终工作总结7篇
- 某国际机场线工程施工组织设计
- 2025年部编版新教材语文一年级下册第五单元教案
- 七年级语文的教学工作个人总结范文(33篇)
- 人教版2022年三年级语文期末复习-作文训练(童话)B卷
- 2025年合成材料阻燃剂项目合作计划书
- 摊位租赁协议书
- 2025年城市市容管理服务项目发展计划
- 年产90000吨聚丁二烯工厂聚合工段的物料衡算
- 五年级省情礼仪心理健康综合知识教案
- 2022年湖南生物机电职业技术学院教师招聘考试题库及答案解析
- 卫生部手术分级目录(版)
- 《S7-1200-PLC-编程及应用技术》试题试卷及答案2套
- 内科护理学消化系统试习题及答案
- 用人单位职业病危害现状评价技术导则
- 中建一局质量考核评价办法
- 民办非企业单位会计报表(会民非表010203)
- 口腔颌面系统解剖骨
- 川骨香-川古香手撕鸭配方及制作方法
评论
0/150
提交评论