微机原理与接口技术(清华大学课件-全套).ppt

上传人(卖家):三亚风情 文档编号:2748432 上传时间:2022-05-23 格式:PPT 页数:681 大小:12.16MB
下载 相关 举报
微机原理与接口技术(清华大学课件-全套).ppt_第1页
第1页 / 共681页
微机原理与接口技术(清华大学课件-全套).ppt_第2页
第2页 / 共681页
微机原理与接口技术(清华大学课件-全套).ppt_第3页
第3页 / 共681页
微机原理与接口技术(清华大学课件-全套).ppt_第4页
第4页 / 共681页
微机原理与接口技术(清华大学课件-全套).ppt_第5页
第5页 / 共681页
点击查看更多>>
资源描述

1、1微机原理与接口技术微机原理与接口技术大家好大家好!2课程目标v掌握:微型计算机的基本工作原理汇编语言程序设计方法微型计算机接口技术建立微型计算机系统的整体概念,形成微机系统软硬件开发的初步能力3教材及实验指导书v教材:微机原理与接口技术(第3版). 冯博琴,吴宁主编. 清华大学出版社v实验指导书微机原理与接口技术实验指导书(讲义) 陈文革,吴宁,夏秦编. 西安交通大学微机原理与接口技术题解及实验指导(第3版). 吴宁,陈文革编. 清华大学出版社4第1章 微型计算机基础概论n主要内容主要内容:n微机系统的组成微机系统的组成n计算机中的编码、数制及其转换计算机中的编码、数制及其转换n无符号二进制

2、数的运算无符号二进制数的运算n算术运算和逻辑运算算术运算和逻辑运算n运算中的溢出运算中的溢出n机器数的表示及运算机器数的表示及运算n基本逻辑门及译码器基本逻辑门及译码器5一、微型计算机系统n微型机的工作原理微型机的工作原理n微机系统的基本组成微机系统的基本组成61. 计算机的工作原理冯 诺依曼计算机的工作原理 存储程序工作原理7存储程序原理v将计算过程描述为由许多条指令按一定顺序组成的程序,并放入存储器保存v指令按其在存储器中存放的顺序执行;v由控制器控制整个程序和数据的存取以及程序的执行。8冯 诺依曼计算机体系结构运算器存储器存储器控制器控制器输入设备输入设备输出设备输出设备9冯 诺依曼机的

3、工作过程内存中的程序内存中的程序指令指令1指令指令2指令指令n分析分析获取操作数获取操作数执行执行存放结果存放结果程序计程序计数器数器PC地址地址CPU取出取出操作数操作数10冯 诺依曼机的工作过程v取一条指令的工作过程:将指令所在地址赋给程序计数器PC;PC内容送到地址寄存器AR,PC自动加1;把AR的内容通过地址总线送至内存储器,经地址译码器译码,选中相应单元。CPU的控制器发出读命令。在读命令控制下,把所选中单元的内容(即指令操作码)读到数据总线DB。把读出的内容经数据总线送到数据寄存器DR。指令译码v因为取出的是指令的操作码,故数据寄存器DR把它送到指令寄存器IR,然后再送到指令译码器

4、ID 冯 诺依曼机的特点和不足v特点:程序存储,共享数据,顺序执行属于顺序处理机,适合于确定的算法和数值数据的处理。v不足:与存储器间有大量数据交互,对总线要求很高;执行顺序有程序决定,对大型复杂任务较困难;以运算器为核心,处理效率较低;由PC控制执行顺序,难以进行真正的并行处理。11典型的非冯 诺依曼机结构v数据流驱动的计算机结构当指令具有所需数据、且输出端没有数据时就可执行。12数据流处理机存储器主处理机数据通道控制通道高速数据总线磁盘存储器Dataflow Image Processing System132. 系统组成 主机 硬件系统 外设 微机系统 系统软件 软件系统 应用软件CPU

5、存储器存储器输入输入/输出接口输出接口总线总线14微处理器v微处理器简称CPU,是计算机的核心。v主要包括: 运算器 控制器 寄存器组15存储器v定义:用于存放计算机工作过程中需要操作的数据和程序。16有关内存储器的几个概念v内存单元的地址和内容v内存容量v内存的操作v内存的分类17内存单元的地址和内容v内存按单元组织v每单元都对应一个地址,以方便对单元的寻址1011011038F04H内存地址内存地址单元内容单元内容18内存容量v内存容量:所含存储单元的个数,以字节为单位v内存容量的大小依CPU的寻址能力而定实地址模式下为CPU地址信号线的位数19内存操作v读:将内存单元的内容取入CPU,原

