ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:30.79KB ,
资源ID:5729520      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5729520.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机接口技术教案5.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机接口技术教案5.docx

1、计算机接口技术教案5威海海洋职业学院课 程 教案使用教材 微机原理与接口技术 出版社中国电力出版社 适用专业 五专船舶电子技术 层 次 大专 总学时 32 授课教师 吴庆海 教研室 电气自动化 授课学年 20162017学年 学 期 第一学期 课 程 教 案教 师吴庆海职称讲师专业船舶电子班级五专船电1601.1602课程名称计算机接口技术章 节第2章 指令系统2.3 指令系统第二部分教学时数2教学方法及手段新授课 多媒体授课目的要求1、 掌握指令的基本格式2、 掌握指令系统教学内容见附页。时间分 配重点难点思考题 重难点:1 算术运算和逻辑运算 2 控制转移类指令 3 处理器控制类指令参考文

2、献1 微型计算机原理与接口技术,吴秀清主编,中国科技大学出版社,20032 微型计算机技术及应用,戴梅萼、史嘉权编著,清华大学出版社,2004课程教案附页2.3 8086指令系统算术运算指令算术运算指令包括加、减、乘、除四组。可实现字节或字,无符号数和有符号数运算。指令有单操作数(如乘、除指令)的,也有双操作数的。单操作数不允许使用立即数,而双操作数中,立即数也只能作为源操作数。此外,也不允许两个操作数都为存储器操作数。算术运算可能涉及到超出数的表示范围的问题,对无符号数和有符号数分别可由CF和OF标志来判断。除四组二进制算术运算指令外,为使运算结果为十进制数(为BCD码),8088指令系统还

3、提供了四类十进制调整指令。算术运算指令大多会对标志位产生影响。1.加法运算指令加法运算指令有三条:不带进位位的加法指令ADD、带进位位的加法指令ADC及加1指令INC。(1)不带进位位的加法指令ADD(add)指令格式为:ADD OPRD1,OPRD2 ;(OPRD1)(OPRD1)+(OPRD2)ADD指令用于两个操作数相加(目标操作数加源操作数),和置于目标操作单元。源操作数和目标操作数均可为8位或16位的寄存器操作数或存储器操作数,源操作数还可为立即数。两操作数可为无符号数,也可为带符号数。需要注意的是:两操作数不能同时为存储器操作数。另外不能对段寄存器进行运算。ADD指令的执行会对6个

4、状态标志位产生影响。例如:ADD CL,20H ;(CL)(CL)+ 20HADD AX,SI ;(AX)(AX)+(SI)ADD DATABX,AL ;(BX)+ DATA)(BX)+ DATA)+(AL)ADD DX,BX+SI ;(DX)(DX)+(BX)+(SI)+ 1):(BX)+(SI)上述指令均为合法的ADD指令,而下列ADD指令则是非法的:ADD SI,BX ;不允许两操作数均为存储器操作数ADD DS,AX ;不允许段寄存器进行运算ADD指令应用举例:例:试析执行下列指令后,各标志位的状态。MOV AL,7EH ;(AL)7EHADD AL,5BH ;(AL)7EH + 5B

5、H 01111110+ 0101101111011001执行后:AF = 1,CF = 0,OF = 1,PF = 0,SF = 1,ZF = 0(AL)= D9H若为无符号数,运算结果未超出8位二进制数的表示范围(CF = 0);若为有符号数,运算结果已超出8位二进制数的表示范围(OF = 1)。(2)带进位的加法指令ADC(add with carry)指令格式为:ADD OPRD1,OPRD2 ;(OPRD1)(OPRD1)+(OPRD2)+ CFADD指令在格式、功能及对标志位影响上都与ADD指令类同,只是标志位CF的值也参与加法运算,常用于多字节加法运算。ADC指令应用举例:例:求两

6、个4字节无符号数0107A379H + 10067E4FH之和。程序如下:MOV DX,0107H ;第1个数的高位送DXMOV AX,0A379H ;第1个数的低位送AXMOV BX,1006H ;第2个数的高位送BXMOV CX,7E4FH ;第2个数的低位送CXADD AX,CX ;两数低16位相加ADC DX,BX ;两数高16位相加,并加上低16位相加中的进位位执行结果:(DX)= 110EH (AX)= 21C8H CF = 0即两数之和为110E21C8H上程序可简化如下:MOV AX,0A379HADD AX,7E4FHMOV DX,0107HADC DX,1006H执行结果与

