收藏 分销(赏)

微机原理与接口课件完整版(含模拟接口)课件.ppt

上传人:天**** 文档编号:12840348 上传时间:2025-12-14 格式:PPT 页数:681 大小:15.24MB 下载积分:25 金币
下载 相关 举报
微机原理与接口课件完整版(含模拟接口)课件.ppt_第1页
第1页 / 共681页
微机原理与接口课件完整版(含模拟接口)课件.ppt_第2页
第2页 / 共681页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,.,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,1,微机原理与接口技术,大家好,!,.,2,课程目标,掌握:,微型计算机的基本工作原理,汇编语言程序设计方法,微型计算机接口技术,建立微型计算机系统的整体概念,形成微机系统软硬件开发的初步能力,3,教材及实验指导书,教材:,微机原理与接口技术(第,3,版),.,冯博琴,吴宁主编,.,清华大学出版社,实验指导书,微机原理与接口技术实验指导书,(讲义),陈文革,吴宁,夏秦编,.,西安交通大学,微机原理与接口技术题解及实验指导(第,3,版),.,吴宁,陈文革编,.,清华大学出版社,4,第,1,章 微型计算机基础概论,主要内容,:,微机系统的组成,计算机中的编码、数制及其转换,无符号二进制数的运算,算术运算和逻辑运算,运算中的溢出,机器数的表示及运算,基本逻辑门及译码器,5,一、微型计算机系统,微型机的工作原理,微机系统的基本组成,6,1.,计算机的工作原理,冯,诺依曼计算机的工作原理,存储程序工作原理,7,存储程序原理,将计算过程描述为由许多条指令按一定顺序组成的程序,并放入存储器保存,指令按其在存储器中存放的顺序执行;,由控制器控制整个程序和数据的存取以及程序的执行。,8,冯,诺依曼计算机体系结构,运算器,存储器,控制器,输入设备,输出设备,9,冯,诺依曼,机的工作过程,内存中的程序,指令,1,指令,2,指令,n,分析,获取操作数,执行,存放结果,程序计数器,PC,地址,CPU,取出,操作数,10,冯,诺依曼,机的工作过程,取一条指令的工作过程:,将指令所在地址赋给程序计数器,PC,;,PC,内容送到地址寄存器,AR,,,PC,自动加,1,;,把,AR,的内容通过地址总线送至内存储器,经地址译码器译码,选中相应单元。,C,PU,的控制器发出读命令。,在读命令控制下,把所选中单元的内容(即指令操作码)读到数据总线,DB,。,把读出的内容经数据总线送到数据寄存器,DR,。,指令译码,因为取出的是指令的操作码,故数据寄存器,DR,把它送到指令寄存器,IR,,然后再送到指令译码器,ID,冯,诺依曼,机的特点和不足,特点:,程序存储,共享数据,顺序执行,属于顺序处理机,适合于确定的算法和数值数据的处理。,不足:,与存储器间有大量数据交互,对总线要求很高;,执行顺序有程序决定,对大型复杂任务较困难;,以运算器为核心,处理效率较低;,由,PC,控制执行顺序,难以进行真正的并行处理。,11,典型的非,冯,诺依曼机结构,数据流驱动的计算机结构,当指令具有所需数据、且输出端没有数据时就可执行。,12,Dataflow Image Processing System,13,2.,系统组成,主机,硬件系统,外设,微机系统,系统软件,软件系统,应用软件,CPU,存储器,输入/输出接口,总线,14,微处理器,微处理器简称,CPU,,是计算机的核心。,主要包括:,运算器,控制器,寄存器组,15,存储器,定义:,用于存放计算机工作过程中需要操作的数据和程序。,16,有关内存储器的几个概念,内存单元的地址和内容,内存容量,内存的操作,内存的分类,17,内存单元的地址和内容,内存按单元组织,每单元都对应一个地址,以方便对单元的寻址,10110110,38,F04H,内存地址,单元内容,18,内存容量,内存容量:,所含存储单元的个数,以字节为单位,内存容量的大小依,CPU,的寻址能力而定,实地址模式下为,CPU,地址信号线的位数,19,内存操作,读:,将内存单元的内容取入,CPU,,原单元内容不改变;,写:,CPU,将信息放入内存单元,单元中原来的内容被覆盖。,20,内存储器的分类,随机存取存储器(,RAM),只读存储器(,ROM),按工作方,式可分为,21,输入/输出接口,接口是,CPU,与外部设备间的桥梁,CPU,I/O,接口,外设,22,接口的分类,串行接口,并行接口,数字接口,模拟接口,输入接口,输出接口,23,接口的功能,数据缓冲寄存;,信号电平或类型的转换;,实现主机与外设间的运行匹配。,24,总线,基本概念,分类,工作原理,常用系统总线标准及其主要技术指标,(具体内容见后续课程),25,软件系统,软件:,为运行、管理和维护计算机系统或为实现某一功能而编写的各种程序的总和及其相关资料。,系统软件,应用软件,操作系统,编译系统,网络系统,工具软件,软件,26,二、计算机中的数制和编码,数制和编码的表示,各种计数制之间的相互转换,27,1.,常用计数法,十进制(,D,),二进制(,B,),十六进制(,H,),28,例:,234.98,D,或(234.98),D,1101.11B,或(1101.11),B,ABCD.BFH,或(,ABCD.BF,),H,29,2.,各种进制数间的转换,非十进制数到十进制数的转换,十进制到非十进制数的转换,二,进制与十六进制数之间的转换,30,非十进制数到十进制数的转换,按相应的权,值表达式展开,例:,1011.11B=12,3,+02,2,+12,1,+12,0,+12,-1,+12,-2,=8+2+1+0.5+0.25,=11.75,5B.8H=516,1,+1116,0,+816,-1,=80+11+0.5,=91.5,31,十进制到非十进制数的转换,到二进制的转换:,对整数:除2取余;,对小数:乘2取整。,到十六进制的转换:,对整数:除16取余;,对小数:乘16取整。,32,二进制与十六进制间的转换,用4位二进制数表示1位十六进制数,例:,25.5,=,11001.1B,=,19.8H,11001010.0110101B,=CA.6AH,33,3.,计算机中的编码,BCD,码,用二进制编码表示的十进制数,ASCII,码,西文字符编码,34,BCD,码,压缩,BCD,码,用4位二进制码表示一位十进制数,每,4,位之间有一个空格,扩展,BCD,码,用8位二进制码表示一位十进制数,每,4,位之间有一个空格。,35,BCD,码与二进制数之间的转换,先转换为十进 制数,再转换二进 制数;反之同样。,例,:,(,0001 0001.0010 0101),BCD,=11.25,=(1011.01),B,36,ASCII,码,西文 字符的编码,一般用7位二进 制码表示。,D,7,位为校验位,默认情况下为,0,。,要求:,理解校验位的作用,熟悉0-,F,的,ASCII,码,37,ASCII,码的奇偶校验,奇校验,加上校验位后编码中,“,1,”,的个数为奇数。,例:,A,的,ASCII,码是41,H(1000001B),以奇校验传送则为,C1H(11000001B),偶校验,加上校验位后 编码中,“,1,”,的个数为偶数。,上例若以偶校验传送,则为 41,H。,38,三、无符号二进制数的运算,算术运算,逻辑运算,无符号数,有符号数,二进 制数的运算,39,主要内容,无符号二进 制数的算术运算,无符号数的表达范围,运算中的溢出问题,无符号数的逻辑运算,基本逻辑门和译码器,40,1.,无符号数的算术运算,加法运算,1+1=0(有进位),减法运算,0-1=1(有借位),乘法运算,除法运算,41,乘除运算例,000010110100,=00101100,B,000010110100=00000010B,即:商=00000010,B,余数=11,B,42,2.,无符号数的表示范围:,0,X 2,n,-1,若运算结果超出这个范围,则产生溢出。,对无符号数:运算时,当最高位向更高位,有进位(或借位)时则产生,溢出。,43,例:,最高位向前有进位,产生溢出,44,3.,逻辑运算,与、或、非、异或,掌握:,与、或、非门逻辑符号和逻辑关系(真值表);,与非门、或非门的应用。,45,“与”、“或”运算,“,与,”,运算:,任何数和,“,0,”,相,“,与,”,,结果为0。,“,或,”,运算:,任何数和,“,1,”,相,“,或,”,,结果为1。,&,&,1,1,46,“非”、“异或”运算,“,非,”,运算,按位求反,“,异或,”,运算,相同则为0,相异则为1,47,4.,译码器,掌握74,LS138,译码器,各引脚功能,输入端与输出端关系(真值表),48,74LS138,译码器,G,1,G,2A,G,2B,C,B,A,Y,0,Y,7,主要引脚及功能,49,三、机器数(有符号数)的运算,50,计算机中符号数的表示,机器数,计算机中的数据,构成:,符号位+真值,“0”表示正,“1”表示负,51,例,+52=+0110100=,0,0110100,符号位 真值,-52=-0110100=,1,0110100,符号位 真值,52,1.,符号数的表示,机器数的表示方法:,原码,反码,补码,53,原码,最高位为符号位(用“0”表示正,用“1”表示负),其余为真值部分。,优点:,真值和其原码表示之间的对应关系简单,容易理解;,缺点:,计算机中用原码进行加减运算比较困难,0的表示不唯一。,54,数,0,的原码,8位数0的原码:+0=0 0000000,-,0=1 0000000,即:数0的原码不唯一。,55,反码,对一个机器数,X:,若,X0,,则 ,X,反,=,X,原,若,X0,,则,X,补,=,X,反,=,X,原,若,X BX,若,AX,BX,OF,和,SF,状态不同,AX,BX,239,CMP,指令例,LEA BX,MAX,LEA SI,BUF,MOV CL,20,MOV AL,SI,NEXT:INC SI,CMP AL,SI,JNC GOON,;CF=0,转移,XCHG SI,AL,GOON:DEC CL,JNZ NEXT,MOV BX,AL,HLT,240,程序功能,MAX,BUF,XXH,XXH,XXH,在20个数中找最大的数,并将其存放在,MAX,单元中。,241,三、乘法指令,无符号的乘法指令,MUL,*,带符号的乘法指令,IMUL,注意点:,乘法指令采用隐含寻址,隐含的是存放被乘数的累加器,AL,或,AX,及存放结果的,AX,DX.,242,1.,无符号数乘法指令,格式:,MUL OPRD,不能是立即数,操作:,OPRD,为字节数,OPRD,为16位数,ALOPRD,AXOPRD,DXAX,AX,243,无符号数乘法指令例,MUL BYTE PTRBX,BX,XXH,AL,XX,H,AX,244,四、除法指令,无符号除法指令,格式:,DIV OPRD,有符号除法指令,格式:,IDIV OPRD,245,除法指令的操作,若,OPRD,是字节数,执行:,AX/OPRD,结果:,AL=,商,AH=,余数,若,OPRD,是双字节数,执行:,DXAX/OPRD,结果:,AX=,商,DX=,余数,指令要求被除数是除数的双倍字长,246,五、,BCD,码调整指令,将指令执行的二进制运算结果调整为压缩,BCD,码或扩展,BCD,码表示的十进制数。,共6条,均为隐含寻址方式,隐含的操作数是,AL,或,AL、AH;,不能单独使用,要紧跟在相应的算术运算指令 之后;,247,逻辑运算和移位指令,248,指令类型,逻辑运算,与,或,非,异或,移位操作,非循环移位,循环移位,249,一、,逻辑运算,逻辑运算指令对 操作数的 要求大多与,MOV,指令 相同。,“,非,”,运算指令 要求操作数 不能是立即数;,除“非”运算指令 外,其余指令的执行都会使标志位,OF=CF=0,250,1.,“,与,”,指令:,格式:,AND OPRD1,OPRD2,操作:,两操作数相,“,与,”,,结果送目标地址。,251,“,与,”,指令的应用,实现两操作数 按位相与的 运算,AND BL,SI,使目标操作数的 某些位不变,某些位清零,AND AL,0FH,在操作数 不变的 情况下使,CF,和,OF,清零,AND AX,AX,252,“,与,”,指令应用例,从地址为,3F8H,端口中读入一个字节数,如果该数,bit1,位为1,则可从38,FH,端口将,DATA,为首地址的 一个字输出,否则就不能进行数 据传送。,编写相应的 程序段。,253,“,与,”,指令应用例,开 始,取待输出数的偏移地址,读入状态字,测试,bit1,位状态,Bit1=1?,取输入口地址,取输出口地址,输出一个字,N,Y,254,“,与,”,指令应用例,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,255,2.,“,或,”,运算指令,格式:,OR OPRD1,OPRD2,操作:,两操作数相“或”,结果送目标地址,256,“,或,”,指令的应用,实现两操作数 相“或”的 运算,OR AX,DI,使某些位不变,某些位置“1”,OR CL,0FH,在不改变操作数的 情况下使,OF=CF=0,OR AX,AX,257,“,或,”,指令的应用例,OR AL,AL,JPE GOON,OR AL,,,80H,GOON:.,PF=1,转移,258,“,或,”,指令的应用,将一个二进制数9变为字符9,如何实现,?,259,3.,“,非,”,运算指令,格式:,NOT OPRD,操作:,操作数按位取反再送回原地址,注:,指令中的操作数不能是立即数,指令的执行对标志位无影响,例:,NOT BYTE PTRBX,260,4.,“,异或,”,运算指令,格式:,XOR OPRD1,OPRD2,操作:,两操作数相,“,异或,”,,结果送目标地址,例:,XOR,BL,,,80H,XOR AX,AX,261,5.,“,测试,”,指令,格式:,TEST OPRD1,OPRD2,操作:,执行,“,与,”,运算,但运算的结果不送回目标地址。,应用:,常用于测试某些位的状态,262,例:,从地址为,3F8H,的 端口中读入一个字节数,当,该数的,bit1,,,bit3,,,bit5,位同时为1时,,可从38,FH,端口将,DATA,为首地址的一个字输出,否则就不能进行数 据传送。,编写相应的 程序段。,263,源程序代码:,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,264,二、移位指令,非循环移位指令,循环移位指令,注:,移动一位时由指令直接给出;,移动两位及以上,则移位次数由,CL,指定。,265,1.,非循环移位指令,逻辑左移,算术左移,逻辑右移,算术右移,266,算术左移和逻辑左移,算术左移指 令:,SAL OPRD,1,SAL OPRD,CL,逻辑左移指 令:,SHL OPRD,1,SHL OPRD,CL,有符号数,无符号数,267,逻辑右移,格式:,SHR OPRD,1,SHR OPRD,CL,0,CF,无符号数的右移,268,逻辑右移例:,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,次,269,算术右移,格式:,SAR OPRD,1,SAR OPRD,CL,有符号数的右移,CF,270,非循环移位指令的应用,左移可实现乘法运算,右移可实现除法运算,教材,p121,例,271,2.,循环移位指令,不带进位位的循环移位,带进位位的循环移位,左移,ROL,右移,ROR,左移,RCL,右移,RCR,指令格式、对操作数的要求与非循环移位指令相同,272,不带进位位的循环移位,CF,CF,273,带进位位的循环移位,CF,CF,274,循环移位指令的应用,用于对某些位状态的测试;,高位部分和低位部分的交换;,与非循环移位指令一起组成32位或更长字长数的移位。,P124,例,3-34,P124,例,3-35,275,程序功能,将1000,H,开始存放的,4,个压缩,BCD,码转换为,ASCII,码存放在3000,H,开始的单元中去。,12,H,34,H,56,H,78,H,1000,H,3000,H,276,程序例,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,277,串操作指令,278,串操作指令说明,针对数据块或字符串的操作;,可实现存储器到存储器的数据传送;,待操作的数据串称为源串,目标地址称为目标串。,279,串操作指令的特点,源串一般存放在数据段,偏移地址由,SI,指定。允许段重设;,目标串必须在附加段,偏移地址由,DI,指定;,指令自动修改地址指针,修改方向由,DF,决定。,DF=0,DF=1,数据块长度值由,CX,指定,可增加自动重复前缀以实现自动修改,CX,内容。,增地址方向;,减地址方向;,280,重复前缀,无条件重复,REP,条件重复,REPE,相等重复,REPZ,为零重复,REPNE,不相等重复,REPNZ,不为零重复,CX,0,ZF=1,CX,0,ZF=0,CX,0,重复,281,串操作指令流程,(,以传送操作为例,),取源串地址,取目标串地址,设串长度,传送一个字节或字,修改地址指针,修改串长度值,传送完否?,N,Y,设操作方向,282,串操作指令,串传送,MOVS,串比较,CMPS,串扫描,SCAS,串装入,LODS,串送存,STOS,283,1.,串传送指令,格式:,MOVS OPRD1,OPRD2,MOVSB,MOVSW,串传送指令常与无条件重复前缀连用,284,串传送指令,对比用,MOV,指令和,MOVS,指令实现将200个字节数据从内存的一个区域送到另一个区域的程序段。,285,串传送指令例,用串传送指令实现200个字节数据的传送:,LEA SI,MEM1,LEA DI,MEM2,MOV CX,200,CLD,REP MOVSB,HLT,286,2.,串比较指令,格式:,CMPS OPRD1,OPRD2,CMPSB,CMPSW,串比较指令常与条件重复前缀连用,指令的执,行不改变操作数,仅影响标志位。,前缀的操作对标志位不影响,287,串比较指令例,测试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,288,3.,串扫描指令,格式:,SCAS OPRD,SCASB,SCASW,执行与,CMPS,指令相似的操作,只是这里的源,操作数是,AX,或,AL,目 标,操作数,289,串扫描指令的应用,常用于在指定存储区域中寻找某个关键字。,290,串装入指令,格式:,LODS OPRD,LODSB,LODSW,操作:,对字节:,对 字:,源操作数,DS:SI,DS:SI,AL,AX,291,4.,串装入指令,用于将内存某个区域的数据串依次装入累加,器,以便显示或输出到接口。,LODS,指令一般不加重复前缀。,292,5.,串存储指令,格式:,STOS OPRD,STOSB,STOSW,操作:,对字节:,AL,对 字:,AX,目 标,操作数,ES:DI,ES:DI,293,串存储指令的应用,常用于将内存某个区域置同样的值,此时:,将待送存的数据放入,AL,(字节数)或,AX,(字数据);,确定操作方向(增地址,/,减地址)和区域大小(串长度值);,使用串存储指令,+,无条件重复前缀,实现数据传送。,294,串存储指令例,内存某个区域清零,将内存某单元清零,设计思想:,区域首地址送,ES:DI,串长度送,CX,置方向标志,DF,0送累加器,AL,执行串送存指令,295,程序控制指令,转移指令,循环控制,过程调用,中断控制,296,程序的执行方向,程序控制类指令的本质是:,控制程序的执行方向,决定程序执行方向的因素:,CS,,,IP,控制程序执行方向的方法:,修改,CS,和,IP,,则程序转向另一个代码段执行;,仅修改,IP,,则程序将改变当前的执行顺序,转向本代码段内其它某处执行。,297,一、转移指令,无条件,转移指令,无条件转移到目标地址,执行新的指令,有条件转移指令,在具备一定条件的情况下转移到目标地址,通过修改指令的,偏移地址,或,段地址及偏移地址,实现程序的转移,298,1.,无条件转移指令,格式:,JMP OPRD,目标地址,与,JMP,在同一代码段,与,JMP,不在同一代码段,原则上可实现在整个内存空间的转移,299,无条件段内转移,转移的,目标地址,在当前代码段内,段地址不 改变。,即:,目标地址,是,16,位偏移地址。,指令中直接给出目标地址,由指令中的寄存器或存储器操作数指出目标地址,段内直接转移,段内间接转移,300,段内直接转移,转移的目标地址由指令直接给出,格式:,JMP Label,近地址标号,301,段内直接转移示图,JMP,Label,代码段,位移量,下一条要执行指令的偏移地址=当前,IP+,位移量,JMP Label,302,段内间接转移,段内间接转移,转移的目标地址存放在某个,16,位寄存器或存储器,的某两个单元中,例:,JMP BX,若:,BX=1200H,则:转移的目标地址,=1200H,JMP,代码段,1200H,MOV,303,段内间接转移例,JMP WORD PTRBX,设:,BX=1200H,JMP,代码段,数据段,BX=1200,XXH,XXH,IP,指令码,304,无条件段间转移,转移的,目标地址,不在当前代码段内。,目标地址,为,32,位,包括段地址和偏移地址。,指令中直接给出目标地址,由指令中的32位存储器操作数指出目标地址,段间直接转移,段间间接转移,305,段间直接转移,段内直接转移,转移的目标地址由指令直接给出,格式:,JMP FAR Label,远地址标号,306,段间直接转移示图,JMP,Label,代码段1,Label,与,JMP,之间的位移量,代码段2,XXH,XXH,XXH,XXH,IP,CS,307,段间间接转移,段内间接寻址,转移的目标地址由指令中的,32,位操作数给出,例:,JMP DWORD PTRBX,XXH,XXH,XXH,XXH,BX,IP,CS,JMP,指令码,代码段1,代码段2,数据段,308,无条件转移指令例,(1)2000:0100 MOV AX,1200H,(2)2000:0103 JMP NEXT,(3)2000:0120 NEXT:MOV BX,1200H,(4)JMP BX,(5),2000:1200,309,无条件转移指令例,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,310,2.,条件转移指令,在满足一定条件下,程序转移到目标地址继续执行,条件转移指令均为段内短转移,即转移,范围为:,-128-+127,311,条件转移指令的应用,几种条件转移指令的应用,JC/JNC,判断,CF,的状态。常用于比大小,JZ/JNZ,判断,ZF,的状态。常用于循环体的结束判断,JO/JNO,判断,OF,的状态。常用于有符号数溢出的判断,JP/JPE,判断,PF,的状态。用于判断运算结果低,8,位中,1,的个数是否为偶数,JA/JAE/JB/JBE,判断,CF,或,CF+ZF,的状态。常用于无符号数的大小比较,312,转移指令例,统计内存数据段中以,TABLE,为首地址的,100,个,8,位符号数中正数、负数和零元数的个数。,313,转移指令例(流程图),将存放各元素个数的单元清零,取首地址,设串长度,取一个字节数,正数个数加,1,零元素加,1,为负?,为零?,负数个数加,1,N,Y,N,Y,p133,314,二、循环控制指令,循环范围:,以当前,IP,为中心的-128+127范围内循环。,循环次数由,CX,寄存器指定。,循环指令:,LOOP,*LOOPZ,*LOOPNZ,无条件循环指令,条件循环指令,315,无条件循环指令,格式:,LOOP LABEL,循环条件:,CX,0,操作:,DEC CX,JNZ,符号地址,P133,例,3-44,316,三、过程调用和返回,用于调用一个子过程;,子过程由程序员预先设计,并装入内存,子过程执行结束后要返回,原调用处,调用程序,断点,入口地址,子程序,317,调用指令的执行过程,保护断点;,将调用指令的下一条指令的地址(断点)压入堆栈,获取子过程的入口地址;,子过程第1条指令的偏移地址,执行子过程,含相应参数的保存及恢复;,恢复断点,返回原程序。,将断点偏移地址由堆栈弹出,318,过程调用,段内调用,段间调用,段内直接调用,段内间接调用,段间直接调用,段间间接调用,319,1.,段内调用,被调用程序与调用程序在同一代码段,调用前只需保护断点的偏移地址,格式:,CALL NEAR PROC,执行过程:,近过程名,代码段,1,调用程序,被调用程序,代码段,1,将断点的偏移地址压入堆栈,根据过程名找子程序入口,320,段内调用例,(,1,),CALL TIMRE,(,2,),CALL WORD PTRSI,直接调用,间接调用,44H,33H,CALL,代码段,数据段,设:,SI=1200H,CS=6000H,1200H,执行第(,2,)条指令后:,6000H,CS=,3344H,IP=,321,2.,段间调用,子过程与原调用程序不在同一代码段,断点保护时的压栈顺序:,先将断点的,CS,压栈,再压入,IP。,调用前需保护断点的段基地址和偏移地址,322,段间调用例,格式:,CALL FAR PROC,格式例:,CALL FAR TIMRE,CALL DWORD PTRSI,XXH,XXH,CALL,代码段,数据段,SI,XXH,XXH,CS,IP,323,3.,返回指令,功能:,从堆栈中弹出断点地址,返回原程序,格式:,RET,RET,指令一般位于子程序的最后。,324,四、中断指令,中断,中断源,中断的类型,中断指令,引起,CPU,产生一次中断的指令,325,中断与过程调用:,中断是随机事件或异常事件引起,调用则是事,先已在程序中安排好;,响应中断请求不仅要保护断点地址,还要保护,FLAGS,内容;,调用指令在指令中直接给出子程序入口地址,,中断指令只给出中断向量码,入口地址则在向,量码指向的内存单元中。,326,1.,中断指令,格式:,INT n,说明:,n,4,中断类型码,n=0,255,n,4,XXH,XXH,XXH,XXH,入口的段地址,入口的偏移地址,存放中断服务子程序入口地址的单元的偏移地址,代码段,数据段,该单元在数据段,段地址,=DS,327,中断指令的执行过程,将,FLAGS,压入堆栈;,将,INT,指令的下一条指令的,CS、IP,压栈;,由,n,4,得到存放,中断向量的地址;,将中断向量(中断服务程序入口地址)送,CS,和,IP,寄存器;,转入中断服务程序。,328,中断指令的执行过程,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,329,中断指令例,执行程序段:,CS IP,6200H:0110H INT 21H,6200H:0112H MOV AX,,,BX,12H,01H,00H,62H,SP=1200,FLAGS,L,FLAGS,H,SP=11FA,执行,INT,指令后,堆栈段,330,中断指令例,执行,INT 21H,指令后,IP=,21H4,CS=,(,21H4,),+2,0084H,23H,11H,00H,20H,IP,CS,数据段,代码段,XX,21123H,中断服务子程序,331,2.,溢出中断指令,格式:,INTO,若,OF=1,则启动一个类型为4的中断过程,给出一个出错标志,如果,OF=0,不做任何操作。,INTO,指令通常安排在有符号数加减运算指令之后。,相当于,INT 4,332,3.,中断返回指令,格式:,IRET,中断服务程序的最后一条指令,负责,恢复断点,恢复标志寄存器内容,333,六、处理器控制指令,对标志位的操作,与外部设备的同步,说明见,p139,表,334,结束语:,掌握:,指令的格式及意义;,指令对操作数的要求及对标志位的影响;,指令的应用。,谢谢大家!,335,第,4章,汇编语言程序设计,336,主要内容,汇编语言源程序的结构,汇编语言语句格式,伪指令,功能调用,汇编语言程序设计,337,4.1,汇编语言源程序,了解:,汇编语言源程序的结构,汇编语言语句类型及格式,338,一、汇编语言源程序结构,339,1.,汇编语言源程序与汇编程序,汇编语言源程序,汇编程序,用助记符编写,汇编程序,汇编语言源程序,机器语言目标程序,源程序的编译程序,340,2.,汇编语言程序设计与执行过程,输入汇编语言源程序(,EDIT,),汇编(,MASM,),链接(,LINK,),调试(,TD,),源文件.,ASM,目标文件.,OBJ,可执行文件.,EXE,最终程序,341,二、汇编语言语句类型及格式,342,1.,汇编语言语句类型,指令性语句,指示性语句,CPU,执行的语句,能够生成目标代码,CPU,不执行,而由汇编程序执行的语句,不生成目标代码,343,2.,汇编语言语句格式,指令性语句:,标号:前缀,助记符,操作数,操作数 ;注释,指令的符号地址,标号后要有冒号,操作码,注释前加分号,344,指示性语句格式,名字,伪指令助记符,操作数,操作数,,;注释,变量的符号地址,其后不加冒号,指示性语句中至少有一个操作数,345,3.,标号、名字,标号后有冒号,在指令性语句前;名字后不加冒号,在指示性语句前。,英文字母、数字及专用字符组成,最大长度不能超过31个,且不能由数字打头,不能用保留字(如寄存器名,指令助记符,伪指令),。,346,4.,操作数,寄存器,存储器单元,常量,变量或标号,表达式,347,常 量,数字常量,字符串常量,例:,A,MOV AL,,,A,例:,ABCD,汇编时被译成对应的,ASCII,码,41,H,,42,H,43H,44H,用单引号引起的字符或字符串,348,变 量,代表内存中的数据区,程序中视为存储器操作数,变量的属性:,变量所在段的段地址,变量单元地址与段首地址之,间的位移量。,字节型、字型和双字型,段 值,偏移量,类 型,349,表达式,算术运算,逻辑运算,*,关系运算,取值运算和属性运算,其它运算,350,算术运算和逻辑运算符,算术运算符,+,-,*,/,,MOD,逻辑运算符,AND,OR,NOT,XOR,例:,MOV AL,8 AND 4,MOV AL,8+4-1,351,取值运算符,取得其后变量或标号的偏移地址,取得其后变量或标号的段地址,TYPE,取,变量的类型,LENGTH,取所定义存储区的长度,SIZE,取所定义存储区的字节数,用于分析存储器操作数的属性,获取变量的属性值,OFFSET,SEG,352,取值运算符例,MOV AX,SEG DATA,MOV DS,AX,MOV BX,OFFSET DATA,LEA BX,DATA,等价于,353,取值运算符例,若,BUFFER,存储区用如下伪指令定义:,BUFFER DW 200 DUP(0),则:,TYPE BUFFER,等于2,LENGTH BUFFER,等于200,SIZE BUFFER,等于400,354,属性运算符,用于指定其后存储器操作数的类型,运算符:,PTR,例:,MOV BYTR PTRBX,12H,355,其它运算符,方括号:,段重设符,段寄存器名:,方括号中内容为操作数的偏移地址,用于修改默认的段基地址,356,4.2,伪指令,掌握:,伪指令的格式及实现的操作,伪指令的应用,357,伪指令,由汇编程序执行的,“,指令系统,”,作用:,定义变量;,分配存储区,定义逻辑段;,指示程序开始和结束;,定义过程等。,358,常用伪指令,数据定义伪指令,符号定义伪指令,段定义伪指令,结束伪指令,过程定义伪指令,宏命令伪指令,359,一、数据定义伪指令,用于定义数据区中变量的类型及大小,格式:,变量名,伪指令助记符,操作数,,;,注释,符号地址,定义变量类型,定义变量值及区域大小,360,1.,数据定义伪指令助记符,DB,定义的变量为字节型,DW,定义的变量为字类型(双字节),DD,定义的变量为双字型(4字节),DQ,定义的变量为4字型(8字节,),DT,定义的变量为10字节型,361,数据定义伪指令例,DATA1 DB 11H,22H,33H,44H,DATA2 DW 11H,22H,3344H,DATA3 DD 11H*2,22H,33445566H,以上变量在内存中的存放形式,362,数据定义伪指令例,_,变量在内存中的分布,DATA1,11,22,33,44,DATA2,22,44,11,00,00,33,DATA3,22,0,0,22,0,0,0,0,XX,66,55,44,33,363,数据定义伪指令的几点说明,伪指令的性质决定所定义变量的类型;,定义字符串必须用,DB,伪指令,例:,DATA1 DB,ABCD,,66H,A,B,C,D,41H,42H,43H,44H,66H,364,2.,重复操作符,作用:,为一个数据区的各单元设置相同的初值,目的:,常用于声明一个数据区,格式:,变量名 伪指令助记符,n DUP(,初值,,),例:,BW 20 DUP(0),M1 DB 10 DUP,(,0,),365,3.,“,?,”,的作用,表示随机值,用于预留存储空间,MEM1 DB 34H,,A,,?,DW 20 DUP(?),预留40个字节单元,每单元为随机值,随机数,占,1,个字节单元,366,数据定义伪指令例,M1 DB,How are you?,M2 DW 3 DUP(11H),,,3344H,DB 4 DUP,(?),M3 DB 3 DUP(22H,11H,?),变量在内存中的分区,367,数据定义伪指令例,M1,H,o,w,a,M2,11H,11H,00H,44H,33H,r,e,y,o,u,?,11H,00H,00H,随机数,M3,11H,22H,11H,22H,11H,22H,XX,XX,XX,XX,XX,XX,XX,368,二、符号定义伪指令,格式:,符号名,EQU,表达式,操作:,用符号名取代后边的表达式,不可重新定义,例:,CONSTANTEQU100,VAR EQU 30H+99H,EQU,说明的表达式不占用内存空间,369,三、段定义伪指令,说明逻辑段的起始和结束;,说明不同程序模块中同类逻辑段之间的联系形,态,370,段定义伪指令格式,段名,SEGMENT,定位类型 组合类型,类别,段名,ENDS,说明逻辑段的起点,说明不同模块中同名段的组和连接方式,371,定位类型,PARA:,段的起点从节边界开始,(16个字节为1节),BYTE:,段
展开阅读全文

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


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

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

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服