6、单元内容不改变;v写:CPU将信息放入内存单元,单元中原来的内容被覆盖。20内存储器的分类随机存取存储器(RAM)只读存储器(ROM)按工作方按工作方式可分为式可分为21输入/输出接口v接口是CPU与外部设备间的桥梁CPUI/OI/O接口接口外外设设22接口的分类串行接口并行接口数字接口数字接口模拟接口模拟接口输入接口输入接口输出接口输出接口23接口的功能v数据缓冲寄存;v信号电平或类型的转换;v实现主机与外设间的运行匹配。24总线v基本概念v分类v工作原理v常用系统总线标准及其主要技术指标 (具体内容见后续课程)25软件系统v软件:为运行、管理和维护计算机系统或为实现某一功能而编写的各种程序

7、的总和及其相关资料。系统软件系统软件应用软件应用软件操作系统操作系统编译系统编译系统网络系统网络系统工具软件工具软件软件软件26二、计算机中的数制和编码n数制和编码的表示数制和编码的表示n各种计数制之间的相互转换各种计数制之间的相互转换271. 常用计数法 十进制(D) 二进制(B) 十六进制(H)28例:v234.98D或(234.98)Dv1101.11B或(1101.11)BvABCD . BFH或(ABCD . BF) H292. 各种进制数间的转换非十进制数到十进制数的转换十进制到非十进制数的转换二进制与十六进制数之间的转换 30非十进制数到十进制数的转换v按相应的权值表达式展开v例

8、:1011.11B=123+022+121+120+12-1+ 12-2 =8+2+1+0.5+0.25 =11.755B.8H=5161+11160+816-1 =80+11+0.5 =91.531十进制到非十进制数的转换v到二进制的转换: 对整数:除2取余; 对小数:乘2取整。v到十六进制的转换: 对整数:除16取余; 对小数:乘16取整。32二进制与十六进制间的转换v用4位二进制数表示1位十六进制数v例:25.5 = 11001.1B = 19.8H 11001010.0110101B =CA.6AH333. 计算机中的编码vBCD码用二进制编码表示的十进制数vASCII码西文字符编码3

9、4BCD码码v压缩BCD码用4位二进制码表示一位十进制数每4位之间有一个空格v扩展BCD码用8位二进制码表示一位十进制数,每4位之间有一个空格。35BCD码与二进制数之间的转换v先转换为十进 制数,再转换二进 制数;反之同样。v例:(0001 0001 .0010 0101)BCD =11 .25 =(1011 .01) B36ASCII码v西文 字符的编码,一般用7位二进 制码表示。vD7位为校验位,默认情况下为0。v要求:理解校验位的作用熟悉0-F的ASCII码37ASCII码的奇偶校验v奇校验加上校验位后编码中“1”的个数为奇数。例:A的ASCII码是41H(1000001B)v以奇校验

10、传送则为 C1H(11000001B)v偶校验加上校验位后 编码中“1”的个数为偶数。v上例若以偶校验传送,则为 41H。38三、无符号二进制数的运算算术运算算术运算逻辑运算逻辑运算无符号数无符号数有符号数有符号数二进二进 制数的运算制数的运算39主要内容v无符号二进 制数的算术运算v无符号数的表达范围v运算中的溢出问题v无符号数的逻辑运算v基本逻辑门和译码器401. 无符号数的算术运算v加法运算1+1=0(有进位)v减法运算0-1=1(有借位)v乘法运算v除法运算41乘除运算例v000010110100 =00101100B v000010110100=00000010B 即:商=00000

11、010B 余数=11B422. 无符号数的表示范围: 0 X 2n-1若运算结果超出这个范围,则产生溢出。对无符号数:运算时,当最高位向更高位 有进位(或借位)时则产生 溢出。43例: 最高位向前有进位,产生溢出00000000 100000001 11111111 443. 逻辑运算v与、或、非、异或v掌握:与、或、非门逻辑符号和逻辑关系(真值表);与非门、或非门的应用。45“与”、“或”运算v“与”运算:任何数和“0”相“与”,结果为0。v“或”运算:任何数和“1”相“或”,结果为1。&1146“非”、“异或”运算v“非”运算按位求反v“异或”运算相同则为0,相异则为1474. 译码器v掌

