书签 分享 收藏 举报 版权申诉 / 31
上传文档赚钱

类型汇编语言之第6章课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4707450
  • 上传时间:2023-01-03
  • 格式:PPT
  • 页数:31
  • 大小:94KB
  • 【下载声明】
    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 乘法指

    11、令根据操作数的长度来执行操作:n 对于字节操作数 (AX)(AL)*(SRC)n 字操作数 (DX,AX)(AX)*(SRC)n注意:n(1)AL(AX)为隐含的乘数寄存器。n(2)AX(DX,AX)为隐含的乘积寄存器。n(3)SRC不能为立即数。n(4)除CF和OF外,对其它状态标志位无定义。1/3/2023乘法指令00 乘积的高一半为零11 否则MUL指令:CF,OF=00 乘积的高一半是低一半的符号扩展11 否则 IMUL指令:CF,OF=例:(AX)=16A5H,(BX)=0611H (1)IMUL BL ;(AX)(AL)*(BL);A5*11 F9F5 ;(AX)=0F9F5H C

    12、F=OF=1 (2)MUL BX ;(DX,AX)(AX)*(BX);16A5*0611=0089 5EF5 ;(DX)=0089H (AX)=5EF5H CF=OF=11/3/2023除法指令n无符号数除法指令:DIV SRCn带符号数除法指令:IDIV SRCn执行操作:n 字节操作 (AL)(AX)/(SRC)的商n (AH)(AX)/(SRC)的余数n 字操作 (AX)(DX,AX)/(SRC)的商n (DX)(DX,AX)/(SRC)的余数n注意:AX(DX,AX)为隐含的被除数寄存器。n AL(AX)为隐含的商寄存器。n AH(DX)为隐含的余数寄存器。n SRC不能为立即数。n

    13、对所有状态标志位均无定义。1/3/2023n例1、试编制一个计算XY的程序。n假设X、Y为数据段的两变量,且XY65535。n分析:在8086/8088指令系统中没有设置乘方运算指令,因此只能将乘方运算转换成乘法运算。n源程序:nDATA SEGMENTnX DW 5nY DW 6nPOWE DW?nDATA ENDSnSTACK1 SEGMENT PARA STACKn DW 10H DUP(0)nSTACK1 ENDS1/3/2023nCODE SEGMENTn ASSUME CS:CODE,DS:DATA,SS:STACK1nSTART:MOV AX,DATAn MOV DS,AXn M

    14、OV AX,Xn MOV CX,Yn DEC CXn JE EXIT;指数为1则转移n MOV DX,0nLOP:MUL Xn LOOP LOPnEXIT:MOV POWE,AX;存结果n MOV AH,4CHn INT 21HnCODE ENDSn END START 1/3/2023n例:试编制一程序,找出从2开始的N个质数。n问题分析:质数就是只能被1和本身整除的整数。偶数肯定不是质数,而2,3都是质数,从5开始判断寻找质数。n流程图:P126图6.5n源程序:n TITLE 求质数程序nDATA SEGMENTnCOUNT DB 20H;指定质数个数nNUM DW 40H DUP(0)

    15、nDATA ENDSnSTACK1 SEGMENT PARA STACKn DW 20H DUP(0)nSTACK1 ENDS1/3/2023nCODE SEGMENTn ASSUME CS:CODE,DS:DATA,SS:STACK1nSTART:MOV AX,DATAn MOV DS,AXn LEA DI,NUM;存放质数的指针值n MOV CL,COUNTn XOR DH,DHn XOR CH,CHn MOV WORD PTR DI,2;n ADD DI,2n MOV WORD PTR DI,3n SUB CL,2n MOV DL,5n MOV BL,3 ;除数起点1/3/2023n M

    16、OV BH,3n LOP:XOR AH,AHn MOV AL,DLn DIV BLn CMP AH,0n JE NEXT1;能乘除,不是素数转移n ADD BL,2n CMP BL,BHn JAE NEXT2 ;除数最大除数则是素数n JMP LOPnNEXT1:ADD DL,2n MOV BH,DLn SHR BH,1;确定新的最大除数n MOV BL,3n JMP LOP1/3/2023nNEXT2:ADD DI,2;修改指针n MOV DI,DX;存新质数n ADD DL,2n MOV BH,DLn SHR BH,1;确定新的最大除数n MOV BL,3n LOOP LOPn MOV A

    17、H,4CHn INT 21HnCODE ENDSn END START1/3/20236.3 开平方根n在8086/8088指令系统中没有提供开平方跟指令。开平方根可以通过程序来实现。n开平方根可以通过两种方法来实现,一种是减奇数法开平方根,另一种就是手工计算方式。n减奇数开平方根法获得平方根的整数部分:n个从1开始的连续自然数中的奇数之和等于n的平方。n分析:如果要求S的平方根,那么可以从S中逐次减去从1开始的连续自然数的奇数1,3,5,一直到相减数等于零,或不够减的下一个奇数为止。然后统计减去自然数的奇数个数,它就是S的近似平方根。n流程图:P127图6.61/3/2023n源程序:n T

    18、ITLE 开平方根nDATA SEGMENTnDA1 DW 1234H ;被开方的数nSQR DB O ;存平方根nDATA ENDSnSTACK1 SEGMENT PARA STACKn DW 10H DUP(0)nSTACK1 ENDSnCODE SEGMENTn ASSUME CS:CODE,DS:DATA,SS:STACK1nSTART:MOV AX,DATAn MOV DS,AX1/3/2023n MOV AX,DA1n MOV CL,0n MOV DX,1;奇数初值为1n LOP:SUB AX,DXn JB END0;转移n INC CLn ADD DX,2n JMP LOPnEN

    19、D0:MOV SQR,CLn MOV AH,4CHn INT 21HnCODE ENDSn END START1/3/2023开平方根n我们看到,用减奇数法来开平方根结构非常简单,但是当被开方的数增大时,运算程序所花费的时间将会增加。n如果我们在程序中仿照使用手工计算的方式来求平方根则能快速求出较大数的平方根,参见P127例6.3.2,由于本例题涉及代码转换和多精度运算,代码转换知识在第8章讲述,此方法不要求掌握,有兴趣的同学可以自己学习。1/3/20236.4 多精度运算n在8086/8088微处理器中,每条指令只能处理8位或者16位的二进制数,因此它所能表达的范围也是很有限的。n为了提高运

    20、算精度,通常用多个字节或多个字来表示一个完整的数据。这时候就需要编制一些子程序或程序段,分别完成不同的多精度数据操作。n例如:编制一个多精度数的求补子程序。n要求:多精度数的首址放在SI中,多精度数的字节数在CL中。n分析:求补运算采用“变反加1”来实现。1/3/2023nCOMP PROCn PUSH SIn XOR CH,CHn PUSH CXn LOP1:NOT BYTE PTRSIn INC SIn LOOP LOP1n POP CXn POP SIn STCnLOP2:ADC BYTE PRTSI,0n INC SIn LOOP LOP2n RETnCOMP ENDP 1/3/2023

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:汇编语言之第6章课件.ppt
    链接地址:https://www.163wenku.com/p-4707450.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库