7、上程序相同。(3)加1指令INC(increment)指令格式为:INC OPRD ;(OPRD)(OPRD)+ 1INC指令将指定的操作数内容加1,后再送回该操作数。操作数可以是寄存器或存储器操作数。但不能是段寄存器,也不能为立即数。操作数可以是8位,也可为16位。INC指令不影响CF标志位,但对AF、OF、PF、SF及ZF会产生影响。它通常在循环程序中用于修改地址指针及循环次数等。例如:INC AX ;(AX)(AX)+ 1INC BL ;(BL)(BL)+ 1INC BYTE PTRSI ;将SI所指向的存储单元内容加1,并送回该单元2.减法指令8088/8086共有5条减法指令。包括:

8、不考虑借位的减法指令SUB,考虑借位的减法指令SBB,减1指令DEC,求补指令NEG以及比较指令CMP。(1)不考虑借位的减法指令SUB(subtract)指令格式为:SUB OPRD1,OPRD2 ;(OPRD1)(OPRD1)-(OPRD2)SUB指令用于两个数相减(目标操作数减去源操作数),结果置于目标操作单元。该指令对操作数的要求及对标志位的影响与ADD指令完全相同。例如:SUB BL,30H ;(BL)(BL)- 30HSUB AL,BP + SI ;AL的内容减去SS段中偏移地址为(BP)+ (SI)单元的 ;内容,结果送AL(2)考虑借位的减法指令SBB(subtract wit

9、h borrow)指令格式为:SBB OPRD1,OPRD2 ;(OPRD1)(OPRD1)-(OPRD2)- CFSBB指令在格式、功能及对标志位的影响上与SUB指令类同,只是标志位CF的值也参与减法运算,常用于多字节减法运算。例如:SBB BL,30H ;(BL)(BL)- 30H - CFSBB WORD PTRSI,1034H ;(SI)+ 1和(SI)的两个单元的值减去立即数1034H ;及CF的值,结果送回(SI)+ 1及(SI)两个单元(3)减1指令DEC(decrement)指令格式为:DEC OPRD ;(OPRD)(OPRD)- 1DEC指令将指定的操作数内容减1,后再送回

10、该操作数。它对操作数的要求及对标志位的影响均与INC指令相同。它也常在循环程序中用于修改地址指针及循环次数等。例如:DEC AX ;(AX)(AX)- 1DEC BL ;(BL)(BL)- 1DEC BYTE PTRDI ;以ES内容为基址,以DI内容为偏移地址单元的内容减 ;1,后送回该单元DEC指令应用举例:例:编写一个延时程序。 MOV CX,OFFFFH ;送计数初值到CXNEXT: DEC CX ;计数值(CX内容)减1 JNZ NEXT ;若(CX)0,则转NEXT HLT ;停止上程序延时时间可通过查表找到各条指令执行的时钟周期,后通过计算得到。(4)求补指令NEG(negate

11、)指令格式为:NEG OPRD ;(OPRD) 0 -(OPRD)NEG指令的功能是对操作数求补。即用0减去操作数内容,并将结果送回该操作数。NEG指令对6个状态标志位都有影响,并需注意以下两点:执行NEG指令后,除操作数位0外,一般情况下,都会使CF为1。当指定的操作数为80H(-128)或位8000H(-32768),则执行NEG指令后,结果不变,但此时OF置1,其它情况下OF均置0,NEG指令应用举例:例:设(DS)= 6000H,(BX)= 0010H,(60010H)= 47H。试析执行NEG BX指令的结果。解:执行上指令时,CPU将进行如下减法运算:00000000- 01000

12、11110111001故执行后(60010H)= B9H,相当于对-47H求补。(5)比较指令CMP(compare)指令格式为:CMP OPRD1,OPRD2 ;(OPRD1)-(OPRD2)CMP指令对两个操作数进行比较(相减),相减结果不送目标操作数,而根据相减的结果影响标志位。指令对操作数的要求及对标志为的影响与SUB指令完全相同。例如:CMP BX,2100H ;(BX)- 2100H, 影响标志位CMP CL,DH ;(CL)-(DH), 影响标志位CMP AX,BX+SI+4 ;(AX)-(BX)+(SI)+5):(BX)+(SI)+4),影响 ;标志位比较指令主要用来比较两个数