12、握74LS138译码器各引脚功能输入端与输出端关系(真值表)4874LS138译码器G1G2AG2BCBAY0Y7 v主要引脚及功能49三、机器数(有符号数)的运算50计算机中符号数的表示v机器数计算机中的数据构成:v符号位 + 真值 “0” 表示正表示正“1” 表示负表示负51例 +52 = +0110100 = 0 0110100 符号位 真值-52 = -0110100 = 1 0110100 符号位符号位 真值真值521. 符号数的表示v机器数的表示方法:原码反码补码53原码v最高位为符号位(用“0”表示正,用“1”表示负),其余为真值部分。v优点: 真值和其原码表示之间的对应关系简单

13、,容易理解;v缺点:计算机中用原码进行加减运算比较困难0的表示不唯一。54数0的原码v8位数0的原码:+0=0 0000000 -0=1 0000000 即:数0的原码不唯一。55反码对一个机器数X:v若X0 ,则 X反=X原v若X0, 则X补= X反= X原v若X BX 若 AX BX OF和SF状态不同 AX BX239CMP指令例 LEA BX,MAX LEA SI,BUF MOV CL,20 MOV AL,SINEXT:INC SI CMP AL,SI JNC GOON ;CF=0转移 XCHG SI,ALGOON:DEC CL JNZ NEXT MOV BX,AL HLT240程序功

14、能 MAXBUFXXHXXHXXH在在20个数中找最大个数中找最大的数,并将其存放的数,并将其存放在在MAX单元中。单元中。241三、乘法指令无符号的乘法指令MUL*带符号的乘法指令IMULn注意点:注意点:n乘法指令采用隐含寻址,隐含的是存放被乘数的累乘法指令采用隐含寻址,隐含的是存放被乘数的累加器加器ALAL或或AXAX及存放结果的及存放结果的AXAX,DX.DX.2421. 无符号数乘法指令v格式: MUL OPRD 不能是立即数v操作: OPRD为字节数 OPRD为16位数 ALOPRDAXOPRDDXAXAX243无符号数乘法指令例vMUL BYTE PTRBX BXXXHAL XX

15、HAX244四、除法指令无符号除法指令v格式:DIV OPRD有符号除法指令v格式:IDIV OPRD245除法指令的操作若OPRD是字节数v执行:AX/OPRD v结果:AL=商 AH=余数若OPRD是双字节数v执行: DXAX/OPRDv结果:AX=商 DX=余数指指令令要要求求被被除除数数是是除除数数的的双双倍倍字字长长246五、BCD码调整指令v将指令执行的二进制运算结果调整为压缩BCD码或扩展BCD码表示的十进制数。v共6条,均为隐含寻址方式,隐含的操作数是 AL或AL、AH;v不能单独使用,要紧跟在相应的算术运算指令 之后;247逻辑运算和移位指令248指令类型v逻辑运算与,或,非

16、,异或v移位操作非循环移位,循环移位249 一、逻辑运算v逻辑运算指令对 操作数的 要求大多与MOV指令 相同。v“非”运算指令 要求操作数 不能是立即数;v除“非”运算指令 外,其余指令的执行都会使标志位OF=CF=02501.“与”指令:v格式: AND OPRD1,OPRD2v操作: 两操作数相“与”,结果送目标地址。251“与”指令的应用v实现两操作数 按位相与的 运算AND BL,SIv使目标操作数的 某些位不变,某些位清零AND AL,0FHv在操作数 不变的 情况下使CF和OF清零AND AX,AX252“与”指令应用例v从地址为3F8H 端口中读入一个字节数,如果该数 bit1

17、位为1,则可从38FH端口将DATA为首地址的 一个字输出,否则就不能进行数 据传送。 编写相应的 程序段。253“与”指令应用例开开 始始取待输出数的取待输出数的偏移地址偏移地址读入状态字读入状态字测试测试bit1位状态位状态Bit1=1?取输入口地址取输入口地址取输出口地址取输出口地址 输出一个字输出一个字NY254“与”指令应用例 LEA SI,DATA MOV DX,3F8HWATT:IN AL,DX AND AL,02H JZ WATT ;ZF=1转移 MOV DX,38FH MOV AX,SI OUT DX,AX2552.“或”运算指令v格式: OR OPRD1,OPRD2v操作:

18、 两操作数相“或”,结果送目标地址256“或”指令的应用v实现两操作数 相 “或”的 运算OR AX,DIv使某些位不变,某些位置“1”OR CL,0FHv在不改变操作数的 情况下使OF=CF=0OR AX,AX257“或”指令的应用例 OR AL,AL JPE GOON OR AL,80H GOON:.PF=1转移转移258“或”指令的应用将一个二进将一个二进制数制数9变为字变为字符符9如何实现如何实现?2593.“非”运算指令v格式:NOT OPRDv操作:操作数按位取反再送回原地址v注:指令中的操作数不能是立即数指令的执行对标志位无影响v例:NOT BYTE PTRBX2604.“异或”

