汇编语言之第6章课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《汇编语言之第6章课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 课件
- 资源描述:
-
1、第6章 算术运算n十进制运算十进制运算n乘除法运算乘除法运算n开平方运算开平方运算n多精度运算(自学内容)多精度运算(自学内容)1/3/2023算术运算n6.1 十进制数运算n在前面学习的算术运算指令都是以二进制数为操作数的。而在实际生活中,主要是使用十进制数据的,因此程序中接收的原始数据一般都是十进制数据,而用户也希望程序输出的也是习惯的十进制数。n可以通过两种方法来实现:n1、通过数制转换n2、直接进行十进制数运算有两种选择:n(1)设置专门的十进制运算指令n(2)先用二进制运算指令完成运算,然后再对结果进行校正。8086/8088CPU采用这种方案。1/3/2023十进制数运算n在计算机
2、中,用4位二进制数表示一位十进制数的表示方法称为二十进制数,即BCD码。n 8086/8088指令系统把BCD码分为两种格式:组合型(压缩型、装配型、PACKED)和非组合型(非压缩型、拆散型、UNPACKED。n组合型:一个字节表示两个BCD码,即两位十进制数用一个字节表示。其中高4位表示BCD码的高位,低4位表示BCD码的低位。n非组合型:一个字节的低4位表示一个BCD码,高4位通常为0000或0011等,它对该字节所表示的十进制数无影响。1/3/2023十进制数运算n例:写出(3590)10的压缩BCD 码和非压缩BCD码,并分别 把它们存入数据区 PAKED 和 UNPAKn压缩BCD
3、:(3590)10(0011010110010000)BCDn非压缩BCD:(3590)10(000000110000010100001001 00000000)BCD PAKED 90H 35H UNPAK 00H 09H 05H 03H1/3/2023BCD码校正指令n一、BCD码校正指令n8086/8088指令系统共有6条BCD码校正指令。其中加减法校正各有两条,乘除法各有一条。n1、非组合型加法校正指令AAAn指令格式:AAAn在执行AAA指令前,已用ADD指令或ADC指令完成加法,且加法结果存放在AL中。执行AAA指令对AL中的数据进行校正,其结果存放在AL中,向高位的进位在AH和C
4、F中。n校正方法:若AL中低4位的数9,或AF=1,那么(AL)=(AL)+6,(AH)=(AH)+1,且AL中高4位清零,AF、CF置1。1/3/2023BCD码校正指令n例如执行指令序列:n ADD AL,BLn AAAn(1)(AL)=2=(00000010)BCD,(BL)=7=(00000111)BCDn 0000 0010n +0000 0111n 0000 1001n 执行ADD指令后AL低4位的值为9,AF=0,所以AL中就是非压缩型BCD码,不需要校正,执行AAA指令后AL,AH中的值都不改变。1/3/2023n(2)(AL)=5=(00000101)BCD,(BL)=7=(
5、00000111)BCDn 0000 0101n +0000 0111n 0000 1100n 执行ADD指令后AL低4位的值为129,AF=0,执行AAA指令(AL)=(AL)+6n 0000 1100n +0000 0110n 0001 0010nAL高4位清零:0000 0010nAH置1:0000 0001 ZF标志位置1n最后在AH,AL中获得非组合BCD码的和数(AH)=01H,(AL)=02H1/3/2023n(2)(AL)=9=(00001001)BCD,(BL)=7=(00000111)BCDn 0000 1001n +0000 0111n 0001 0000n 执行ADD指
6、令后(AL)0,AF=1,执行AAA指令(AL)=(AL)+6n 0001 0000n +0000 0110n 0001 0110nAL高4位清零:0000 0110nAH置1:0000 0001 ZF标志位置1n最后在AH,AL中获得非组合BCD码的和数(AH)=01H,(AL)=06H1/3/2023BCD码校正指令n2、组合型加法校正指令DAAn在执行DAA指令前,已用ADD指令或ADC指令完成加法,且加法结果存放在AL中。执行DAA指令对AL中的数据进行校正,校正结果存放在AL中,向高位的进位仅在CF中。n校正法则:n(1)如果AL中低4位9或AF=1,那么(AL)=(AL)+6,AF
7、=1。n(2)如果AL中高4位9或CF=1,那么(AL)=(AL)+60H,CF=1。1/3/2023BCD码校正指令n3、非组合型减法校正指令AASn在执行AAS指令前,已用SUB指令或SBB指令完成减法,且减法结果存放在AL中。执行AAS指令对AL中的数据进行校正,校正结果存放在AL中,向高位的借位存放在AH和CF中。n校正法则:n 如果AL中低4位9或AF=1,那么(AL)=(AL)-6,(AH)=(AH)-1,并把AL中的高4位清零,CF、AF均置1。1/3/2023BCD码校正指令n4、组合型加法校正指令DASn在执行DAS指令前,已用SUB指令或SBB指令完成减法,且减法结果存放在
8、AL中。执行DAS指令对AL中的数据进行校正,校正结果存放在AL中,向高位的借位仅在CF中。n校正法则:n(1)如果AL中低4位9或AF=1,那么(AL)=(AL)-6,AF=1。n(2)如果AL中高4位9或CF=1,那么(AL)=(AL)-60H,CF=1。1/3/2023十进制数运算n例:编制一程序实现非组合BCD码减法运算,并显示运算结果。n设有两个3位10进制数(非组合BCD码)S1和S2,它们分别存放在NUM1和NUM2为首址的存储单元中(低字节存放高位,高地址存放高位)两数相减时,如果S1S2,就进行S1-S2减法,运算结果的前导符号为,如果S1S2转移n MOV AH,-;修改结
9、果前导符号n XCHG SI,DI;交换减数和被减数nNEXT1:INC BXn LOOP LOP1nNEXT2:MOV RESULT,AH;存结果符号n LEA BX,RESULT+3;置存放结果指针n MOV CX,3n CLC1/3/2023nLOP2:MOV AL,SI;从低位开始,逐位相减n SBB AL,DIn AASn LAHF;暂存高位借位n OR AL,30H;形成ASCII码n MOV BX,AL;存结果n SAHFn DEC SIn DEC DIn DEC BXn LOOP LOP2n LEA DX,RESULT0n MOV AH,09Hn INT 21Hn MOV AH
10、,4CHn INT 21HnCODE ENDSn END BEING1/3/20236.2 乘除法运算n字节/字扩展指令n字节扩展指令:CBWn字扩展指令:CWDn这两条指令均是无操作数指令。CBW指令隐含使用AX,CWD隐含使用DX。n指令功能:n CBW指令扩展AL中符号位至AH中n CWD指令扩展AX中符号位至DX中n这两条指令主要应用在除法指令前,形成双倍长度的除数。它们对标志寄存器无影响。1/3/20236.2 乘除法运算n8086/8088指令系统分别有无符号数和带符号数的乘除法指令。n1、乘法指令n 无符号数乘法指令:MUL SRCn 带符号数乘法指令:IMUL SRCn 乘法指
展开阅读全文