第3章---微机原理-汇编-朱定华.ppt

第3章---微机原理-汇编-朱定华.ppt

ID:59457957

大小:1.29 MB

页数:66页

时间:2020-09-15

第3章---微机原理-汇编-朱定华.ppt_第1页
第3章---微机原理-汇编-朱定华.ppt_第2页
第3章---微机原理-汇编-朱定华.ppt_第3页
第3章---微机原理-汇编-朱定华.ppt_第4页
第3章---微机原理-汇编-朱定华.ppt_第5页
资源描述:

《第3章---微机原理-汇编-朱定华.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第三章程序设计的基本技术3.13.23.3顺序程序设计分支程序设计循环程序设计学习要点:乘除法指令、BCD数调整指令、跳转指令、重复控制指令掌握顺序程序、分支程序、循环程序的结构和设计方法顺序程序是最简单的程序,它的执行顺序和程序中指令的顺序完全一致3.1顺序程序设计格式:MULsourceIMULsource;符号整数乘法3.1.1乘除法指令1.乘法指令MUL和符号整数乘法指令IMUL源操作数source可以是字节或字,可为寄存器或存储器操作数,不能为立即数目的操作数是AL或AX,视source的类型属性决定是AL还是AX在乘法指令之前必须将目的操作数送AL(

2、字节乘)或AX(字乘)16位乘法指令所执行的操作是AL或AX乘以source,乘积放回到AX或DX和AXALsourc8AX×AXsourc16AX×DX3.1.1乘除法指令可用乘法运算将BCD数转换为二进制数例将AX中小于(等于)255大于0的3位BCD数转换为二进制数,存入字节变量SB中如将BCD数255H转换为二进制数11111111B,运算的过程为:2.3.4常用指令应用举例N2×102+N1×10+N0=(N2×10+N1)×10+N0例将AX中的大于0小于(等于)255的BCD数转换为二进制数存入字节变量SB中M0VCH,10MOVCL,4MOVSB

3、,AL;暂存十位和个位MOVAL,AH;百位存入AL中MULCH;百位×10→AXMOVAH,SBSHRAH,CL;取十位ADDAL,AH;百位×10+十位→ALMULCH;(百位×10+十位)×10→AXANDSB,0FH;取个位ADDSB,AL;(百位×10+十位)×10+个位→SBN2×102+N1×10+N0=(N2×10+N1)×10+N0程序段如下:格式:DIVsourceIDIVsource;符号整数除法注:源操作数source可以是字或字节,可为REG或MEM,不能为立即数目的操作数是AX或DX和AX2.除法指令DIV和符号整数除法指令IDIV3

4、.1.1乘除法指令16位除法指令所执行的操作如下图所示ALsourc8AXAXsourc16AXDXAHDX……3.1.1乘除法指令可用除法运算(除10取余)将二进制数转换为BCD数例将AL中的8位无符号二进制数转换为BCD数放入AX中“除10取余”法如,将二进制数FFH转换为BCD数255H例将AL中的8位无符号二进制数转换为BCD数放入AX中MOVAL,0FEHMOVCL,4MOVBL,10MOVAH,0;将8位二进制数扩展为16位DIVBL;商→AL,余数→AH(个位数)MOVBH,AH;个位暂存MOVAH,0DIVBL;商→AL,余数→AH(十位数)SH

5、LAH,CLORBH,AH;BCD数十位与个位合并MOVAH,0DIVBL;AH中余数为BCD数百位MOVAL,BH;BCD数十位与个位送AL“除10取余”法3.扩展指令CBW和CWD要把一个8位二进制数除以一个8位二进制数,要有一个16位二进制数在AX中.所以做8位除以8位的除法前先要把8位被除数扩展为16位,做16位除以16位的除法前要把16位被除数扩展为32位.这种扩展对于无符号数除法只需将AH或DX清0,而对符号整数除法则要通过扩展符号位来把被除数扩展。3.1.1乘除法指令两指令都隐含操作数在做8位除以8位、16位除以16位的除法之前,应先扩展AL或AX

6、中的被除数扩展指令和符号整数除法仅对补码数适用格式:CBW;AL的最高位扩展至AHCWD;AX的最高位扩展至DX3.1.1乘除法指令如:有一符号字数组变量ARRAY,第1个字是被除数,第2个字是除数,接着存放商和余数,其程序段为:MOVSI,OFFSETARRAYMOVAX,[SI]CWDIDIVWORDPTR2[SI]MOV4[SI],AXMOV6[SI],DX3.1.1乘除法指令3.1.2BCD数调整指令用二进制数算术运算指令对BCD数进行运算,会得到一个非BCD数或不正确的BCD数。如:00001001B+00000111B=00010000B000000

7、11B+00001001B=00001100B第一个结果是非BCD数;第二个结果是不正确的BCD数。若再加上6,就可以得到正确的BCD数:00010000B+00000110B=00010110B00001100B+00000110B=00010010B对BCD数使用二进制数算术运算指令进行运算,然后执行一条专用调整指令来处理BCD数的结果1.BCD数加法调整指令DAA和AAA格式:DAA功能:将AL中的和调整为正确的压缩BCD数调整规则:(AL&0FH)>9或AF=1,则AL加6;(AL&0F0H)>90H或CF=1,则AL加60H.3.1.2BCD数调整指令

8、(1)压缩BCD数加法调

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。