19、运算指令v格式: XOR OPRD1,OPRD2v操作:两操作数相“异或”,结果送目标地址v例: XOR BL,80H XOR AX,AX2615.“测试”指令v格式: TEST OPRD1,OPRD2v操作: 执行“与”运算,但运算的结果不送回目标地址。v应用:常用于测试某些位的状态262例:v从地址为3F8H的 端口中读入一个字节数,当该数的 bit1, bit3, bit5位同时为1时,可从38FH端口将DATA为首地址的一个字输出,否则就不能进行数 据传送。 编写相应的 程序段。263源程序代码: LEA SI,DATA MOV DX,3F8HWATT:IN AL,DX MOV DX,

20、38FH MOV AX,SI OUT DX,AXAND AL,2AHCMP AL,2AHJNZ WATTTEST AL,02HJZ WATT ;ZF=1转移转移TEST AL,08HJZ WATTTEST AL,20HJZ WATTAND AL,2AHXOR AL,2AHJNZ WATT264二、移位指令 非循环移位指令 循环移位指令注:注:n 移动一位时由指令直接给出;移动一位时由指令直接给出;n 移动两位及以上,则移位次数由移动两位及以上,则移位次数由CL指定。指定。2651. 非循环移位指令v逻辑左移v算术左移v逻辑右移v算术右移266算术左移和逻辑左移v算术左移指 令: SAL OPR

21、D,1 SAL OPRD,CLv逻辑左移指 令: SHL OPRD,1 SHL OPRD,CL有符号数有符号数无符号数无符号数267逻辑右移v格式: SHR OPRD,1 SHR OPRD,CL0CF无符号数无符号数的右移的右移268逻辑右移例:vMOV AL,68HvMOV CL,2vSHR AL,CL0CF0 1 1 0 1 0 AL0 0 0 0 0 1 1 0 1 0 0ALCF0 00 0 0 1 1 0 1 0 ALCF0 0移动移动1次次移动移动2次次269算术右移v格式: SAR OPRD,1 SAR OPRD,CL有符号数有符号数的右移的右移CF270非循环移位指令的应用n左

22、移可实现乘法运算左移可实现乘法运算n右移可实现除法运算右移可实现除法运算 2712. 循环移位指令v不带进位位的循环移位v带进位位的循环移位左移左移 ROL右移右移 ROR左移左移 RCL右移右移 RCR指令格式、对操作数的要求与非循环移位指令相同指令格式、对操作数的要求与非循环移位指令相同272不带进位位的循环移位CFCF273带进位位的循环移位CFCF274循环移位指令的应用v用于对某些位状态的测试;v高位部分和低位部分的交换;v与非循环移位指令一起组成32位或更长字长数的移位。P124例例3-34P124例例3-35275程序功能v将1000H开始存放的4个压缩BCD码转换为ASCII码

23、存放在3000H开始的单元中去。12H34H56H78H1000H3000H276程序例 MOV SI,1000H MOV DI,3000H MOV CX,4Next:MOV AL,SI MOV BL,AL AND AL,0FH OR AL,30H MOV DI,AL INC DI MOV AL,BLPUSH CXMOV CL,4277串操作指令278串操作指令说明v针对数据块或字符串的操作;v可实现存储器到存储器的数据传送;v待操作的数据串称为源串,目标地址称为目标串。279串操作指令的特点v源串一般存放在数据段,偏移地址由SI指定。允许段重设;v目标串必须在附加段,偏移地址由DI指定;v指

24、令自动修改地址指针,修改方向由DF决定。 DF=0 DF=1v数据块长度值由CX指定v可增加自动重复前缀以实现自动修改CX内容。增地址方向;增地址方向;减地址方向;减地址方向;280重复前缀v无条件重复REPv条件重复REPE 相等重复REPZ 为零重复REPNE 不相等重复REPNZ 不为零重复CX0 ZF=1CX0 ZF=0CX0 重复重复281串操作指令流程(以传送操作为例)取源串地址取源串地址取目标串地址取目标串地址设串长度设串长度传送一个字节或字传送一个字节或字修改地址指针修改地址指针修改串长度值修改串长度值传送完否?传送完否?NY设操作方向设操作方向282串操作指令v串传送 MOV