13、的大小关系。可在指令执行后,根据标志位的状态判断两个操作数的大小,或是否相等。判断方法如下:相等关系:根据ZF状态判断。如ZF = 1,两个操作数相等。否则,不等。大小关系:分无符号数和有符号数两种情况:(1)对两个无符号数,可据CF状态来判断。如CF = 0,则被减数大于减数;如CF = 1, 则减数大于被减数。(2)对两个有符号数,需考虑两个数是同号还是异号。对两个同符号数,相减不会产生溢出,即OF = 0。有:若SF = 0,则被减数大于减数。若SF = 1,则减数大于被减数。对两个不同符号数,相减可能产生溢出,也可能不产生溢出。若OF = 0,(无溢出),则:如被减数大于减数 SF =

14、 0如减数大于被减数 SF = 1若OF = 1,(有溢出),则:如被减数大于减数 SF = 1(例7FH - 82H = FDH)如减数大于被减数 SF = 0(例82H - 7FH = 03H)对上结果进行归纳,可得出判两个有符号数大小的方法是:当OFSF = 0时,被减数大于减数当OFSF = 1时,减数大于被减数编程时,一般都在CMP指令后紧跟一条条件转移指令,以根据比较结果决定程序走向。3.乘法指令8088的乘法指令包括无符号数乘法指令(MUL)和有符号数乘法指令(IMUL)两种。采用隐含寻址方式,源操作数由指令给出,目标操作数隐含。当字节与字节相乘时,乘积为16位,规定存放在AX中

15、;当字与字相乘时,乘积为32位,规定高16位存放在DX中,低16位存放在AX中。(1)无符号数的乘法指令MUL(unsigned mutiple)指令格式为:MUL OPRD指令操作分两种情况:字节相乘:(AX)(OPRD)(AL)字相乘:(DX):(AX)(OPRD)(AX)指令中源操作数OPRD可为8位或16位寄存器操作数或存储器操作数,但不能为立即数。例如:MUL BX ;(DX):(AX)(AX)(BX)MUL BYTE PTRSI ;(AX)(AL)(SI)MUL DL ;(AX)(AL)(DL)MUL WORD PTRDI ;(DX):(AX)(AX)(DI) + 1):(DI)M

16、UL指令对CF及OF标志有影响,当乘积的高半部(在字节相乘时为AH,在字相乘时为DX)不为零,则CF = OF = 1,否则CF = OF = 0。对其它标志位无定义。乘法指令执行时间较长,在某些场合下,可用左移指令来代替,以加快运行速度,待在移位指令中再作介绍。(2)带符号数的乘法指令IMUL(signed mutiple)指令格式为:IMUL OPRDIMUL指令功能与MUL指令类似,仅有以下几点差别:两乘数都为有符号数。若乘积的高半部分是低半部分的扩展,则CF = OF = 0;否则,CF = OF = 1指令中给出的源操作数应在带符号数的表示范围内。(作解释,如操作数为表达式)IMUL

17、指令应用举例:例:设(AL)= FEH,(CL)= 11H,求两数的乘积。若将两数看作无符号数,则应使用指令:MUL CL执行后结果:(AX)= 10DEH(解释:即0FE0H + FEH = 10DEH),且CF = OF = 1(AH内容不为0)。若将两数看作带符号数,则应使用指令:IMUL CL执行后结果:(AX)= FFDEH(解释:相当于-211H = -22H,即为FFDEH),且CF = OF = 0(AH内容为AL内容符号位的扩展)。4.除法指令8088的除法指令也包括无符号除法指令(DIV)和有符号除法指令(IDIV)两种,也采用隐含寻址方式。除数由指令给出(不能为立即数)。

