版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、格式:INC reg/mem功能:类似于C语言中的+操作:对指定的操作数加1 例: INC AL INC SI INC BYTE PTRBX+4注:本指令不影响CF标志。3) 加1指令INC(单操作数指令)1ADD/ADC对条件标志位(CF/OF/ZF/SF)的影响:CF位表示无符号数相加的溢出。OF位表示带符号数相加的溢出。1 结果为负0 否则SF=1 结果为00 否则ZF=1 和的最高有效位有向高位的进位0 否则CF=1 两个操作数符号相同,而结果符号与之相反0 否则OF=2(1) 不考虑借位的减法指令SUB 格式: SUB dest, src 操作: dest(dest)-(src)注:
2、1.源和目的操作数不能同时为存储器操作数 2.立即数不能作为目的操作数指令例子: SUB AL,60H SUB BX+20H,DX SUB AX,CX2. 减法指令3SBB指令主要用于多字节的减法。格式: SBB dest, src操作: dest(dest)-(src)-(CF)指令例子: SBB AX,CX SBB WORD PTRSI,2080H SBB SI,DX(2) 考虑借位的减法指令SBB4例:x、y、z均为32位数,分别存放在地址为X, X+2;Y,Y+2;Z,Z+2的存储单元中,用指令序列实现wx+y+24-z,结果放在W, W+2单元中。 MOV AX, X MOV DX,
3、 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单元5作用类似于C语言中的”操作符。格式:DEC opr 操作:opr(opr)-1指令例子: DEC CL DEC BYTE PTRDI+2 DEC SI (3) 减1指令DEC6格式: NEG opr操作: opr 0-(opr)对一个操作数取补码相当于用0减去此操作数,故利用NEG指令可得到负数的绝对值。例:若(AL)=0FCH,则
4、执行 NEG AL后, (AL)=04H,CF=1本例中,0FCH为-4的补码,执行求补指令后,即得到4(-4的绝对值)。(4) 求补指令NEG7SUB/SBB对标志位(CF/OF/ZF/SF)的影响 CF=1表示无符号数减法溢出。 OF=1表示带符号数减法溢出。NEG指令对CF/OF的影响: CF:操作数为0时,求补的结果使CF=0,否则CF=1。 OF:字节运算对-128求补或字运算对-32768求补时OF=1, 否则OF=0。1 被减数的最高有效位有向高位的借位0 否则CF=1 两个操作数符号相反,而结果的符号与减数相同0 否则OF=8格式: CMP dest, src操作: (dest
5、)-(src)CMP也是执行两个操作数相减,但结果不送目标操作数,其结果只反映在标志位上。指令例子: CMP AL,0AH CMP CX,SI CMP DI,BX+03(5) 比较指令CMP9根据标志位来判断比较的结果1)根据ZF判断两个数是否相等。若ZF=1,则两数相等。2)若两个数不相等,则分两种情况考虑: 比较的是两个无符号数 若CF=0,则destsrc; 若CF=1,则destsrc。 比较的是两个有符号数 若OFSF=0,则destsrc; 若OFSF=1,则destsrc。10比较指令在使用时,一般在其后紧跟一条条件转移指令,判断比较结果的转向。举例:比较AL、BL、CL中带符号
6、数的大小,将 最小数放在AL中。程序: 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: HLT11进行乘法时:8位*8位16位乘积 16位*16位32位乘积(1) 无符号数的乘法指令MUL(MEM/REG)格式: MUL src操作:字节操作数 (AX) (AL) (src) 字操作数 (DX, AX) (AX) (src)指令例子: MUL BL ;(AL)(BL),乘积在AX中 MUL
7、 CX ;(AX)(CX),乘积在DX,AX中 MUL BYTE PTRBX3. 乘法指令12格式与MUL指令类似,只是要求两操作数均为有符号数。指令例子: IMUL BL ;(AX)(AL)(BL) IMUL WORD PTRSI ;(DX,AX)(AX)(SI+1SI) (2) 有符号数乘法指令IMUL注意:MUL/IMUL指令中 AL(AX)为隐含的乘数寄存器; AX(DX,AX)为隐含的乘积寄存器; SRC不能为立即数; 除CF和OF外,对其它标志位无定义。13乘法指令对CF/OF的影响:00 乘积的高一半为零11 否则MUL指令: CF/OF =00 乘积的高一半是低一半的符号扩展1
8、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 144. 除法指令进行除法时:16位/8位8位商 32位/16位16位商对被除数、商及余数存放有如下规定: 被除数 商余数字节除法 AX AL AH 字除法 DX:AX AX DX15格式: DIV src操作:字节操作 (A
9、L) (AX) / (SRC) 的商 (AH) (AX) / (SRC) 的余数 字操作 (AX) (DX, AX) / (SRC) 的商 (DX) (DX, AX) / (SRC) 的余数指令例子: DIV CL DIV WORD PTRBX注:若除数为零或AL中商大于FFH,(或AX中商大于FFFFH),则CPU产生一个类型0的内部中断。(1) 无符号数除法指令DIV16(2) 有符号数除法指令IDIV格式: IDIV src操作与DIV类似。商及余数均为有符号数,且余数符号总是与被除数符号相同。注意: 对于DIV/IDIV指令 AX(DX,AX)为隐含的被除数寄存器。 AL(AX)为隐含
10、的商寄存器。 AH(DX)为隐含的余数寄存器。 src不能为立即数。 对所有条件标志位均无定义。17除法运算要求被除数字长是除数字长的两倍,若不满足则需对被除数进行扩展,否则产生错误。对于无符号数除法扩展,只需将AH或DX清零即可。对有符号数而言,则是符号位的扩展。可使用前面介绍过的符号扩展指令CBW和CWD关于除法操作中的字长扩展问题18例: 写出34H25H的程序段。MOV AL,34H MOV BL,25H CBW ; AL的符号扩展到AH DIV BL ; 0034H25H,结果为 ; (AH)=0FH, (AL)=01H195.BCD码运算的十进制调整指令专用于对BCD码运算的结果进
11、行调整包括:DAA、AAA、DAS、AAS、AAM、AAD均为隐含寻址,隐含的操作数为AL和AH为何要对BCD码的运算结果进行调整? BCD码本质上是十进制数,即应遵循逢十进一的规则。而计算机是按二进制(十六进制)进行运算,并未按十进制规则进行运算。201)加法的十进制调整指令(1)非压缩BCD码加法调整AAA本指令对在AL中的由两个未组合的BCD码相加后的结果进行调正,得到一个正确的未组合的BCD码。AAA指令只影响AF和CF,其余标志无定义。AAA指令应紧跟在ADD或ADC指令之后。21如果AL的低4位9AF=1,则: AL(AL)+6,(AH)(AH)+1,AF1 AL(AL)0FH)
12、CFAF否则AL(AL)0FHAAA指令的操作如下:22调整原理:先看一个例子 计算89 0000 1000 见右式 +0000 1001 0001 0001 11 结果应为17,而计算机相加为11,原因在于运算过程中,如遇到低4位往高4位产生进位时(此时AF=1)是按逢十六进一的规则,但BCD码要求逢十进一,因此只要产生进位,个位就会少6,这就要进行加6调正。这个1代表了16,而实际上仅应为10,即多进了6。 23实际上当低4位的结果9(即AF之间)时,也应进行加6调正。(原因是逢十没有进位,故用加6的方法强行产生进位。) 如对上例的结果进行加6: 0001 0001 11 + 0000 0
13、110 6 0001 0111 17 结果正确。24例2:有两个字符串形式的十进制数,2658和 3619,求二者之和。即2658+3619=? 由题意知,被加数和加数的每一位都以ASCII码形式存放在内存中。假定二数在内存中均是低位在前,高位在后,另留出5个单元存放相加的结果。内存中数据存放形式见下页图。2536H32H39H31HSTRING1STRING238H35H36H33H被加数加数数据段85629163SUM结果.26程序段为: LEA SI,STRING1 ;STRING1偏移地址送SI LEA DI,STRING2 ;STRING2偏移地址送DI LEA BX,SUM ;SU
14、M偏移地址送BX MOV CX,4 ;循环4次 CLC ;清进位标志AGAIN:MOV AL,SI ADC AL,DI ;带进位加 AAA ;未压缩BCD码调正 MOV BX,AL ;结果存入SUM INC SI ;调整指针 INC DI INC BX DEC CX ;循环计数器减1 JNZ AGAIN ;若未处理完,则转AGAIN27 思考题: 1.根据程序写出结果SUM的值。 2.若最高位有进位,程序如何修改? 3.从此例不难看出,用AAA指令也可对字符串形式的十进制数加法进行调整,所以它又被称为加法的ASCII调正指令。为什么AAA指令既可对非压缩BCD码加法进行调整,也可对ASCII码
15、形式的十进制数进行调整?(注意AAA指令的第步)28(2)压缩BCD码加法调整DAA两个压缩BCD码相加结果在AL中,通过DAA调整得到一个正确的压缩BCD码.指令操作(调整方法): 若AL的低4位9AF=1 则(AL)(AL)+6,AF1 若AL的高4位9CF=1 则(AL)(AL)+60H,CF1除OF外,DAA指令影响所有其它标志。DAA指令应紧跟在ADD或ADC指令之后。29例: 0100 1000 48H MOV AL,48H + 0111 0100 74H MOV BL,74H 1011 1100 BCH ADD AL,BL + 0110 0110 66H DAA 1 0010 0
16、010 1 22H (进位) (进位) 执行ADD后,(AL)=BCH,高4位低4位均大于9,故DAA指令执行加66H调整,最后结果为: (AL)=22H, CF=1, AF=130(1)非压缩BCD码减法的十进制调正指令AAS 对AL中由两个非压缩的BCD码相减的结果进行调整。调整操作为: 若AL的低4位9或AF=1,则: AL(AL)-6,AH(AH)-1,AF1 AL(AL)0FH CFAF 否则:AL(AL)0FH2)减法的十进制调整指令31举例:16-8=? MOV AX,0106H 0000 0110 06 MOV BL,08H - 0000 1000 - 08 SUB AL,BL
17、 1111 1110 FE AAS - 0000 0110 - 06 1111 1000 F8 0000 1111 0F 0000 1000 08结果为:(AL)=08H,(AH)=0,CF=AF=132(2)压缩BCD码减法的十进制调正指令DAS 对AL中由两个压缩BCD码相减的结果进行调整。调整操作为: 若AL的低4位9AF=1,则: AL(AL)-6, 且AF1 若AL的高4位9CF=1,则: AL(AL)-60H,且CF1 DAS对OF无定义,但影响其余标志位。DAS指令要求跟在减法指令之后。333) 乘法的十进制调正指令AAM 对AX中由两个非压缩BCD码相乘的结果进行调整。调整操作
18、为: (AL)/0AH, (AH)商,(AL)余数隐含的操作寄存器为AL和AH;AAM跟在MUL指令之后使用;影响标志位PF、SF、ZF,其它无定义;用AAM可实现99的二-十进制转换。34例1:按十进制乘法计算78=? 程序段如下:MOVAL,07H;(AL)=07HMOVCL,08H;(CL)=08HMULCL;(AX)=0038HAAM;(AH)=05H,(AL)=06H 所得结果为非压缩的BCD码。例2:把3AH转换成等值的十进制数。 MOV AL,3AH ;58 AAM ;(AH)=05H,(AL)=08H354) 除法的十进制调正指令AAD对非压缩BCD除法运算进行调整。调整操作为: (AL)(AH)0AH(AL) AH 0隐含的操作寄存器为AH,AL;AAD要在DIV指令之前使用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 市政道路施工进度控制制度
- 喷涂生产线扩建项目环境影响报告表
- 广西雁山区良丰河福山河整治工程环境影响报告表
- 2026年甘肃省酒泉民健康复医院招聘考试备考题库及答案解析
- 学习努力与成功的议论文主题(6篇)
- 2026山东菏泽学院人才招聘考试备考题库及答案解析
- 2026江西省江铜南方公司社会招聘2人笔试备考试题及答案解析
- 创新化学实验与研究基金资助项目答辩 D-丝氨酸的毛细管电泳-非接触式电
- 行政流程标准化文件归档分类指引
- 2026年浙江杭州市教育局所属事业单位1月批次招聘542人笔试备考题库及答案解析
- YY/T 1778.1-2021医疗应用中呼吸气体通路生物相容性评价第1部分:风险管理过程中的评价与试验
- GB/T 17213.4-2015工业过程控制阀第4部分:检验和例行试验
- FZ/T 73009-2021山羊绒针织品
- JJF 1069-2012 法定计量检定机构考核规范(培训讲稿)
- GB∕T 5900.2-2022 机床 主轴端部与卡盘连接尺寸 第2部分:凸轮锁紧型
- 2011-2015广汽丰田凯美瑞维修手册wdl
- DFMEA编制作业指导书新版
- DB35∕T 1844-2019 高速公路边坡工程监测技术规程
- 城市管理综合执法局城管执法与执法程序PPT模板
- 阀门基础知识上
- 第二章注射成型工艺与模具结构
评论
0/150
提交评论