25、Sv串比较 CMPSv串扫描 SCASv串装入 LODSv串送存 STOS2831. 串传送指令v格式: MOVS OPRD1,OPRD2 MOVSB MOVSWv串传送指令常与无条件重复前缀连用284串传送指令v对比用MOV指令和MOVS指令实现将200个字节数据从内存的一个区域送到另一个区域的程序段。285串传送指令例v用串传送指令实现200个字节数据的传送: LEA SI,MEM1 LEA DI,MEM2 MOV CX,200 CLD REP MOVSB HLT2862. 串比较指令v格式: CMPS OPRD1,OPRD2 CMPSB CMPSWv串比较指令常与条件重复前缀连用,指令的

26、执 行不改变操作数,仅影响标志位。v前缀的操作对标志位不影响287串比较指令例测试200个字节数据是否传送正确:LEA SI,MEM1LEA DI,MEM2MOV CX,200CLD REPE CMPSB TEST CX,00FFH JZ STOP DEC SI MOV AL,SI MOV BX,SISTOP:HLT 2883. 串扫描指令v格式: SCAS OPRD SCASB SCASWv执行与CMPS指令相似的操作,只是这里的源 操作数是AX或AL目目 标标操作数操作数289串扫描指令的应用v常用于在指定存储区域中寻找某个关键字。290串装入指令v格式: LODS OPRD LODSB

27、LODSWv操作:对字节:对 字:源操作数源操作数DS:SIDS:SIDS:SIDS:SIALALAXAX2914. 串装入指令v用于将内存某个区域的数据串依次装入累加 器,以便显示或输出到接口。vLODS指令一般不加重复前缀。2925. 串存储指令v格式: STOS OPRD STOSB STOSWv操作:对字节: AL对 字: AX目目 标标操作数操作数ES:DIES:DI293串存储指令的应用v常用于将内存某个区域置同样的值v此时:将待送存的数据放入AL(字节数)或AX(字数据);确定操作方向(增地址/减地址)和区域大小(串长度值);使用串存储指令+无条件重复前缀,实现数据传送。294串

28、存储指令例 内存某个区域清零v将内存某单元清零v设计思想: 区域首地址送区域首地址送ES:DI串长度送串长度送CX置方向标志置方向标志DF0送累加器送累加器AL执行串送存指令执行串送存指令295程序控制指令v转移指令v循环控制v过程调用v中断控制296程序的执行方向v程序控制类指令的本质是:控制程序的执行方向v决定程序执行方向的因素:CS,IPv控制程序执行方向的方法:修改CS 和IP ,则程序转向另一个代码段执行;仅修改IP,则程序将改变当前的执行顺序,转向本代码段内其它某处执行。297一、转移指令无条件转移指令 无条件转移到目标地址,执行新的指令有条件转移指令 在具备一定条件的情况下转移到

29、目标地址通过修改指令的通过修改指令的偏移地址偏移地址或或段地址及偏移地址段地址及偏移地址实现程序的转移实现程序的转移2981. 无条件转移指令v格式: JMP OPRD目标地址目标地址与与JMP在同在同一代码段一代码段与与JMP不在同不在同一代码段一代码段原则上可实现在整个内存空间的转移原则上可实现在整个内存空间的转移299无条件段内转移v转移的目标地址在当前代码段内,段地址不 改变。v即:目标地址是16位偏移地址。指令中直接给出指令中直接给出目标地址目标地址由指令中的寄存器或由指令中的寄存器或存储器操作数指出目存储器操作数指出目标地址标地址段内直接转移段内直接转移段内间接转移段内间接转移30

30、0段内直接转移v转移的目标地址由指令直接给出v格式:JMP Label近地址标号近地址标号301段内直接转移示图JMPLabel代代码码段段位移量位移量下一条要执行指令的偏移地址下一条要执行指令的偏移地址=当前当前IP+位移量位移量JMP Label302段内间接转移v段内间接转移转移的目标地址存放在某个16位寄存器或存储器 的某两个单元中v例:JMP BX若:BX=1200H则:转移的目标地址=1200HJMP代代码码段段1200HMOV303段内间接转移例vJMP WORD PTRBX 设:BX=1200HJMP代代码码段段数数据据段段BX=1200XXHXXHIP指令码指令码304无条件

31、段间转移v转移的目标地址不在当前代码段内。v目标地址为32位,包括段地址和偏移地址。指令中直接给出指令中直接给出目标地址目标地址由指令中的由指令中的32位存储器位存储器操作数指出目标地址操作数指出目标地址段间直接转移段间直接转移段间间接转移段间间接转移305段间直接转移v段内直接转移转移的目标地址由指令直接给出v格式:JMP FAR Label远地址标号远地址标号306段间直接转移示图JMPLabel代代码码段段1Label与与JMP之间的位移量之间的位移量代代码码段段2XXHXXHXXHXXHIPCS307段间间接转移v段内间接寻址转移的目标地址由指令中的32位操作数给出v 例:JMP DW