18、除法指令要求被除数的字长必须为除数的2倍(如不够要用字位扩展指令来扩展)。当除数为8位,则被除数为16位,规定放在AX中;当除数为16位,则被除数为32位,规定放在DX(高16位)和AX(低16位)中。(1)无符号数的除法指令DIV(unsigned divide)指令格式为:DIV OPRD指令操作数OPRD可为8位或16位,寄存器或存储器操作数,但不可为立即数。字节除法:(AL)(AX)/(OPRD) (AH)(AX)%(OPRD) (%为取余操作)即AX中的16位无符号数除以OPRD的内容。得到8位的商放AL中,8位的余数放AH中。字除法:(AX)(DX):(AX)/(OPRD) (DX

19、)(DX):(AX)%(OPRD) (%为取余操作)即以DX和AX中的32位无符号数除以OPRD的内容。得到16位的商放在AX中,16位的余数放在DX中。若除法运算的结果大于寄存器可保存的最大值,即超出8位或16位无符号数可表示的范围,则在CPU内部会产生1个类型0中断(以后再讲)。例如:DIV BL ;(AX)除以(BL),商放在AL,余数放在AHDIV WORD PTRSI ;(DX):(AX)除以(SI) + 1):(SI),商放在AX, ;余数放在DXDIV指令应用举例:例:用除法指令及所7FA2H03DDH。程序如下:MOV AX,7FA2H ;(AX)= 7FA2HMOV BX,0

20、3DDH ;(BX)= 03DDHCWD ;(DX):(AX)= 00007FA2HDIV BX ;(AX)= 0021H(商),(DX)= 0025H(余数)(2)有符号数的除法指令IDIV(singned divide)指令格式为:IDIV OPRDIDIV指令与DIV在功能上类似,唯操作对象和结果均为有符号数。例如:IDIV CX ;DX和AX中的32位数除以(CX),商在AX中,余数在 ;DX中IDIV BYTE PTRBX ;(AX)除以DS段以(BX)为偏移地址单元中的内容,商 ;在AX中,余数在DX中IDIV指令执行的结果,商和余数均为带符号数,但规定余数符号与被除数相同。以保证

21、除法的结果为唯一(作说明,例见P.124)。无符号除法和有符号除法对六个标志位均无影响。5.BCD码(十进制数)运算调整指令为实现十进制(BCD码)运算,8088提供了6条用于BCD码运算和调整指令。均采用隐含寻址方式,隐含操作数为AL(或AL和AH)。这些指令与加、减、乘、除指令配合,实现BCD码的算术运算。1)加法的十进制调整指令BCD码存放有压缩和非压缩两种形式,故加法的十进制调整也包括压缩和非压缩两种。(1)压缩BCD码加法的十进制调整指令DAA(desimal adjust for addition)指令格式为DAADAA指令用于对两个压缩BCD码相加之和(结果在AL中)进行调整,以

22、产生正确的压缩BCD码运算结果。调整方法为:若(AL)中低4位9或AF = 1,则(AL)(AL)+ 06H,并使AF = 1。若(AL)中高4位9或CF = 1,则(AL)(AL)+ 60H,并使CF = 1。DAA指令应用举例:例:试编程,计算48 + 27 = ?(要求计算结果为压缩BCD码)程序如下:MOV AL,48HADD AL,27HDAA上第二条指令的计算过程为:01001000+ 0010011101101111DAA指令调整过程为:01101111+ 0000011001110101 (注意,如调整中出现半进位或进位,不再调整)结果:(AL)= 75H,AF = 1,CF

23、= 0。DAA指令影响除OF以外的其余5个状态标志。(2)非压缩BCD码加法的十进制调整指令AAA(ASCII adjust for addition)指令格式为:AAAAAA指令用于对两个非压缩BCD码数相加之和(结果在AL中)进行调整,形成一个正确的扩展BCD码,调整后,结果和的低位在AL中,高位在AH中。调整步骤为:若(AL)中低4位9或AF = 1,则(AL)(AL)+ 06H,(AH)+ 1,并使AF = 1。屏蔽掉(AL)中的高4位,即(AL)(AL)0FH。CFAFAAA指令应用举例:例:试编程,计算9 + 4 = ?(要求计算结果为非压缩BCD码)程序如下:MOV AL,09H

24、 ;BCD码数9送ALMOV BL,04H ;BCD码数4送BLADD AL,BL ;(AL)= 09H + 04H = 0DHAAA ;调整后,(AL)= 03H(即0DH + 06H)0FH = 03H,(AH)= 1, ;CF = 1AAA指令只影响AF和CF标志。注意:DAA和AAA指令都必须紧跟在ADD指令或ADC指令后执行,且ADD或ADC指令的执行结果都必须放在AL中。2)减法的十进制调整指令减法的十进制调整也分为压缩BCD码和非压缩BCD码两种。(1)压缩BCD码减法的十进制调整指令DAS(desimal adjust for subtraction)指令格式为DASDAS指令

