微机原理-第8章汇编语言程序设计课件.ppt
- 【下载声明】
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
展开阅读全文