32、ORD PTRBXXXHXXHXXHXXHBXIPCSJMP指令码指令码代代码码段段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无条件转移指令例vMOV SI,1122HvMOV WORD PTRSI,0120HvADD SI,2vMOV WORD PTRSI,0122HJMP DWORD PTRSI-2JMP WORD PTRSIJMP1122H代代码码段段数数据据段段

33、01H22H20H01HIPCSIP3102. 条件转移指令v在满足一定条件下,程序转移到目标地址继续执行v条件转移指令均为段内短转移,即转移 范围为: -128-+127311条件转移指令的应用v几种条件转移指令的应用JC/JNCv判断CF的状态。常用于比大小JZ/JNZv判断ZF的状态。常用于循环体的结束判断JO/JNOv判断OF的状态。常用于有符号数溢出的判断JP/JPEv判断PF的状态。用于判断运算结果低8位中1的个数是否为偶数JA/JAE/JB/JBEv判断CF或CF+ZF的状态。常用于无符号数的大小比较312转移指令例v统计内存数据段中以TABLE为首地址的100个8位符号数中正数

34、、负数和零元数的个数。313转移指令例(流程图)将存放各元素个将存放各元素个数的单元清零数的单元清零取首地址取首地址设串长度设串长度取一个字节数取一个字节数正数个数加正数个数加1零元素加零元素加1为负?为负?为零?为零?负数个数加负数个数加1NYNYp133314二、循环控制指令v循环范围:以当前IP为中心的-128+127范围内循环。v循环次数由CX寄存器指定。v循环指令:LOOP *LOOPZ *LOOPNZ无条件循环指令无条件循环指令条件循环指令条件循环指令315无条件循环指令v格式: LOOP LABELv循环条件: CX 0v操作: DEC CX JNZ 符号地址P133例例3-44

35、316三、过程调用和返回v用于调用一个子过程;v子过程由程序员预先设计 并装入内存 v子过程执行结束后要返回 原调用处调用程序调用程序断断点点入入口口地地址址子程序子程序317调用指令的执行过程v保护断点;将调用指令的下一条指令的地址(断点)压入堆栈v获取子过程的入口地址;子过程第1条指令的偏移地址v执行子过程,含相应参数的保存及恢复;v恢复断点,返回原程序。将断点偏移地址由堆栈弹出318过程调用段内调用段间调用段内直接调用段内直接调用段内间接调用段内间接调用段间直接调用段间直接调用段间间接调用段间间接调用3191. 段内调用v被调用程序与调用程序在同一代码段调用前只需保护断点的偏移地址v格式

36、: CALL NEAR PROCv执行过程:近过程名近过程名代代码码段段1调用程序调用程序被调用程序被调用程序代代码码段段1n 将断点的偏移地址压入堆栈将断点的偏移地址压入堆栈n 根据过程名找子程序入口根据过程名找子程序入口320段内调用例(1)CALL TIMRE(2)CALL WORD PTRSI直接调用直接调用间接调用间接调用44H33HCALL代代码码段段数数据据段段设:设:SI=1200H CS=6000H1200H执行第(执行第(2)条指令后:)条指令后:6000HCS =3344HIP =3212. 段间调用v子过程与原调用程序不在同一代码段v断点保护时的压栈顺序:先将断点的CS

37、压栈,再压入IP。调用前需保护断点的段基地址和偏移地址调用前需保护断点的段基地址和偏移地址322段间调用例v格式: CALL FAR PROCv格式例:CALL FAR TIMRECALL DWORD PTRSIXXHXXHCALL代代码码段段数数据据段段SIXXHXXHCSIP3233. 返回指令v功能:从堆栈中弹出断点地址,返回原程序v格式: RETvRET指令一般位于子程序的最后。324四、中断指令v中断v中断源v中断的类型v中断指令引起CPU产生一次中断的指令325中断与过程调用:v中断是随机事件或异常事件引起,调用则是事 先已在程序中安排好 ; v响应中断请求不仅要保护断点地址,还要