25、用于对两个压缩BCD码数相减后的结果(在AL中)进行调整。产生正确的压缩BCD码运算结果。调整方法如下:若(AL)中低4位9或AF = 1,则(AL)(AL)- 06H,并使AF = 1。若(AL)中高4位9或CF = 1,则(AL)(AL)- 60H,并使CF = 1。DAS指令对标志位的影响与DAA指令相同。(2)非压缩BCD码减法的十进制调整指令AAS(ASCII adjust for subtraction)指令格式为AASAAS指令用于对两个非压缩BCD码数相减后的结果(在AL中)进行调整。形成一个正确的非压缩BCD码,其低位在AL中,高位在AH中,调整步骤为:若(AL)中低4位9或

26、AF = 1,则(AL)(AL)- 06H,(AH)(AH)- 1,并使AF = 1。屏蔽掉(AL)中的高4位,即(AL)(AL)0FH。CFAFAAS指令对标志位的影响与AAA指令相同。注意:DAS和AAA指令也必须紧跟在减法指令SUB指令或SBB后执行,且SUB或SBB指令的执行结果也都必须放在AL中。3)乘法的十进制调整指令AAM(ASCII adjust for multiplication)指令格式为:AAMAAM指令是非压缩BCD码的十进制调整指令。对两个非压缩BCD码数相乘的结果(在AL中)进行调整,以得到正确的运算结果。AAM指令的操作为:(AH)(AL)/ 0AH(AL)(A

27、L)% 0AH即将AL寄存器的内容除以OAH,商放在AH中,余数放在AL中。AAM指令实质上是把AL中的二进制数转换为其对应的十进制数。对于十进制值不超过99的二进制数,只要用一条AAM指令即可实现二-十进制转换。AAM指令影响PF、SF和ZF标志。执行AAM指令前需先有一条MUL指令(BCD码数总看作无符号数)将两个非压缩BCD码相乘,结果放在AL中,后用AAM指令进行调整,在AX中得到正确的非压缩BCD码乘积,积的高位在AH种,低位在AL中。AAM指令应用举例:例:试编程,计算79 = ?(要求计算结果为非压缩BCD码数)程序如下:MOV AL,07H ;非压缩BCD码数07H送ALMOV

28、 BL,09H ;非压缩BCD码数09H送BLMUL BL ;两BCD码数相乘(AX)= 07H09H = 003FHAAM ;(AX)= 0603H(即非压缩BCD码数63),SF = 0,ZF = 0,;PF = 14)除法的十进制调整指令AAD(ASCII adjust for division)指令格式为:AADAAD指令其实质是在两个非压缩BCD码相除之前,先行对被除数(在AX中)进行调整,然后再执行DIV指令。AAD指令的操作为:(AL)(AH)* 10 +(AL)(AH) 0即把AX中的非压缩BCD码(十位数放在AH,个位数放在AL)调整为二进制数,并将结果置于AL中(即AAD指

29、令可将不超过99的十进制数转换为二进制数)。AAD指令影响PF、SF和ZF标志。AAD指令应用举例:例:试编程,计算234 = ?(要求计算结果为非压缩BCD码数)程序如下:MOV AX,0203H ;将0203H(非压缩BCD码数23)置于AX中MOV BL,4 ;将04H(非压缩BCD码数4)置于BL中AAD ;进行调整:(AX)= 02H0AH + 03H = 0017HDIV BL ;(AH)= 03H,(AL)= 05H,即结果商为5,余数为3对于各种二-十进制调整指令归纳,见P.126表3-6。3.3.3逻辑运算和移位指令这一类指令包括逻辑运算和移位指令两大部分。1.逻辑运算指令8

30、088/8086提供5条逻辑运算指令。包括AND(逻辑“与”),OR(逻辑“或”),NOT(逻辑“非”),XOR(逻辑“异或”)及TEST(测试)指令。这些指令均可对8位和16位的寄存器和存储器内容进行按位操作。除NOT指令对所有的标志为均无影响外,其余指令都会使CF = OF = 0,AF值不定,而对PF、SF和ZF产生影响。(1)逻辑“与”指令AND(and)指令格式为AND OPRD1,OPRD2 ;(OPRD1)(OPRD1)(OPRD2)AND指令把源操作数和目标操作数按位相“与”,结果送回目标操作数中。其中源操作数可为立即数,寄存器操作数和存储器操作数,而目标操作数只能是后两者。例如:AND AL,0FH ;AL的内容与OFH相

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1