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

类型微机原理-第8章汇编语言程序设计课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4599688
  • 上传时间:2022-12-23
  • 格式:PPT
  • 页数:146
  • 大小:1.82MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《微机原理-第8章汇编语言程序设计课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    微机 原理 汇编语言 程序设计 课件
    资源描述:

    1、1精选课件精选课件1微型计算机机原理及应用2精选课件精选课件2程序设计的基本技术程序设计的基本技术1 12 23 35 5顺序程序设计顺序程序设计分支程序设计分支程序设计循环程序设计循环程序设计子程序设计子程序设计4 4串处理程序设计串处理程序设计3精选课件精选课件3注意:注意:本书有关汇编语言程序设计只限于本书有关汇编语言程序设计只限于DOSDOS环境下的实地址方式,该方式下字长为环境下的实地址方式,该方式下字长为1616位。位。顺序程序是最简单的程序,它的执行顺序顺序程序是最简单的程序,它的执行顺序和程序中指令的顺序完全一致和程序中指令的顺序完全一致1 1 顺序程序设计顺序程序设计4精选课

    2、件精选课件4 格式:格式:MUL source IMUL source ;符号整数乘法;符号整数乘法1.1 1.1 乘除法指令乘除法指令1.1.乘法指令乘法指令MULMUL和符号整数乘法指令和符号整数乘法指令IMULIMUL1 1、源操作数、源操作数 sourcesource可以是字节、字或双字,可为可以是字节、字或双字,可为 寄存器或存储器操作数,寄存器或存储器操作数,不能为立即数。不能为立即数。2 2、目的操作数是隐藏的,为被乘数,目的操作数是隐藏的,为被乘数,放于放于ALAL、AXAX或或 EAX EAX,视,视sourcesource的类型属性决定是的类型属性决定是ALAL、AXAX还

    3、是还是EAXEAX3 3、在乘法指令之前必须将目的操作数送、在乘法指令之前必须将目的操作数送AL(AL(字节乘字节乘)或或AX(AX(字乘字乘)或或EAXEAX(双字乘)。(双字乘)。5精选课件精选课件5乘积的放法:乘积的放法:8 8位或位或1616位乘法指令所执行的操作是位乘法指令所执行的操作是ALAL或或AXAX乘以乘以sourcesource,乘积放回到乘积放回到AXAX或或DXDX和和AXAX,如下图所示,如下图所示ALsourc8AXAXsourc16AXDX1.1 1.1 乘除法指令乘除法指令6精选课件精选课件63232位乘法指令所执行的操作是位乘法指令所执行的操作是EAXEAX乘

    4、以乘以sourcesource,乘积放回到乘积放回到EDXEDX和和EAXEAX,如下图所示,如下图所示EAXsourc32EAXEDX注意:乘法指令对标志位注意:乘法指令对标志位CFCF和和OFOF有影响,对其余标有影响,对其余标 志位的影响不确定。志位的影响不确定。1.1 1.1 乘除法指令乘除法指令7精选课件精选课件7例如例如:将将AXAX中的中的3 3位位BCDBCD数转换为二进制数数转换为二进制数存入字节变量存入字节变量SBSB中。中。M0V CH,10M0V CH,10MOV CL,4MOV CL,4MOV SB,AL MOV SB,AL ;暂存十位和个位;暂存十位和个位MOV A

    5、L,AH MOV AL,AH ;百位存入百位存入ALAL中中MUL CH MUL CH ;百位;百位1010AXAXMOV AH,SB MOV AH,SB ;百位百位1010的积小于的积小于255255,所以只用,所以只用ALAL存放即可存放即可SHR AH,CL SHR AH,CL ;取十位;取十位ADD AL,AH ADD AL,AH ;百位;百位10+10+十位十位ALALMUL CH MUL CH ;(;(百位百位10+10+十位十位)10 10 AXAXAND SB,0FH AND SB,0FH;取个位;取个位ADD SB,AL ADD SB,AL ;(百位百位10+10+十位十位)

    6、10+10+个位个位SBSB N2102N110N0(N210N1)10N0程序段如下:程序段如下:1.1 1.1 乘除法指令乘除法指令8精选课件精选课件8 格式:格式:IMUL REG,source;REGREG X sourceREG X source IMUL REG,source,immREG,source,imm;REGsource X REGsource X immimm1.1 1.1 乘除法指令乘除法指令注:符号整数乘法指令注:符号整数乘法指令IMULIMUL1 1、双操作数乘法指令是用源操作数乘目的操作数,、双操作数乘法指令是用源操作数乘目的操作数,乘积存入目的操作数。乘积存入

    7、目的操作数。2 2、三操作数乘法指令是用源操作数乘立即数,乘积、三操作数乘法指令是用源操作数乘立即数,乘积 存入目的操作数。存入目的操作数。3 3、要求:要求:其源操作数其源操作数 sourcesource可为寄存器或存储器可为寄存器或存储器 操作数,目的操作数只能是操作数,目的操作数只能是1616位和位和3232位的寄存位的寄存 器,源、目的操作数的类型器,源、目的操作数的类型要求一致。要求一致。9精选课件精选课件9 格式:格式:DIV source IDIV source ;符号整数除法;符号整数除法注意:注意:l源操作数源操作数sourcesource可以是字、字节或双字,可为可以是字、

    8、字节或双字,可为 REG REG或或MEMMEM,不能为立即数不能为立即数l目的操作数是隐藏的,放置被除数,可为目的操作数是隐藏的,放置被除数,可为AXAX或或DXDX 和和AXAX或或EDXEDX和和EAXEAX。2.2.除法指令除法指令DIVDIV和符号整数除法指令和符号整数除法指令IDIVIDIV1.1 1.1 乘除法指令乘除法指令10精选课件精选课件108 8位或位或1616位除法指令所执行的操作如下图所示位除法指令所执行的操作如下图所示ALsourc8AXAXsourc16AXDXAHDX1.1 1.1 乘除法指令乘除法指令11精选课件精选课件113232位除法指令所执行的操作如下图

    9、所示位除法指令所执行的操作如下图所示EAXsourc32EAXEDXEDXl 可用除法运算(除可用除法运算(除1010取余)将二进制数转换为取余)将二进制数转换为BCDBCD数数1.1 1.1 乘除法指令乘除法指令12精选课件精选课件12如,用除如,用除1010取余法将取余法将8 8位二进制数位二进制数FFHFFH转换为转换为BCDBCD数数255H255H的二进制运算如下图所示的二进制运算如下图所示1.1 1.1 乘除法指令乘除法指令方法:“除除1010取余取余”法法例如将例如将ALAL中的中的8 8位无符号位无符号二进制数转换为二进制数转换为BCDBCD数数放入放入AXAX中中13精选课件

    10、精选课件13例如将例如将ALAL中的中的8 8位无符号位无符号二进制数转换为二进制数转换为BCDBCD数数放入放入AXAX中中MOV AL,0FFHMOV AL,0FFHMOV CL,10MOV CL,10MOV AH,0 MOV AH,0 ;将将8 8位二进制数扩展为位二进制数扩展为1616位位DIV CL DIV CL ;商商ALAL,余数,余数AHAH(个位数)(个位数)MOV CH,AH MOV CH,AH ;暂存;暂存BCDBCD数个位数个位MOV AH,0 MOV AH,0 DIV CL DIV CL ;商商ALAL,余数,余数AHAH(十位数)(十位数)MOV CL,4MOV C

    11、L,4SHL AH,CL SHL AH,CL ;BCDBCD数十位移至高数十位移至高4 4位位OR CH,AH OR CH,AH ;BCD;BCD数十位与个位拼合数十位与个位拼合MOV AH,0MOV AH,0MOV CL,10MOV CL,10DIV CL DIV CL ;AH;AH中余数为中余数为BCDBCD数的百位数的百位MOV AL,CHMOV AL,CH ;BCDBCD数十位与个位送数十位与个位送ALAL1.1 1.1 乘除法指令乘除法指令14精选课件精选课件14 3.3.扩展指令扩展指令CBWCBW和和CWDCWD扩展方法:扩展方法:要把一个要把一个8 8位二进制数除以另一个位二进

    12、制数除以另一个8 8位二进制数位二进制数,要有要有一个一个1616位二进制数在位二进制数在AXAX中,所以做中,所以做8 8位除以位除以8 8位的除位的除法前先要把法前先要把8 8位被除数扩展为位被除数扩展为1616位。做位。做1616位除以位除以1616位位的除法前要把的除法前要把1616位被除数扩展为位被除数扩展为3232位位,做做3232位除以位除以3232位的除法前要把位的除法前要把3232位被除数扩展为位被除数扩展为6464位。这种扩展位。这种扩展对于对于无符号数除法只需将无符号数除法只需将AHAH或或DXDX或或EDXEDX清清0 0,而,而对符对符号整数除法则要通过扩展符号位来把

    13、被除数扩展号整数除法则要通过扩展符号位来把被除数扩展。1.1 1.1 乘除法指令乘除法指令15精选课件精选课件15l 指令都隐含操作数指令都隐含操作数l 在做在做8 8位除以位除以8 8位、位、1616位除以位除以1616位、位、3232位除以位除以3232位位的的符号整数符号整数除法之前,应先扩展除法之前,应先扩展ALAL或或AXAX或或EAXEAX中的被中的被除数。除数。l 扩展指令和符号整数除法指令仅对扩展指令和符号整数除法指令仅对补码数补码数适用。适用。格式:格式:CBW ;ALAL的最高位符号位扩展至的最高位符号位扩展至AHAH CWD ;AXAX的最高位扩展至的最高位扩展至DXDX

    14、 CWDE ;AX;AX的最高位扩展至的最高位扩展至EAXEAX的高的高1616位位 CDQ ;EAX;EAX的最高位扩展至的最高位扩展至EDXEDX1.1 1.1 乘除法指令乘除法指令16精选课件精选课件16如:有一符号字数组变量如:有一符号字数组变量ARRAYARRAY,第,第1 1个字是被除数个字是被除数,第第2 2个字是除数,接着存放商和余数,其程序段为:个字是除数,接着存放商和余数,其程序段为:MOV SIMOV SI,OFFSET ARRAYOFFSET ARRAYMOV AXMOV AX,SISICWDCWDIDIV WORD PTR 2IDIV WORD PTR 2SISIMO

    15、V 4MOV 4SISI,AXAXMOV 6MOV 6SISI,DXDX1.1 1.1 乘除法指令乘除法指令17精选课件精选课件171.2 BCD1.2 BCD数调整指令数调整指令分析:分析:两个两个 BCDBCD数相加,其和仍应为数相加,其和仍应为BCDBCD数,如不是数,如不是 BCDBCD数则结果数则结果错误。错误。(正确)正确)BCDBCD数数 十进制数码十进制数码 加法器的和(错误)加法器的和(错误)0000 0 0000 0000 0 0000 1001 9 1001 1001 9 1001 0001 0001,0000 10 10100000 10 1010 0001 0001,

    16、0101 15 11110101 15 1111 0001 0001,0110 16 0001,00000110 16 0001,0000 0010 0010,0101 25 0001,10010101 25 0001,1001如何修正?如何修正?18精选课件精选课件181.2 BCD1.2 BCD数调整指令数调整指令造成此结果的原因?造成此结果的原因?产生错误的原因是产生错误的原因是 8421BCD8421BCD码为十进制,逢十进一,码为十进制,逢十进一,而四而四位二进制是逢十六进一,二者进位关系不同,位二进制是逢十六进一,二者进位关系不同,当和数大于当和数大于 9 9 时,时,8421BC

    17、D8421BCD应产生进位,而十六进制还不可能产生进位。为应产生进位,而十六进制还不可能产生进位。为此,应对结果进行修正。当运算结果小于等于此,应对结果进行修正。当运算结果小于等于 9 9 时,不需修时,不需修正或加正或加“0”0”,但当结果大于,但当结果大于 9 9 时,应修正让其产生一个进位时,应修正让其产生一个进位,加,加01100110即可。即可。如相加结果产生了进位位,其结果必定大于如相加结果产生了进位位,其结果必定大于 9 9,所以,所以,也也需修正。需修正。对对BCDBCD数使用二进制数算术运算指令进行运算,然后执行一数使用二进制数算术运算指令进行运算,然后执行一条专用调整指令来

    18、处理条专用调整指令来处理BCDBCD数的结果。数的结果。19精选课件精选课件19 1.BCD1.BCD数加法调整指令数加法调整指令DAADAA和和AAAAAA格式:格式:DAA功能:功能:将将ALAL中的数当作两个压缩中的数当作两个压缩BCDBCD数数相加之和调整为相加之和调整为 正确的压缩正确的压缩BCDBCD数。数。调整规则调整规则:(AL(AL0FH)90FH)9或或AF=1AF=1,则,则ALAL加加6;6;(ALAL0F0H)90H0F0H)90H或或CF=1CF=1,则则ALAL加加60H.60H.1.2 BCD1.2 BCD数调整指令数调整指令(1 1)压缩)压缩BCDBCD数加

    19、法调整数加法调整20精选课件精选课件20 注意:注意:l该指令操作数隐含为该指令操作数隐含为AL,AL,即只能对即只能对ALAL中的操作数据进行调中的操作数据进行调整。导致压缩整。导致压缩BCDBCD数的加减指令只能针对数的加减指令只能针对字节字节运算。运算。l对结果调整时要用到对结果调整时要用到CFCF和和AFAF两个标志位,所以调整指令应两个标志位,所以调整指令应紧跟紧跟BCDBCD数加法指令数加法指令lDAADAA指令会影响标志指令会影响标志如如:MOV AX:MOV AX,3456H3456H ADD ALADD AL,AH AH;ALAL8AH,AF8AH,AF0,CF0,CF0 0

    20、 DAA DAA ;ALAL90H90H 0011 0100 0101 0110 1000 1010 0110 1001 00001.2 BCD1.2 BCD数调整指令数调整指令21精选课件精选课件21例例1 1 求两个字变量求两个字变量W1W1和和W2W2中压缩中压缩BCDBCD数之和,存入字节变量数之和,存入字节变量SUMSUM中。中。如:如:8931+5678=14609 8931+5678=14609,程序段如下:,程序段如下:W1 DW 8931HW1 DW 8931HW2 DW 5678HW2 DW 5678HSUM DB 3 DUP(0)SUM DB 3 DUP(0)MOV AL

    21、,BYTE PTR W1 MOV AL,BYTE PTR W1 ;ALAL31H31H ADDADD AL,BYTE PTR W2AL,BYTE PTR W2 ;31+78=A9H,AL;31+78=A9H,ALA9H,CF=0,AF=0A9H,CF=0,AF=0 DAADAA ;ALAL09H,CF=109H,CF=1 MOV SUM,AL MOV SUM,AL ;存个位和十位;存个位和十位 MOV AL,BYTE PTR W1+1 MOV AL,BYTE PTR W1+1 ;ALAL89H89H ADC ADC AL,BYTE PTR W2+1 AL,BYTE PTR W2+1 ;89+5

    22、6+CF=AL;89+56+CF=ALE0H,CF=0,AF=1E0H,CF=0,AF=1 DAADAA ;ALAL46H,CF=146H,CF=1 MOV SUM+1,AL MOV SUM+1,AL ;存百位和千位;存百位和千位 MOV SUM+2,0 MOV SUM+2,0 ;处理向万位的进位处理向万位的进位 RCL SUM+2,1 RCL SUM+2,11.2 BCD1.2 BCD数调整指令数调整指令22精选课件精选课件22 格式:格式:AAA功能:功能:将将ALAL中的数当作两个非压缩中的数当作两个非压缩BCDBCD数数相加之和相加之和 进行调整,得到正确的非压缩进行调整,得到正确的非

    23、压缩BCDBCD数数送送AXAX 。调整规则调整规则:(AL(AL0FH)90FH)9或或AF=1,AF=1,则则(AL+6)(AL+6)0FHAL,0FHAL,AH+1AHAH+1AH ;否则,否则,ALAL0FH AL 0FH AL,AHAH不变不变.(2 2)非压缩)非压缩BCDBCD数加法调整数加法调整1.2 BCD1.2 BCD数调整指令数调整指令23精选课件精选课件23注意:注意:l同同DAADAA指令,指令,AAAAAA指令的操作数也隐含为指令的操作数也隐含为AL,AL,且要紧跟加法指且要紧跟加法指令。导致非压缩令。导致非压缩BCDBCD数的加减指令只能针对字节运算。数的加减指令

    24、只能针对字节运算。lAAAAAA调整后的存放规律可调整后的存放规律可理解理解为调整后的个位数送为调整后的个位数送AL,AL,十位十位数数(即进位即进位)加到加到AHAH中,中,故执行该指令前应注意故执行该指令前应注意AHAH是否清是否清0 0。如:将两个如:将两个BCDBCD数的数的ASCIIASCII码相加,得到和的码相加,得到和的ASCIIASCII码:码:MOV ALMOV AL,35H35H ;5 5 ADD ALADD AL,39H39H ;9 9,AL=6EH,AL=6EH MOV AHMOV AH,0 0 AAA AAA ;AX=0104HAX=0104H OR AX,3030H

    25、OR AX,3030H ;AX=3134H ;AX=3134H 即即14141.2 BCD1.2 BCD数调整指令数调整指令24精选课件精选课件24例例2 2 求两个字变量求两个字变量W1W1和和W2W2中非压缩中非压缩BCDBCD数之和,存入字节变量数之和,存入字节变量SUMSUM中。中。如:如:89+67=15689+67=156,程序段如下:,程序段如下:W1 DW 0809HW1 DW 0809HW2 DW 0607HW2 DW 0607HSUM DB 3 DUP(0)SUM DB 3 DUP(0)MOV AX,W1 MOV AX,W1 ;AXAX0809H0809H ADD AL,B

    26、YTE PTR W2ADD AL,BYTE PTR W2 ;AL;AL10H10H,AF=1AF=1 AAAAAA ;AXAX0906H0906H MOV SUM,AL MOV SUM,AL ;存个位;存个位 MOV AL,AH MOV AL,AH ADD ADD AL,BYTE PTR W2+1AL,BYTE PTR W2+1 ;AL;AL0FH0FH,AF=0AF=0 MOV AH,0MOV AH,0 AAAAAA ;ALAL05H05H,AH=01HAH=01H MOV WORD PTR SUM+1,AXMOV WORD PTR SUM+1,AX ;存十位和百位;存十位和百位1.2 BC

    27、D1.2 BCD数调整指令数调整指令25精选课件精选课件25 格式:格式:DASDAS功能:功能:将将ALAL中的数当作两个压缩中的数当作两个压缩BCDBCD数数相减之差进相减之差进 行调整,得到正确的压缩行调整,得到正确的压缩BCDBCD数。数。调整规则调整规则:(AL(AL0FH)90FH)9或或AF=1AF=1,则,则ALAL减减6;6;(ALAL0F0H)90H0F0H)90H或或CF=1,CF=1,则则ALAL减减60H.60H.如:如:MOV AXMOV AX,5643H5643H SUB ALSUB AL,AHAH ;AL=DEHAL=DEH,有借位,有借位 DAS DAS ;A

    28、L=78HAL=78H,保持借位,即,保持借位,即134-56134-562.BCD2.BCD数减法调整指令数减法调整指令DASDAS和和AASAAS(1 1)压缩)压缩BCDBCD数减法调整数减法调整1.2 BCD1.2 BCD数调整指令数调整指令26精选课件精选课件26 格式:格式:AASAAS功能:功能:将将ALAL中的数当作两个非压缩中的数当作两个非压缩BCDBCD数数相减之差相减之差 进行调整,得到正确的非压缩进行调整,得到正确的非压缩BCDBCD数数送送AXAX。调整规则调整规则:(AL(AL0FH)90FH)9或或AF=1,AF=1,则则 (AL-6)(AL-6)0FHAL,AH

    29、-1AH 0FHAL,AH-1AH;否则,否则,ALAL0FH AL 0FH AL,AHAH不变不变.如:如:MOV AXMOV AX,0806H0806H SUB ALSUB AL,07H07H ;AX=08FFHAX=08FFH AASAAS ;AX=0709HAX=0709H(2 2)非压缩)非压缩BCDBCD数减法调整数减法调整1.2 BCD1.2 BCD数调整指令数调整指令27精选课件精选课件27 格式:格式:AAM功能:功能:将将ALAL中小于中小于64H64H的的二进制数变换为非压缩二进制数变换为非压缩BCDBCD数数送送AXAX调整规则调整规则:AL/0AH AHAL/0AH

    30、AH(十位),(十位),AL MOD 0AH ALAL MOD 0AH AL(个位)(个位)如如:MOV AL:MOV AL,63H63H AAMAAM ;AX=0909HAX=0909H3.3.非压缩非压缩BCDBCD数乘除法调整指令数乘除法调整指令AAMAAM和和AADAAD(1 1)乘法调整)乘法调整1.2 BCD1.2 BCD数调整指令数调整指令28精选课件精选课件28 例例3 3 字变量字变量W W和字节变量和字节变量B B分别存放着两个非压缩分别存放着两个非压缩BCDBCD数,编写求数,编写求两数之积,并将它存储到两数之积,并将它存储到JJJJ字节变量中的程序。字节变量中的程序。程

    31、序段如下:程序段如下:W DW 0307HW DW 0307HB DB 9B DB 9JJ DB 3 DUP(0)JJ DB 3 DUP(0)MOV AL,BYTE PTR W MOV AL,BYTE PTR W;AL=07HAL=07H MUL BMUL B;AX=003FHAX=003FH AAMAAM;AX=0603HAX=0603H MOV WORD PTR JJ,AXMOV WORD PTR JJ,AX MOV AL,BYTE PTR W+1MOV AL,BYTE PTR W+1;AL=03HAL=03H MUL BMUL B;AX=001BHAX=001BH AAMAAM;AX=0

    32、207HAX=0207H ADD AL,JJ+1ADD AL,JJ+1;07H+06H=0DH,07H+06H=0DH,即即AL=0DHAL=0DH AAAAAA;进位直接加入进位直接加入AHAH!AX=0303H!AX=0303H MOV WORD PTR JJ+1 MOV WORD PTR JJ+1,AXAX1.2 BCD1.2 BCD数调整指令数调整指令29精选课件精选课件29 格式:格式:AAD功能:将功能:将AXAX中的两位中的两位非压缩非压缩BCDBCD数变换成二进制数数变换成二进制数集集中放在中放在ALAL中。中。如:如:MOV AX MOV AX,0906H0906H MOV

    33、DLMOV DL,06H06H AAD AAD ;AX=0060HAX=0060H DIV DL DIV DL ;AL=10H,AH=0AL=10H,AH=0 MOV DLMOV DL,AH AH ;存余数;存余数 AAM AAM ;AX=0106HAX=0106H(2 2)除法调整)除法调整注:注:l此指令可对被除数进行预此指令可对被除数进行预调整调整l加、减和乘法调整在相应加、减和乘法调整在相应运算操作之后进行,而除运算操作之后进行,而除法的调整在除法操作之前法的调整在除法操作之前进行进行1.2 BCD1.2 BCD数调整指令数调整指令30精选课件精选课件30例例3.43.4字变量字变量W

    34、 W和字节变量和字节变量B B中分别存放着两个非压缩中分别存放着两个非压缩BCDBCD数编程求二数编程求二者的商和余数,并分别存放到字变量者的商和余数,并分别存放到字变量QUOTQUOT和字节变量和字节变量REMAREMA中。中。程序程序段如下:段如下:W DW 0909HW DW 0909H B DB 5B DB 5 REMA DB 0REMA DB 0 QUOT DW 0QUOT DW 0 MOV AX,WMOV AX,W AADAAD;0909H;0909H63H63H DIV B DIV B;63H;63H 5=13H4,AL=13H,AH=04H5=13H4,AL=13H,AH=04

    35、H MOV REMA,AH MOV REMA,AH AAM AAM;13H;13H0109H0109H MOV QUOT,AX MOV QUOT,AX1.2 BCD1.2 BCD数调整指令数调整指令31精选课件精选课件31例例5 5 从键盘键入从键盘键入0 09 9的任一自然数的任一自然数N N,求其立方值并将其,求其立方值并将其送显示器显示送显示器显示.INPUT DB INPUT DB Please Input NPlease Input N(0 09 9):):LFB DB LFB DB 0 0 1 1 8 8 2727 6464 DB DB 1251252162163433435125

    36、12729729N DB 0N DB 0 MOV DXMOV DX,OFFSET INPUTOFFSET INPUT MOV AHMOV AH,9 9 INT 21H INT 21H 显示显示提示信息提示信息建立建立立方表立方表可用乘法运算实现,也可用查表法实现。查表法程序段如下:可用乘法运算实现,也可用查表法实现。查表法程序段如下:1.3 1.3 顺序程序设计举例顺序程序设计举例32精选课件精选课件32 MOV AH MOV AH,1 1 ;输入并显示器显示;输入并显示器显示N N,N N送入送入ALAL INT 21HINT 21HMOV NMOV N,ALALMOV AHMOV AH,2

    37、 2 ;2 2号系统功能调用号系统功能调用-换行换行MOV DLMOV DL,0AH0AHINT 21HINT 21HMOV DL,NMOV DL,NAND DLAND DL,0FH 0FH ;将;将NN转换为转换为N(N(将将ASCIIASCII码转换为数字)码转换为数字)MOV CL MOV CL,2 ;2 ;将将N N乘以乘以4 4 SHL DLSHL DL,CL CL MOV DHMOV DH,0 0 ;8 8位位4N4N扩展为扩展为1616位的地址偏移量位的地址偏移量 ADD DX ADD DX,OFFSET LFB OFFSET LFB ;4N+4N+表的偏移地址表的偏移地址 MO

    38、V AH MOV AH,9 9INT 21HINT 21H1.3 1.3 顺序程序设计举例顺序程序设计举例33精选课件精选课件33例例6 6 编写两个编写两个3232位无符号数的乘法程序位无符号数的乘法程序程序如下:.386.386stack segment stack USE16 stack segment stack USE16 stackstack dw 32 dup(0)dw 32 dup(0)stack endsstack endsdata segment USE16data segment USE16AB DD 12345678HAB DD 12345678HCD DD 12233

    39、445HCD DD 12233445HABCD ABCD DD 2 DUP(0)DD 2 DUP(0)data endsdata ends code segment USE16 start proc far assume ss:stack,cs:code,ds:data1.3 1.3 顺序程序设计举例顺序程序设计举例34精选课件精选课件34 push ds sub ax,ax push ax mov ax,data mov ds,ax MOV EAX,AB MUL CD MOV ABCD,EAX MOV ABCD+4,EDX retstart endpcode ends end start1.

    40、3 1.3 顺序程序设计举例顺序程序设计举例35精选课件精选课件35程序设计的基本技术程序设计的基本技术1 13 35 5顺序程序设计顺序程序设计分支程序设计分支程序设计循环程序设计循环程序设计子程序设计子程序设计4 4串处理程序设计串处理程序设计2 236精选课件精选课件36 顺序程序顺序程序是按指令的书写(存放)顺序执行,而是按指令的书写(存放)顺序执行,而实际情况需要根据不同的条件做不同的处理,形实际情况需要根据不同的条件做不同的处理,形成分支成分支.汇编中的汇编中的分支的条件分支的条件往往是通过往往是通过标志的不同状态标志的不同状态而反映的。而反映的。常用常用改变标志指令改变标志指令和

    41、和转移指令转移指令实现分支。实现分支。分类:分类:JMPJMP、JCONDJCOND两类。转移指令将控制程序转两类。转移指令将控制程序转 向其后的目的标号指定的地址。条件转移向其后的目的标号指定的地址。条件转移 指令紧跟在能改变并设置状态的指令之后,指令紧跟在能改变并设置状态的指令之后,由状态标志决定程序的走向。由状态标志决定程序的走向。2 2 分支程序设计分支程序设计37精选课件精选课件37通用格式:通用格式:Jcond short_lableJcond short_lable操作:操作:若满足条件,则若满足条件,则OFFSETOFFSET short_lable short_lableIP

    42、IP,实实 现转移;否则顺序执行现转移;否则顺序执行.lshort_lable short_lable 短标号,条件转移是相对转移指令,短标号,条件转移是相对转移指令,即从当前地址到目标地址的偏移量为即从当前地址到目标地址的偏移量为-128-128127127(从(从本指令则为本指令则为-126-126+129,+129,因为条件转移指令均为双字因为条件转移指令均为双字节指令),故节指令),故只能实现段内转移只能实现段内转移.8038680386以后,在实以后,在实地址方式下,能够转移到代码段的任何位置。地址方式下,能够转移到代码段的任何位置。2.1 2.1 条件转移指令条件转移指令38精选课

    43、件精选课件38 仅判断一个标志位实现转移仅判断一个标志位实现转移.PF=0PF=0奇转移奇转移JNP/JPOJNP/JPOPF=1PF=1偶转移偶转移 JP/JPEJP/JPEOF=0OF=0无溢出转移无溢出转移JNOJNOOF=1OF=1溢出转移溢出转移JOJOSF=0SF=0为正转移为正转移JNSJNSSF=1SF=1为负转移为负转移JSJSCF=0CF=0无进无进(借借)位转移位转移JNCJNCCF=1CF=1有进有进(借借)位转移位转移JCJCZF=0ZF=0不相等不相等/不等于不等于0 0转移转移JNE/JNZJNE/JNZZF=1ZF=1相等相等/等于等于0 0转移转移JE/JZJ

    44、E/JZ标志设置标志设置功能功能指令助记符指令助记符1.1.简单条件转移指令简单条件转移指令2.1 2.1 条件转移指令条件转移指令39精选课件精选课件39如:如:JZ/JE S_LABJZ/JE S_LAB为零为零/相等转移相等转移 操作:操作:测试前面操作结果为测试前面操作结果为0 0则转移,即判则转移,即判ZF=1ZF=1 转移转移.lJZ,JEJZ,JE为等价助记符,任写一种均可,可根据为等价助记符,任写一种均可,可根据程序设计意图选择程序设计意图选择.如:如:MOV BX,0FFFFH MOV BX,0FFFFH INC BX ;ZF=1INC BX ;ZF=1 JZ NEXT ;J

    45、Z NEXT ;为为0 0转移到转移到NEXTNEXT NEXTNEXT:2.1 2.1 条件转移指令条件转移指令40精选课件精选课件40如:如:MOV BL,1 ;MOV BL,1 ;CMP BL,5 ;ZF=0CMP BL,5 ;ZF=0 JE NEXT ;JE NEXT ;比较结果相等则转移到比较结果相等则转移到NEXTNEXT ;不相等顺序执行;不相等顺序执行NEXTNEXT:注意:注意:此类指令,均只测试前面的操作结果所设标此类指令,均只测试前面的操作结果所设标志,指令本身不影响标志志,指令本身不影响标志.所以,在条件转移指令所以,在条件转移指令前,一定有一条能正确影响标志的指令前,

    46、一定有一条能正确影响标志的指令.2.1 2.1 条件转移指令条件转移指令41精选课件精选课件41 2.2.无符号数条件转移指令无符号数条件转移指令 条件转移常依据两个数的关系来决定,两个数的关系条件转移常依据两个数的关系来决定,两个数的关系 除相等与否,还有大小之分,比较大小时,要区分是除相等与否,还有大小之分,比较大小时,要区分是无符号数还是符号数,否则答案不明确无符号数还是符号数,否则答案不明确.如:如:0FFH00H?0FFH00H?视为无符号数视为无符号数 0FFH=255 00H 0FFH=255 00H;视为符号数视为符号数 0FFH=-1 0FFH=-1 00H.00H.所以,应

    47、将两种类型的数分开比较:所以,应将两种类型的数分开比较:对对无符号数无符号数使用术语:使用术语:低于低于/高于高于 B Below/elow/A Abovebove;对对带符号数带符号数使用术语:使用术语:小于小于/大于大于 L Less/ess/G Greaterreater2.1 2.1 条件转移指令条件转移指令42精选课件精选课件42 无符号数无符号数条件转移指令有条件转移指令有4 4条(条(P93P93,表,表3 32 2):):指令助记符指令助记符 功能功能 JB/JNAEJB/JNAE 低于低于/不高于等于转移不高于等于转移 JNB/JAEJNB/JAE 不低于不低于/高于等于转移

    48、高于等于转移 JA/JNBEJA/JNBE 高于高于/不低于等于转移不低于等于转移 JNA/JBEJNA/JBE 不高于不高于/低于等于转移低于等于转移2.1 2.1 条件转移指令条件转移指令43精选课件精选课件43 3.3.符号数条件转移指令符号数条件转移指令 有符号数有符号数条件转移指令有条件转移指令有4 4条(条(P94P94,表,表3 33 3):):指令助记符指令助记符 功能功能 JL/JNGEJL/JNGE 小于小于/不大于等于转移不大于等于转移 JNL/JGEJNL/JGE 不小于不小于/大于等于转移大于等于转移 JG/JNLE JG/JNLE 大于大于/不小于等于转移不小于等于

    49、转移 JNG/JLE JNG/JLE 不大于不大于/小于等于转移小于等于转移2.1 2.1 条件转移指令条件转移指令44精选课件精选课件44 格式:格式:JMP targetJMP target操作:操作:将控制转向目的标号将控制转向目的标号targettarget:targettarget在段内在段内:target target的偏移地址的偏移地址IPIP targettarget在段外在段外:target target的偏移地址的偏移地址IPIP targettarget的段首址的段首址CS CS 条件转移范围为条件转移范围为-128-128+127,+127,而无条件转移指令而无条件转移

    50、指令没有范围限制没有范围限制.在分支程序中往往需要它将各分支在分支程序中往往需要它将各分支重新汇集到一起重新汇集到一起.如何实现条件转移指令的范围?如何实现条件转移指令的范围?2.2 2.2 无条件转移指令无条件转移指令1.1.无条件无条件直接转移直接转移指令指令45精选课件精选课件45 格式格式:JMP destJMP dest 操作操作:转移的目的地址放于寄存器或存储器。转移的目的地址放于寄存器或存储器。目的操作数为目的操作数为寄存器寄存器寄存器内容送寄存器内容送IPIP 目的操作数为目的操作数为字变量字变量字变量内容送字变量内容送IP IP 目的操作数为目的操作数为双字变量双字变量双字变

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

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


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


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

    163文库