38、保护 FLAGS内容;v调用指令在指令中直接给出子程序入口地址, 中断指令只给出中断向量码,入口地址则在向 量码指向的内存单元中。3261. 中断指令v格式: INT nv说明: n4中断类型码中断类型码n=0 255n 4 XXHXXHXXHXXH入口的段地址入口的段地址入口的偏移地址入口的偏移地址存放中断服务子程序入口存放中断服务子程序入口地址的单元的偏移地址地址的单元的偏移地址代代码码段段数数据据段段该单元在数据段,段地址该单元在数据段,段地址=DS327中断指令的执行过程v将FLAGS压入堆栈;v将INT指令的下一条指令的CS、IP压栈;v由n4得到存放中断向量的地址;v将中断向量(中

39、断服务程序入口地址)送CS和IP寄存器;v转入中断服务程序。328中断指令的执行过程n4 22H11H00H67HIPCS68122HMOV代代码码段段数数据据段段堆堆栈栈段段SPFLAGSHFLAGSLIPHCSLCSHIPLSPSPSP329中断指令例执行程序段: CS IP 6200H:0110H INT 21H6200H:0112H MOV AX,BX 12H01H00H62HSP=1200FLAGSLFLAGSHSP=11FA执行执行INT指令后指令后堆堆栈栈段段330中断指令例v执行INT 21H指令后 IP=21H4 CS=(21H4)+20084H 23H11H00H20HIP

40、 CS数数据据段段代代码码段段XX21123H 中断服务子程序中断服务子程序3312. 溢出中断指令v格式: INTO v若OF=1,则启动一个类型为4的中断过程,给出一个出错标志,如果OF=0,不做任何操作。vINTO指令通常安排在有符号数加减运算指令之后。相当于相当于INT 43323. 中断返回指令v格式: IRETv中断服务程序的最后一条指令,负责恢复断点恢复断点恢复标志寄存器内容恢复标志寄存器内容333六、处理器控制指令对标志位的操作与外部设备的同步说明见说明见p139表表334结束语:掌握:v指令的格式及意义;v指令对操作数的要求及对标志位的影响;v指令的应用。335第第4 4章章

41、汇编语言程序设计336主要内容v汇编语言源程序的结构v汇编语言语句格式v伪指令v功能调用v汇编语言程序设计3374.1 汇编语言源程序了解:v汇编语言源程序的结构v汇编语言语句类型及格式338一、汇编语言源程序结构3391. 汇编语言源程序与汇编程序v汇编语言源程序v汇编程序用助记符编写用助记符编写汇编程序汇编程序汇编语言汇编语言源程序源程序机器语言机器语言目标程序目标程序源程序的编译程序源程序的编译程序3402. 汇编语言程序设计与执行过程v输入汇编语言源程序(EDIT)v汇编(MASM)v链接(LINK)v调试(TD)源文件源文件 . ASM目标文件目标文件 .OBJ可执行文件可执行文件.

42、EXE最终程序最终程序341二、汇编语言语句类型及格式二、汇编语言语句类型及格式3421. 汇编语言语句类型指令性语句指示性语句CPU执行的语句,能执行的语句,能够生成目标代码够生成目标代码CPU不执行,而由汇编不执行,而由汇编程序执行的语句,不生程序执行的语句,不生成目标代码成目标代码3432. 汇编语言语句格式 指令性语句: 标号: 前缀 助记符 操作数,操作数 ;注释指令的符号地址指令的符号地址标号后要有冒号标号后要有冒号操作码操作码注释前加分号注释前加分号344指示性语句格式名字 伪指令助记符 操作数 ,操作数, ;注释变量的符号地址变量的符号地址其后不加冒号其后不加冒号指示性语句中至

43、指示性语句中至少有一个操作数少有一个操作数3453. 标号、名字v标号后有冒号,在指令性语句前;名字后不加冒号,在指示性语句前。v英文字母、数字及专用字符组成,最大长度不能超过31个,且不能由数字打头,不能用保留字(如寄存器名,指令助记符,伪指令)。 3464. 操作数寄存器存储器单元常量变量或标号表达式347常 量v数字常量v字符串常量v例:A MOV AL,Av例:ABCD汇编时被译成对应的汇编时被译成对应的ASCII码码用单引号引起的字符或字符串用单引号引起的字符或字符串348变 量v代表内存中的数据区,程序中视为存储器操作数v变量的属性: 变量所在段的段地址 变量单元地址与段首地址之

44、间的位移量。 字节型、字型和双字型段段 值值偏移量偏移量类类 型型349表达式算术运算逻辑运算*关系运算取值运算和属性运算其它运算350算术运算和逻辑运算符v算术运算符+,-,*,/,MODv逻辑运算符AND,OR,NOT,XORv例:MOV AL,8 AND 4MOV AL,8+4-1351取值运算符取得其后变量或标号的偏移地址取得其后变量或标号的偏移地址取得其后变量或标号的段地址取得其后变量或标号的段地址TYPE 取取LENGTH 取所定义存储区的长度取所定义存储区的长度SIZE 取所定义存储区的字节数取所定义存储区的字节数n用于分析存储器操作数的属性用于分析存储器操作数的属性n获取变量的

