收藏 分销(赏)

微机原理第3章课件.ppt

上传人:pc****0 文档编号:13746698 上传时间:2026-04-08 格式:PPT 页数:92 大小:2.58MB 下载积分:10 金币
下载 相关 举报
微机原理第3章课件.ppt_第1页
第1页 / 共92页
微机原理第3章课件.ppt_第2页
第2页 / 共92页


点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,1,8,086,指令系统,(,2,),2,逻辑运算和移位指令,3,指令类型,逻辑运算,与,或,非,异或,移位操作,非循环移位,循环移位,4,一、,逻辑运算,逻辑运算指令对 操作数的 要求大多与,MOV,指令 相同。,“,非,”,运算指令 要求操作数 不能是立即数;,除“非”运算指令 外,其余指令的执行都会使标志位,OF=CF=0,5,1.,“,与,”,指令:,格式:,AND OPRD1,OPRD2,操作:,两操作数相,“,与,”,,结果送目标地址。,6,“,与,”,指令的应用,实现两操作数按位相与的运算,AND BL,SI,使目标操作数的某些位不变,某些位清零,AND AL,0FH,在操作数不变的 情况下使,CF,和,OF,清零,AND AX,AX,7,“,与,”,指令应用例,从地址为,3F8H,端口中读入一个字节数,如果该数,bit1,位为1,则可从38,FH,端口将,DATA,为首地址的一个字输出,否则就不能进行数据传送。,编写相应的程序段。,8,“,与,”,指令应用例,开 始,取待输出数的偏移地址,读入状态字,测试,bit1,位状态,Bit1=1?,取输入口地址,取输出口地址,输出一个字,N,Y,9,“,与,”,指令应用例,LEA SI,DATA,MOV DX,3F8H,WATT:IN AL,DX,AND AL,02H,JZ WATT,;ZF=1,转移,MOV DX,38FH,MOV AX,SI,OUT DX,AX,10,2.,“,或,”,运算指令,格式:,OR OPRD1,OPRD2,操作:,两操作数相“或”,结果送目标地址,11,“,或,”,指令的应用,实现两操作数 相“或”的 运算,OR AX,DI,使某些位不变,某些位置“1”,OR CL,0FH,在不改变操作数的 情况下使,OF=CF=0,OR AX,AX,12,“,或,”,指令的应用例,OR AL,AL,JPE GOON,OR AL,,,80H,GOON:.,PF=1,转移,13,“,或,”,指令的应用,将一个二进制数9变为字符9,如何实现,?,14,3.,“,非,”,运算指令,格式:,NOT OPRD,操作:,操作数按位取反再送回原地址,注:,指令中的操作数不能是立即数,指令的执行对标志位无影响,例:,NOT BYTE PTRBX,15,4.,“,异或,”,运算指令,格式:,XOR OPRD1,OPRD2,操作:,两操作数相,“,异或,”,,结果送目标地址,例:,XOR,BL,,,80H,XOR AX,AX,16,5.,“,测试,”,指令,格式:,TEST OPRD1,OPRD2,操作:,执行,“,与,”,运算,但运算的结果不送回目标地址。,应用:,常用于测试某些位的状态,17,例:,从地址为,3F8H,的 端口中读入一个字节数,当,该数的,bit1,,,bit3,,,bit5,位同时为1时,,可从38,FH,端口将,DATA,为首地址的一个字输出,否则就不能进行数 据传送。,编写相应的 程序段。,18,源程序代码:,LEA SI,DATA,MOV DX,3F8H,WATT:IN AL,DX,MOV DX,38FH,MOV AX,SI,OUT DX,AX,AND AL,2AH,CMP AL,,,2AH,JNZ WATT,TEST AL,02H,JZ WATT,;ZF=1,转移,TEST AL,,,08H,JZ WATT,TEST AL,,,20H,JZ WATT,AND AL,,,2AH,XOR AL,,,2AH,JNZ WATT,19,二、移位指令,非循环移位指令,循环移位指令,注:,移动一位时由指令直接给出;,移动两位及以上,则移位次数由,CL,指定。,20,1.,非循环移位指令,逻辑左移,算术左移,逻辑右移,算术右移,21,算术左移和逻辑左移,算术左移指 令:,SAL OPRD,1,SAL OPRD,CL,逻辑左移指 令:,SHL OPRD,1,SHL OPRD,CL,有符号数,无符号数,22,逻辑右移,格式:,SHR OPRD,1,SHR OPRD,CL,0,CF,无符号数的右移,23,逻辑右移例:,MOV AL,,,68H,MOV CL,,,2,SHR AL,,,CL,0,CF,0 1 1 0 1 0,AL,0,0,0,0 0 1 1 0 1 0 0,AL,CF,0,0,0 0 0 1 1 0 1 0,AL,CF,0,0,移动,1,次,移动,2,次,24,算术右移,格式:,SAR OPRD,1,SAR OPRD,CL,有符号数的右移,CF,25,非循环移位指令的应用,左移可实现乘法运算,右移可实现除法运算,教材,p121,例,26,2.,循环移位指令,不带进位位的循环移位,带进位位的循环移位,左移,ROL,右移,ROR,左移,RCL,右移,RCR,指令格式、对操作数的要求与非循环移位指令相同,27,不带进位位的循环移位,CF,CF,28,带进位位的循环移位,CF,CF,29,循环移位指令的应用,用于对某些位状态的测试;,高位部分和低位部分的交换;,与非循环移位指令一起组成32位或更长字长数的移位。,P124,例,3-34,P124,例,3-35,30,程序功能,将1000,H,开始存放的,4,个压缩,BCD,码转换为,ASCII,码存放在3000,H,开始的单元中去。,12,H,34,H,56,H,78,H,1000,H,3000,H,31,程序例,MOV SI,1000H,MOV DI,3000H,MOV CX,4,Next:MOV AL,SI,MOV BL,AL,AND AL,0FH,OR AL,30H,MOV DI,AL,INC DI,MOV AL,BL,PUSH CX,MOV CL,4,SHR AL,CL,OR AL,30H,MOV DI,AL,INC DI,INC SI,POP CX,DEC CX,JNZ Next,HLT,32,串操作指令,33,串操作指令说明,针对数据块或字符串的操作;,可实现存储器到存储器的数据传送;,待操作的数据串称为源串,目标地址称为目标串。,34,串操作指令的特点,源串一般存放在数据段,偏移地址由,SI,指定。允许段重设;,目标串必须在附加段,偏移地址由,DI,指定;,指令自动修改地址指针,修改方向由,DF,决定。,DF=0,DF=1,数据块长度值由,CX,指定,可增加自动重复前缀以实现自动修改,CX,内容。,增地址方向;,减地址方向;,35,重复前缀,无条件重复,REP,条件重复,REPE,相等重复,REPZ,为零重复,REPNE,不相等重复,REPNZ,不为零重复,CX,0,ZF=1,CX,0,ZF=0,CX,0,重复,36,串操作指令,串传送,MOVS,串比较,CMPS,串扫描,SCAS,串装入,LODS,串送存,STOS,37,串操作指令流程,(,以传送操作为例,),取源串地址,取目标串地址,设串长度,传送一个字节或字,修改地址指针,修改串长度值,传送完否?,N,Y,设操作方向,38,1.,串传送指令,格式:,MOVS OPRD1,OPRD2,MOVSB,MOVSW,串传送指令常与无条件重复前缀连用,39,串传送指令,对比用,MOV,指令和,MOVS,指令实现将,20,0个字节数据从内存的一个区域送到另一个区域的程序段。,P104,例,3-12,40,串传送指令例,用串传送指令实现,20,0个字节数据的传送:,LEA SI,MEM1,LEA DI,MEM2,MOV CX,200,CLD,REP MOVSB,HLT,41,2.,串比较指令,格式:,CMPS OPRD1,OPRD2,CMPSB,CMPSW,串比较指令常与条件重复前缀连用,指令的执,行不改变操作数,仅影响标志位。,前缀的操作对标志位不影响,42,串比较指令例,测试200个字节数据是否传送正确:,LEA SI,MEM1,LEA DI,MEM2,MOV CX,200,CLD,REPE CMPSB,TEST CX,00FFH,JZ STOP,DEC SI,MOV AL,SI,MOV BX,SI,STOP:HLT,43,3.,串扫描指令,格式:,SCAS OPRD,SCASB,SCASW,执行与,CMPS,指令相似的操作,只是这里的源,操作数是,AX,或,AL,目 标,操作数,44,串扫描指令的应用,常用于在指定存储区域中寻找某个关键字。,教材,p127,例,45,4.,串装入指令,格式:,LODS OPRD,LODSB,LODSW,操作:,对字节:,对 字:,源操作数,DS:SI,DS:SI,AL,AX,46,4.,串装入指令,用于将内存某个区域的数据串依次装入累加 器,以便显示或输出到接口。,LODS,指令一般不加重复前缀。,47,5.,串存储指令,格式:,STOS OPRD,STOSB,STOSW,操作:,对字节:,AL,对 字:,AX,目 标,操作数,ES:DI,ES:DI,48,串存储指令的应用,常用于将内存某个区域置同样的值,此时:,将待送存的数据放入,AL,(字节数)或,AX,(字数据);,确定操作方向(增地址,/,减地址)和区域大小(串长度值);,使用串存储指令,+,无条件重复前缀,实现数据传送。,49,串存储指令例,将内存某单元清零,P129,例,3-40,50,串操作指令应用注意事项,需要定义附加段,目标操作数必须在附加段,需要设置数据的操作方向,确定,DF,的状态,源串和目标串指针分别为,SI,和,DI,串长度值必须由,CX,给出,注意重复前缀的使用方法,传送类指令前加无条件重复前缀,串比较类指令前加条件重复前缀,但前缀不影响,ZF,状态,51,程序控制指令,转移指令,循环控制,过程调用,中断控制,52,程序的执行方向,程序控制类指令的本质是:,控制程序的执行方向,决定程序执行方向的因素:,CS,,,IP,控制程序执行方向的方法:,修改,CS,和,IP,,则程序转向另一个代码段执行;,仅修改,IP,,则程序将改变当前的执行顺序,转向本代码段内其它某处执行。,53,一、转移指令,无条件,转移指令,无条件转移到目标地址,执行新的指令,有条件转移指令,在具备一定条件的情况下转移到目标地址,通过修改指令的,偏移地址,或,段地址及偏移地址,实现程序的转移,54,1.,无条件转移指令,格式:,JMP OPRD,目标地址,与,JMP,在同一代码段,与,JMP,不在同一代码段,原则上可实现在整个内存空间的转移,55,无条件段内转移,转移的,目标地址,在当前代码段内,段地址不 改变。,即:,目标地址,是,16,位偏移地址。,指令中直接给出目标地址,由指令中的寄存器或存储器操作数指出目标地址,段内直接转移,段内间接,转移,56,段内直接转移,转移的目标地址由指令直接给出,格式:,JMP Label,近地址标号,57,段内直接转移示图,JMP,Label,代码段,位移量,下一条要执行指令的偏移地址=当前,IP+,位移量,JMP Label,58,段内间接转移,段内间接转移,转移的目标地址存放在某个,16,位寄存器或存储器,的某两个单元中,例:,JMP BX,若:,BX=1200H,则:转移的目标地址,=1200H,JMP,代码段,1200H,MOV,59,段内间接转移例,JMP WORD PTRBX,设:,BX=1200H,JMP,代码段,数据段,BX=1200,XXH,XXH,IP,指令码,60,无条件段间转移,转移的,目标地址,不在当前代码段内。,目标地址,为,32,位,包括段地址和偏移地址。,指令中直接给出目标地址,由指令中的32位存储器操作数指出目标地址,段间直接转移,段间间接转移,61,段间直接转移,段内直接转移,转移的目标地址由指令直接给出,格式:,JMP FAR Label,远地址标号,62,段间直接转移示图,JMP,Label,代码段1,Label,与,JMP,之间的位移量,代码段2,XXH,XXH,XXH,XXH,IP,CS,63,段间间接转移,段内间接寻址,转移的目标地址由指令中的,32,位操作数给出,例:,JMP DWORD PTRBX,XXH,XXH,XXH,XXH,BX,IP,CS,JMP,指令码,代码段1,代码段2,数据段,64,无条件转移指令例,(1)2000:0100 MOV AX,1200H,(2)2000:0103 JMP NEXT,(3)2000:0120 NEXT:MOV BX,1200H,(4)JMP BX,(5),2000:1200,65,无条件转移指令例,MOV SI,,,1122H,MOV WORD PTRSI,,,0120H,ADD SI,,,2,MOV WORD PTRSI,,,0122H,JMP DWORD PTRSI-2,JMP WORD PTRSI,JMP,1122H,代码段,数据段,01H,22H,20H,01H,IP,CS,IP,66,2.,条件转移指令,在满足一定条件下,程序转移到目标地址继续执行,条件转移指令均为段内短转移,即转移,范围为:,-128-+127,p132,67,条件转移指令的应用,几种条件转移指令的应用,JC/JNC,判断,CF,的状态。常用于比大小,JZ/JNZ,判断,ZF,的状态。常用于循环体的结束判断,JO/JNO,判断,OF,的状态。常用于有符号数溢出的判断,JP/JPE,判断,PF,的状态。用于判断运算结果低,8,位中,1,的个数是否为偶数,JA/JAE/JB/JBE,判断,CF,或,CF+ZF,的状态。常用于无符号数的大小比较,68,转移指令例,统计内存数据段中以,TABLE,为首地址的,100,个,8,位符号数中正数、负数和零元数的个数。,69,转移指令例(流程图),将存放各元素个数的单元清零,取首地址,设串长度,取一个字节数,正数个数加,1,零元素加,1,为负?,为零?,负数个数加,1,N,Y,N,Y,70,二、循环控制指令,循环范围:,以当前,IP,为中心的-128+127范围内循环。,循环次数由,CX,寄存器指定。,循环指令:,LOOP,*LOOPZ,*LOOPNZ,无条件循环指令,条件循环指令,71,无条件循环指令,格式:,LOOP LABEL,循环条件:,CX,0,操作:,DEC CX,JNZ,符号地址,72,三、过程调用和返回,用于调用一个子过程;,子过程由程序员预先设计,并装入内存,子过程执行结束后要返回,原调用处,调用程序,断点,入口地址,子程序,73,调用指令的执行过程,保护断点;,将调用指令的下一条指令的地址(断点)压入堆栈,获取子过程的入口地址;,子过程第1条指令的偏移地址,执行子过程,含相应参数的保存及恢复;,恢复断点,返回原程序。,将断点偏移地址由堆栈弹出,74,过程调用,段内调用,段间调用,段内直接调用,段内间接调用,段间直接调用,段间间接调用,75,1.,段内调用,被调用程序与调用程序在同一代码段,调用前只需保护断点的偏移地址,格式:,CALL NEAR PROC,执行过程:,近过程名,代码段,1,调用程序,被调用程序,代码段,1,将断点的偏移地址压入堆栈,根据过程名找子程序入口,76,段内调用例,(,1,),CALL TIMRE,(,2,),CALL WORD PTRSI,直接调用,间接调用,44H,33H,CALL,代码段,数据段,设:,SI=1200H,CS=6000H,1200H,执行第(,2,)条指令后:,6000H,CS=,3344H,IP=,77,2.,段间调用,子过程与原调用程序不在同一代码段,先将断点的,CS,压栈,再压入,IP。,调用前需保护断点的段基地址和偏移地址,78,段间调用例,格式:,CALL FAR PROC,格式例:,CALL FAR TIMRE,CALL DWORD PTRSI,XXH,XXH,CALL,代码段,数据段,SI,XXH,XXH,CS,IP,79,3.,返回指令,功能:,从堆栈中弹出断点地址,返回原程序,格式:,RET,RET,指令一般位于子程序的最后。,80,四、中断指令,中断,中断源,中断的类型,中断指令,引起,CPU,产生一次中断的指令,81,中断与过程调用:,中断是随机事件或异常事件引起,调用则是事,先已在程序中安排好;,响应中断请求不仅要保护断点地址,还要保护,FLAGS,内容;,调用指令在指令中直接给出子程序入口地址,,中断指令只给出中断向量码,入口地址则在向,量码指向的内存单元中。,82,1.,中断指令,格式:,INT n,说明:,n,4,中断类型码,n=0,255,n,4,XXH,XXH,XXH,XXH,入口的段地址,入口的偏移地址,存放中断服务子程序入口地址的单元的偏移地址,代码段,数据段,该单元在数据段,段地址,=DS,83,中断指令的执行过程,将,FLAGS,压入堆栈;,将,INT,指令的下一条指令的,CS、IP,压栈;,由,n,4,得到存放,中断向量的地址;,将中断向量(中断服务程序入口地址)送,CS,和,IP,寄存器;,转入中断服务程序。,84,中断指令的执行过程,n,4,22H,11H,00H,67H,IP,CS,68122H,MOV,代码段,数据段,堆栈段,SP,FLAGS,H,FLAGS,L,IP,H,CS,L,CS,H,IP,L,SP,SP,SP,85,中断指令例,执行程序段:,CS IP,6200H:0110H INT 21H,6200H:0112H MOV AX,,,BX,12H,01H,00H,62H,SP=1200,FLAGS,L,FLAGS,H,SP=11FA,执行,INT,指令后,堆栈段,86,中断指令例,执行,INT 21H,指令后,IP=,21H4,CS=,(,21H4,),+2,0084H,23H,11H,00H,20H,IP,CS,数据段,代码段,XX,21123H,中断服务子程序,87,2.,溢出中断指令,格式:,INTO,若,OF=1,则启动一个类型为4的中断过程,给出一个出错标志,如果,OF=0,不做任何操作。,INTO,指令通常安排在有符号数加减运算指令之后。,相当于,INT 4,88,3.,中断返回指令,格式:,IRET,中断服务程序的最后一条指令,负责,恢复断点,恢复标志寄存器内容,89,六、处理器控制指令,对标志位的操作,与外部设备的同步,说明见,p139,表,90,本章课外自学内容:,BCD,码调整指令,远地址指针指令,LDS,,,LES,条件循环指令,LOOPZ,,,LOOPNZ,Pentium,新增指令,91,结束语:,掌握:,指令的格式及意义;,指令对操作数的要求及对标志位的影响;,指令的应用。,92,第,3,章作业,作业请从电子教室网站下载,本章书后全部题目均可作为思考题,谢谢大家!,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服