45、属性值获取变量的属性值OFFSETSEG352取值运算符例 MOV AX,SEG DATA MOV DS,AX MOV BX,OFFSET DATA LEA BX,DATA等价于等价于353取值运算符例v若BUFFER存储区用如下伪指令定义: BUFFER DW 200 DUP(0) 则: TYPE BUFFER 等于2 LENGTH BUFFER等于200 SIZE BUFFER等于400354属性运算符n 用于指定其后存储器操作数的类型用于指定其后存储器操作数的类型n 运算符:运算符:PTRn 例:例: MOV BYTR PTRBX,12H355其它运算符v方括号: v段重设符 段寄存器名

46、: 方括号中内容为操作数的偏移地址方括号中内容为操作数的偏移地址用于修改默认的段基地址用于修改默认的段基地址3564.2 伪指令掌握:v伪指令的格式及实现的操作v伪指令的应用357伪指令v由汇编程序执行的“指令系统”v作用:定义变量;分配存储区定义逻辑段;指示程序开始和结束;定义过程等。358常用伪指令数据定义伪指令符号定义伪指令段定义伪指令结束伪指令过程定义伪指令宏命令伪指令359一、数据定义伪指令v用于定义数据区中变量的类型及大小v格式: 变量名 伪指令助记符 操作数, ;注释符号地址符号地址定义变量类型定义变量类型定义变量值定义变量值及区域大小及区域大小3601. 数据定义伪指令助记符v

47、DB 定义的变量为字节型vDW 定义的变量为字类型(双字节)vDD 定义的变量为双字型(4字节)vDQ 定义的变量为4字型(8字节)vDT 定义的变量为10字节型361数据定义伪指令例vDATA1 DB 11H,22H,33H,44HvDATA2 DW 11H,22H,3344HvDATA3 DD 11H*2,22H,33445566H以上变量在内存以上变量在内存中的存放形式中的存放形式362数据定义伪指令例_变量在内存中的分变量在内存中的分布布DATA111223344DATA2224411000033DATA32200220000XX66554433363数据定义伪指令的几点说明v伪指令的

48、性质决定所定义变量的类型;v定义字符串必须用DB伪指令v例: DATA1 DB ABCD,66HABCD41H42H43H44H66H3642. 重复操作符v作用:为一个数据区的各单元设置相同的初值v目的:常用于声明一个数据区v格式: 变量名 伪指令助记符 n DUP(初值,)v例: BW 20 DUP(0)M1 DB 10 DUP(0)3653. “?”的作用v表示随机值,用于预留存储空间vMEM1 DB 34H,A,? DW 20 DUP(?)预留预留40个字节单元,每单元为随机值个字节单元,每单元为随机值随机数随机数占占1个字节单元个字节单元366数据定义伪指令例vM1 DB How a

49、re you?vM2 DW 3 DUP(11H),3344Hv DB 4 DUP(?)vM3 DB 3 DUP(22H,11H,?)变量在内存中的分区变量在内存中的分区367数据定义伪指令例M1How aM211H11H00H44H33H r e you?11H00H00H随机数随机数M311H22H11H22H11H22HXXXXXXXXXXXXXX368二、符号定义伪指令v格式: 符号名 EQU表达式v操作: 用符号名取代后边的表达式,不可重新定义v例: CONSTANT EQU 100 VAR EQU 30H+99HEQU说明的表达式不占用内存空间说明的表达式不占用内存空间369三、段定

50、义伪指令v说明逻辑段的起始和结束;v说明不同程序模块中同类逻辑段之间的联系形 态370段定义伪指令格式段名 SEGMENT 定位类型 组合类型 类别 段名 ENDS说明逻辑说明逻辑段的起点段的起点说明不同模块中同名说明不同模块中同名段的组和连接方式段的组和连接方式371定位类型vPARA: 段的起点从节边界开始 (16个字节为1节)vBYTE: 段的起点从存储器任何地址开始vWORD:段的起点从偶地址开始vPAGE: 段的起点从页边界开始 (256个字节为1页)372组合类型v与其它模块中的同名段在满足定位类型的前提 下具有的组合方式:NONE: 不组合PUBLIC: 依次连接(顺序由LINK

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(微机原理与接口技术(清华大学课件-全套).ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

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


163文库-Www.163Wenku.Com |网站地图|