微机原理与接口技术(官方课件)_第1页
微机原理与接口技术(官方课件)_第2页
微机原理与接口技术(官方课件)_第3页
微机原理与接口技术(官方课件)_第4页
微机原理与接口技术(官方课件)_第5页
已阅读5页,还剩677页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1微机原理与接口技术微机原理与接口技术2课程目标n掌握:掌握:n微型计算机的基本工作原理微型计算机的基本工作原理n汇编语言程序设计方法汇编语言程序设计方法n微型计算机接口技术微型计算机接口技术n建立微型计算机系统的整体概念,形成微机系统软建立微型计算机系统的整体概念,形成微机系统软硬件开发的初步能力硬件开发的初步能力3教材及实验指导书n教材:教材:n微机原理与接口技术(第微机原理与接口技术(第3版)版). 冯博琴,吴宁冯博琴,吴宁主编主编. 清华大学出版社清华大学出版社n实验指导书实验指导书n微机原理与接口技术实验指导书微机原理与接口技术实验指导书(讲义)(讲义) 陈文革,吴宁,夏秦编陈文革,

2、吴宁,夏秦编. 西安交通大学西安交通大学n微机原理与接口技术题解及实验指导(第微机原理与接口技术题解及实验指导(第3版)版). 吴宁,陈文革编吴宁,陈文革编. 清华大学出版社清华大学出版社4第1章 微型计算机基础概论n主要内容主要内容:n微机系统的组成微机系统的组成n计算机中的编码、数制及其转换计算机中的编码、数制及其转换n无符号二进制数的运算无符号二进制数的运算n算术运算和逻辑运算算术运算和逻辑运算n运算中的溢出运算中的溢出n机器数的表示及运算机器数的表示及运算n基本逻辑门及译码器基本逻辑门及译码器5一、微型计算机系统n微型机的工作原理微型机的工作原理n微机系统的基本组成微机系统的基本组成6

3、1. 计算机的工作原理冯冯 诺依曼计算机的工作原理诺依曼计算机的工作原理 存储程序工作原理存储程序工作原理7存储程序原理n将计算过程描述为由许多条指令按一定顺序组将计算过程描述为由许多条指令按一定顺序组成的程序,并放入存储器保存成的程序,并放入存储器保存n指令按其在存储器中存放的顺序执行;指令按其在存储器中存放的顺序执行;n由控制器控制整个程序和数据的存取以及程序由控制器控制整个程序和数据的存取以及程序的执行。的执行。8冯 诺依曼计算机体系结构运算器运算器存储器存储器控制器控制器输入设备输入设备输出设备输出设备9冯 诺依曼机的工作过程内存中的程序内存中的程序指令指令1指令指令2指令指令n分析分

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

5、)读到数据总线据总线DB。n把读出的内容经数据总线送到数据寄存器把读出的内容经数据总线送到数据寄存器DR。n指令译码指令译码n因为取出的是指令的操作码,故数据寄存器因为取出的是指令的操作码,故数据寄存器DR把它送到指令寄存器把它送到指令寄存器IR,然后再送到指令译码器,然后再送到指令译码器ID 冯 诺依曼机的特点和不足n特点:特点:n程序存储,共享数据,顺序执行程序存储,共享数据,顺序执行n属于顺序处理机,适合于确定的算法和数值数据的属于顺序处理机,适合于确定的算法和数值数据的处理。处理。n不足:不足:n与存储器间有大量数据交互,对总线要求很高;与存储器间有大量数据交互,对总线要求很高;n执行

6、顺序有程序决定,对大型复杂任务较困难;执行顺序有程序决定,对大型复杂任务较困难;n以运算器为核心,处理效率较低;以运算器为核心,处理效率较低;n由由PC控制执行顺序,难以进行真正的并行处理。控制执行顺序,难以进行真正的并行处理。11典型的非冯 诺依曼机结构n数据流驱动的计算机结构数据流驱动的计算机结构n当指令具有所需数据、且输出端没有数据时就可执当指令具有所需数据、且输出端没有数据时就可执行。行。12数据流处理机存储器主处理机数据通道控制通道高速数据总线磁盘存储器Dataflow Image Processing System132. 系统组成 主机主机 硬件系统硬件系统 外设外设 微机系统微

7、机系统 系统软件系统软件 软件系统软件系统 应用软件应用软件CPU存储器存储器输入输入/输出接口输出接口总线总线14微处理器n微处理器简称微处理器简称CPU,是计算机的核心。是计算机的核心。n主要包括:主要包括: 运算器运算器 控制器控制器 寄存器组寄存器组15存储器n定义:定义:n用于存放计算机工作过程中需要操作的数据用于存放计算机工作过程中需要操作的数据和程序。和程序。16有关内存储器的几个概念n内存单元的地址和内容内存单元的地址和内容n内存容量内存容量n内存的操作内存的操作n内存的分类内存的分类17内存单元的地址和内容n内存按单元组织内存按单元组织n每单元都对应一个地址,以方便对单元的寻

8、址每单元都对应一个地址,以方便对单元的寻址1011011038F04H内存地址内存地址单元内容单元内容18内存容量n内存容量:内存容量:n所含存储单元的个数,以字节为单位所含存储单元的个数,以字节为单位n内存容量的大小依内存容量的大小依CPUCPU的寻址能力而定的寻址能力而定n实地址模式下为实地址模式下为CPUCPU地址信号线的位数地址信号线的位数19内存操作n读:读:n将内存单元的内容取入将内存单元的内容取入CPUCPU,原单元内容不改变;原单元内容不改变;n写:写:nCPUCPU将信息放入内存单元,单元中原来的内容被覆盖。将信息放入内存单元,单元中原来的内容被覆盖。20内存储器的分类随机存

9、取存储器(随机存取存储器(RAMRAM)只读存储器(只读存储器(ROMROM)按工作方按工作方式可分为式可分为21输入/输出接口n接口是接口是CPUCPU与外部设备间的桥梁与外部设备间的桥梁CPUI/OI/O接口接口外外设设22接口的分类串行接口串行接口并行接口并行接口数字接口数字接口模拟接口模拟接口输入接口输入接口输出接口输出接口23接口的功能n数据缓冲寄存;数据缓冲寄存;n信号电平或类型的转换;信号电平或类型的转换;n实现主机与外设间的运行匹配。实现主机与外设间的运行匹配。24总线n基本概念基本概念n分类分类n工作原理工作原理n常用系统总线标准及其主要技术指标常用系统总线标准及其主要技术指

10、标 (具体内容见后续课程)(具体内容见后续课程)25软件系统n软件:软件:n为运行、管理和维护计算机系统或为实现某一功能为运行、管理和维护计算机系统或为实现某一功能而编写的各种程序的总和及其相关资料。而编写的各种程序的总和及其相关资料。系统软件系统软件应用软件应用软件操作系统操作系统编译系统编译系统网络系统网络系统工具软件工具软件软件软件26二、计算机中的数制和编码n数制和编码的表示数制和编码的表示n各种计数制之间的相互转换各种计数制之间的相互转换271. 常用计数法 十进制(十进制(D D) 二进制(二进制(B B) 十六进制(十六进制(H H)28例:n234.98D或(或(234.98)

11、Dn1101.11B或(或(1101.11)BnABCD . BFH或(或(ABCD . BF) H292. 各种进制数间的转换非十进制数到十进制数的转换非十进制数到十进制数的转换十进制到非十进制数的转换十进制到非十进制数的转换二二进制与十六进制数之间的转换进制与十六进制数之间的转换 30非十进制数到十进制数的转换n按相应的权按相应的权值表达式展开值表达式展开n例:例:n1011.11B=123+022+121+120+12-1+ 12-2 =8+2+1+0.5+0.25 =11.75n5B.8H=5161+11160+816-1 =80+11+0.5 =91.531十进制到非十进制数的转换n

12、到二进制的转换:到二进制的转换: 对整数:除对整数:除2取余;取余; 对小数:乘对小数:乘2取整。取整。n到十六进制的转换:到十六进制的转换: 对整数:除对整数:除16取余;取余; 对小数:乘对小数:乘16取整。取整。32二进制与十六进制间的转换n用用4位二进制数表示位二进制数表示1位十六进制数位十六进制数n例:例:n25.5 = 11001.1B = 19.8H n11001010.0110101B =CA.6AH333. 计算机中的编码nBCD码码n用二进制编码表示的十进制数用二进制编码表示的十进制数nASCII码码n西文字符编码西文字符编码34BCD码码n压缩压缩BCD码码n用用4位二进

13、制码表示一位十进制数位二进制码表示一位十进制数n每每4位之间有一个空格位之间有一个空格n扩展扩展BCD码码n用用8位二进制码表示一位十进制数,每位二进制码表示一位十进制数,每4位之间有一位之间有一个空格。个空格。35BCD码与二进制数之间的转换n先转换为十进先转换为十进 制数,再转换二进制数,再转换二进 制数;反之同制数;反之同样。样。n例例:n(0001 0001 .0010 01010001 0001 .0010 0101)BCDBCD =11 .25 =11 .25 = =(1011 .011011 .01) B B36ASCII码n西文西文 字符的编码,一般用字符的编码,一般用7位二进

14、位二进 制码表示。制码表示。nD D7 7位为校验位,默认情况下为位为校验位,默认情况下为0。n要求:要求:n理解校验位的作用理解校验位的作用n熟悉熟悉0-F的的ASCII码码37ASCII码的奇偶校验n奇校验奇校验n加上校验位后编码中加上校验位后编码中“1”的个数为奇数。的个数为奇数。n例:例:A的的ASCII码是码是41H(1000001B)n以奇校验传送则为以奇校验传送则为 C1H(11000001B)n偶校验偶校验n加上校验位后加上校验位后 编码中编码中“1”的个数为偶数。的个数为偶数。n上例若以偶校验传送,则为上例若以偶校验传送,则为 41H。38三、无符号二进制数的运算算术运算算术

15、运算逻辑运算逻辑运算无符号数无符号数有符号数有符号数二进二进 制数的运算制数的运算39主要内容n无符号二进无符号二进 制数的算术运算制数的算术运算n无符号数的表达范围无符号数的表达范围n运算中的溢出问题运算中的溢出问题n无符号数的逻辑运算无符号数的逻辑运算n基本逻辑门和译码器基本逻辑门和译码器401. 无符号数的算术运算n加法运算加法运算n1+1=0(有进位)(有进位)n减法运算减法运算n0-1=1(有借位)(有借位)n乘法运算乘法运算n除法运算除法运算41乘除运算例n000010110100 =00101100B n000010110100=00000010B 即:商即:商=00000010

16、B 余数余数=11B422. 无符号数的表示范围: 0 0 X 2X 2n n-1-1若运算结果超出这个范围,则产生溢出。若运算结果超出这个范围,则产生溢出。对无符号数:运算时,当最高位向更高位对无符号数:运算时,当最高位向更高位 有进位(或借位)时则产生有进位(或借位)时则产生 溢出。溢出。43例: 最高位向前有进位,产生溢出最高位向前有进位,产生溢出00000000 100000001 11111111 443. 逻辑运算n与、或、非、异或与、或、非、异或n掌握:掌握:n与、或、非门逻辑符号和逻辑关系(真值表);与、或、非门逻辑符号和逻辑关系(真值表);n与非门、或非门的应用。与非门、或非

17、门的应用。45“与”、“或”运算n“与与”运算:运算:n任何数和任何数和“0”相相“与与”,结果为,结果为0。n“或或”运算:运算:n任何数和任何数和“1”相相“或或”,结果为,结果为1。&1146“非”、“异或”运算n“非非”运算运算n按位求反按位求反n“异或异或”运算运算n相同则为相同则为0,相异则为,相异则为1474. 译码器n掌握掌握74LS138译码器译码器n各引脚功能各引脚功能n输入端与输出端关系(真值表)输入端与输出端关系(真值表)4874LS138译码器G1G2AG2BCBAY0Y7 n主要引脚及功能主要引脚及功能49三、机器数(有符号数)的运算50计算机中符号数的表示

18、n机器数机器数n计算机中的数据计算机中的数据n构成:构成:n符号位符号位 + 真值真值 “0” 表示正表示正“1” 表示负表示负51例 +52 = +0110100 = 0 0110100 符号位符号位 真值真值-52 = -0110100 = 1 0110100 符号位符号位 真值真值521. 符号数的表示n机器数的表示方法:机器数的表示方法:n原码原码n反码反码n补码补码53原码n最高位为符号位(用最高位为符号位(用“0”表示正,用表示正,用“1”表表示负),其余为真值部分。示负),其余为真值部分。n优点:优点: n真值和其原码表示之间的对应关系简单,容易理解;真值和其原码表示之间的对应关

19、系简单,容易理解;n缺点:缺点:n计算机中用原码进行加减运算比较困难计算机中用原码进行加减运算比较困难n0的表示不唯一。的表示不唯一。54数0的原码n8位数位数0的原码:的原码:+0=0 0000000 - -0=1 0000000 即:数即:数0的原码不唯一。的原码不唯一。55反码对一个机器数对一个机器数X:n若若X0 ,则则 X反反=X原原n若若X0, 则则X补补= X反反= X原原n若若X BX 若若 AX BX OF和和SF状态不同状态不同 AX BX239CMP指令例 LEA BX,MAX LEA SI,BUF MOV CL,20 MOV AL,SINEXT:INC SI CMP A

20、L,SI JNC GOON ;CF=0转移转移 XCHG SI,ALGOON:DEC CL JNZ NEXT MOV BX,AL HLT240程序功能 MAXBUFXXHXXHXXH在在20个数中找最大个数中找最大的数,并将其存放的数,并将其存放在在MAX单元中。单元中。241三、乘法指令无符号的乘法指令无符号的乘法指令MUL*带符号的乘法指令带符号的乘法指令IMULn注意点:注意点:n乘法指令采用隐含寻址,隐含的是存放被乘数的累乘法指令采用隐含寻址,隐含的是存放被乘数的累加器加器ALAL或或AXAX及存放结果的及存放结果的AXAX,DX.DX.2421. 无符号数乘法指令n格式:格式: MU

21、L OPRD 不能是立即数不能是立即数n操作:操作: OPRD为字节数为字节数 OPRD为为16位数位数 ALOPRDAXOPRDDXAXAX243无符号数乘法指令例nMUL BYTE PTRBX BXXXHAL XXHAX244四、除法指令无符号除法指令无符号除法指令n格式:格式:nDIV OPRD有符号除法指令有符号除法指令n格式:格式:nIDIV OPRD245除法指令的操作若若OPRD是字节数是字节数n执行:执行:AX/OPRD n结果:结果:nAL=商商 AH=余数余数若若OPRD是双字节数是双字节数n执行:执行: DXAX/OPRDn结果:结果:nAX=商商 DX=余数余数指指令令

22、要要求求被被除除数数是是除除数数的的双双倍倍字字长长246五、BCD码调整指令n将指令执行的二进制运算结果调整为压缩将指令执行的二进制运算结果调整为压缩BCD码或扩展码或扩展BCD码表示的十进制数。码表示的十进制数。n共共6条,均为隐含寻址方式,隐含的操作数是条,均为隐含寻址方式,隐含的操作数是 AL或或AL、AH;n不能单独使用,要紧跟在相应的算术运算指令不能单独使用,要紧跟在相应的算术运算指令 之后;之后;247逻辑运算和移位指令248指令类型n逻辑运算逻辑运算n与,或,非,异或与,或,非,异或n移位操作移位操作n非循环移位,循环移位非循环移位,循环移位249 一、逻辑运算n逻辑运算指令对

23、逻辑运算指令对 操作数的操作数的 要求大多与要求大多与MOV指令指令 相同。相同。n“非非”运算指令运算指令 要求操作数要求操作数 不能是立即数;不能是立即数;n除除“非非”运算指令运算指令 外,其余指令的执行都会外,其余指令的执行都会使标志位使标志位OF=CF=02501.“与”指令:n格式:格式: n AND OPRD1,OPRD2n操作:操作: n两操作数相两操作数相“与与”,结果送目标地址。,结果送目标地址。251“与”指令的应用n实现两操作数实现两操作数 按位相与的按位相与的 运算运算nAND BL,SIn使目标操作数的使目标操作数的 某些位不变,某些位清零某些位不变,某些位清零nA

24、ND AL,0FHn在操作数在操作数 不变的不变的 情况下使情况下使CF和和OF清零清零nAND AX,AX252“与”指令应用例n从地址为从地址为3F8H 端口中读入一个字节数,端口中读入一个字节数,如果该数如果该数 bit1位为位为1,则可从,则可从38FH端口将端口将DATA为首地址的为首地址的 一个字输出,否则就不一个字输出,否则就不能进行数能进行数 据传送。据传送。 编写相应的编写相应的 程序段。程序段。253“与”指令应用例开开 始始取待输出数的取待输出数的偏移地址偏移地址读入状态字读入状态字测试测试bit1位状态位状态Bit1=1?取输入口地址取输入口地址取输出口地址取输出口地址

25、 输出一个字输出一个字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.“或”运算指令n格式:格式: nOR OPRD1,OPRD2n操作:操作: n两操作数相两操作数相“或或”,结果送目标地址,结果送目标地址256“或”指令的应用n实现两操作数实现两操作数 相相 “或或”的的 运算运算nOR AX,DIn使某些位不变,某些位置使某些位不变,某些位置“1”nOR CL,0FHn在不改变操作数的在不改变操作数的 情况

26、下使情况下使OF=CF=0nOR AX,AX257“或”指令的应用例 OR AL,AL JPE GOON OR AL,80H GOON:.PF=1转移转移258“或”指令的应用将一个二进将一个二进制数制数9变为字变为字符符9如何实现如何实现?2593.“非”运算指令n格式:格式:nNOT OPRDNOT OPRDn操作:操作:n操作数按位取反再送回原地址操作数按位取反再送回原地址n注:注:n指令中的操作数不能是立即数指令中的操作数不能是立即数n指令的执行对标志位无影响指令的执行对标志位无影响n例:例:NOT BYTE PTRBXNOT BYTE PTRBX2604.“异或”运算指令n格式:格式

27、: nXOR OPRD1,OPRD2n操作:操作:n两操作数相两操作数相“异或异或”,结果送目标地址,结果送目标地址n例:例: XOR BL,80H XOR AX,AX2615.“测试”指令n格式:格式: nTEST OPRD1,OPRD2n操作:操作: n执行执行“与与”运算,但运算的结果不送回目运算,但运算的结果不送回目标地址。标地址。n应用:应用:n常用于测试某些位的状态常用于测试某些位的状态262例:n从地址为从地址为3F8H的的 端口中读入一个字节数,当端口中读入一个字节数,当该数的该数的 bit1, bit3, bit5位同时为位同时为1时时,可,可从从38FH端口将端口将DATA

28、为首地址的一个字输出,为首地址的一个字输出,否则就不能进行数否则就不能进行数 据传送。据传送。 编写相应的编写相应的 程序段。程序段。263源程序代码: LEA SI,DATA MOV DX,3F8HWATT:IN AL,DX MOV DX,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二、移位指令 非循环移位指令非循环移位指令 循环移位指令循环移位

29、指令注:注:n 移动一位时由指令直接给出;移动一位时由指令直接给出;n 移动两位及以上,则移位次数由移动两位及以上,则移位次数由CL指定。指定。2651. 非循环移位指令n逻辑左移逻辑左移n算术左移算术左移n逻辑右移逻辑右移n算术右移算术右移266算术左移和逻辑左移n算术左移指算术左移指 令:令: SAL OPRD,1 SAL OPRD,CLn逻辑左移指逻辑左移指 令:令: SHL OPRD,1 SHL OPRD,CL有符号数有符号数无符号数无符号数267逻辑右移n格式:格式: SHR OPRD,1 SHR OPRD,CL0CF无符号数无符号数的右移的右移268逻辑右移例:nMOV AL,68

30、HnMOV CL,2nSHR 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算术右移n格式:格式: SAR OPRD,1 SAR OPRD,CL有符号数有符号数的右移的右移CF270非循环移位指令的应用n左移可实现乘法运算左移可实现乘法运算n右移可实现除法运算右移可实现除法运算 2712. 循环移位指令n不带进位位的循环移位不带进位位的循环移位n带进位位的循环移位带进位位的循环移位左移左移 ROL右移右移 ROR左移左移 RCL右移右移 RCR指令格式、对操作数

31、的要求与非循环移位指令相同指令格式、对操作数的要求与非循环移位指令相同272不带进位位的循环移位CFCF273带进位位的循环移位CFCF274循环移位指令的应用n用于对某些位状态的测试;用于对某些位状态的测试;n高位部分和低位部分的交换;高位部分和低位部分的交换;n与非循环移位指令一起组成与非循环移位指令一起组成32位或更长字位或更长字长数的移位。长数的移位。P124例例3-34P124例例3-35275程序功能n将将10001000H H开始存放的开始存放的4 4个压缩个压缩BCDBCD码转换码转换为为ASCIIASCII码存放在码存放在30003000H H开始的单元中开始的单元中去。去。

32、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串操作指令说明n针对数据块或字符串的操作;针对数据块或字符串的操作;n可实现存储器到存储器的数据传送;可实现存储器到存储器的数据传送;n待操作的数据串称为源串,目标地址称为待操作的数据串称为源串,目标地址称为目标串。目标串。279串操作指令的特点n源串一般存放在数据段,偏移地址

33、由源串一般存放在数据段,偏移地址由SI指定。允许段指定。允许段重设;重设;n目标串必须在附加段,偏移地址由目标串必须在附加段,偏移地址由DI指定;指定;n指令自动修改地址指针,修改方向由指令自动修改地址指针,修改方向由DF决定。决定。 DF=0 DF=1n数据块长度值由数据块长度值由CX指定指定n可增加自动重复前缀以实现自动修改可增加自动重复前缀以实现自动修改CX内容。内容。增地址方向;增地址方向;减地址方向;减地址方向;280重复前缀n无条件重复无条件重复nREPn条件重复条件重复nREPE 相等重复相等重复nREPZ 为零重复为零重复nREPNE 不相等重复不相等重复nREPNZ 不为零重

34、复不为零重复CX0 ZF=1CX0 ZF=0CX0 重复重复281串操作指令流程(以传送操作为例)取源串地址取源串地址取目标串地址取目标串地址设串长度设串长度传送一个字节或字传送一个字节或字修改地址指针修改地址指针修改串长度值修改串长度值传送完否?传送完否?NY设操作方向设操作方向282串操作指令n串传送串传送 MOVSn串比较串比较 CMPSn串扫描串扫描 SCASn串装入串装入 LODSn串送存串送存 STOS2831. 串传送指令n格式:格式: MOVS OPRD1,OPRD2 MOVSB MOVSWn串传送指令常与无条件重复前缀连用串传送指令常与无条件重复前缀连用284串传送指令n对比

35、用对比用MOV指令和指令和MOVS指令实现将指令实现将200个字节数据从内存的一个区域送到个字节数据从内存的一个区域送到另一个区域的程序段。另一个区域的程序段。285串传送指令例n用串传送指令实现用串传送指令实现200个字节数据的传送:个字节数据的传送: LEA SI,MEM1 LEA DI,MEM2 MOV CX,200 CLD REP MOVSB HLT2862. 串比较指令n格式:格式: CMPS OPRD1,OPRD2 CMPSB CMPSWn串比较指令常与条件重复前缀连用,指令的执串比较指令常与条件重复前缀连用,指令的执 行不改变操作数,仅影响标志位。行不改变操作数,仅影响标志位。n

36、前缀的操作对标志位不影响前缀的操作对标志位不影响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. 串扫描指令n格式:格式: SCAS OPRD SCASB SCASWn执行与执行与CMPS指令相似的操作,只是这里的源指令相似的操作,只是这里的源 操作数是操作数是AX或或AL目目 标标操作数操作数289串扫描指令的应用n常用于在指定存储区域中寻找某个

37、关键字。常用于在指定存储区域中寻找某个关键字。290串装入指令n格式:格式: LODS OPRD LODSB LODSWn操作:操作:n对字节:对字节:n对对 字:字:源操作数源操作数DS:SIDS:SIDS:SIDS:SIALALAXAX2914. 串装入指令n用于将内存某个区域的数据串依次装入累加用于将内存某个区域的数据串依次装入累加 器,以便显示或输出到接口。器,以便显示或输出到接口。nLODS指令一般不加重复前缀。指令一般不加重复前缀。2925. 串存储指令n格式:格式: STOS OPRD STOSB STOSWn操作:操作:n对字节:对字节: ALALn对对 字:字: AXAX目目

38、 标标操作数操作数ES:DIES:DI293串存储指令的应用n常用于将内存某个区域置同样的值常用于将内存某个区域置同样的值n此时:此时:n将待送存的数据放入将待送存的数据放入AL(字节数)或(字节数)或AX(字数据(字数据););n确定操作方向(增地址确定操作方向(增地址/减地址)和区域大小(串减地址)和区域大小(串长度值);长度值);n使用串存储指令使用串存储指令+无条件重复前缀,实现数据传送无条件重复前缀,实现数据传送。294串存储指令例 内存某个区域清零n将内存某单元清零将内存某单元清零n设计思想:设计思想: 区域首地址送区域首地址送ES:DI串长度送串长度送CX置方向标志置方向标志DF

39、0送累加器送累加器AL执行串送存指令执行串送存指令295程序控制指令n转移指令转移指令n循环控制循环控制n过程调用过程调用n中断控制中断控制296程序的执行方向n程序控制类指令的本质是:程序控制类指令的本质是:n控制程序的执行方向控制程序的执行方向n决定程序执行方向的因素:决定程序执行方向的因素:nCS,IPn控制程序执行方向的方法:控制程序执行方向的方法:n修改修改CS 和和IP ,则程序转向另一个代码段执行;,则程序转向另一个代码段执行;n仅修改仅修改IP,则程序将改变当前的执行顺序,转向本,则程序将改变当前的执行顺序,转向本代码段内其它某处执行。代码段内其它某处执行。297一、转移指令无

40、条件无条件转移指令转移指令 无条件转移到目标地址,执行新的指令无条件转移到目标地址,执行新的指令有条件转移指令有条件转移指令 在具备一定条件的情况下转移到目标地址在具备一定条件的情况下转移到目标地址通过修改指令的通过修改指令的偏移地址偏移地址或或段地址及偏移地址段地址及偏移地址实现程序的转移实现程序的转移2981. 无条件转移指令n格式:格式: JMP OPRD目标地址目标地址与与JMP在同在同一代码段一代码段与与JMP不在同不在同一代码段一代码段原则上可实现在整个内存空间的转移原则上可实现在整个内存空间的转移299无条件段内转移n转移的转移的目标地址目标地址在当前代码段内,段地址不在当前代码

41、段内,段地址不 改改变。变。n即:即:目标地址目标地址是是16位偏移地址。位偏移地址。指令中直接给出指令中直接给出目标地址目标地址由指令中的寄存器或由指令中的寄存器或存储器操作数指出目存储器操作数指出目标地址标地址段内直接转移段内直接转移段内间接转移段内间接转移300段内直接转移n转移的目标地址由指令直接给出转移的目标地址由指令直接给出n格式:格式:nJMP Label近地址标号近地址标号301段内直接转移示图JMPLabel代代码码段段位移量位移量下一条要执行指令的偏移地址下一条要执行指令的偏移地址=当前当前IP+位移量位移量JMP Label302段内间接转移n段内间接转移段内间接转移n转

42、移的目标地址存放在某个转移的目标地址存放在某个16位寄存器或存储器位寄存器或存储器 的某两个单元中的某两个单元中n例:例:nJMP BXn若:若:BX=1200Hn则:转移的目标地址则:转移的目标地址=1200HJMP代代码码段段1200HMOV303段内间接转移例nJMP WORD PTRBX 设:设:BX=1200HJMP代代码码段段数数据据段段BX=1200XXHXXHIP指令码指令码304无条件段间转移n转移的转移的目标地址目标地址不在当前代码段内。不在当前代码段内。n目标地址目标地址为为32位,包括段地址和偏移地址。位,包括段地址和偏移地址。指令中直接给出指令中直接给出目标地址目标地

43、址由指令中的由指令中的32位存储器位存储器操作数指出目标地址操作数指出目标地址段间直接转移段间直接转移段间间接转移段间间接转移305段间直接转移n段内直接转移段内直接转移n转移的目标地址由指令直接给出转移的目标地址由指令直接给出n格式:格式:nJMP FAR Label远地址标号远地址标号306段间直接转移示图JMPLabel代代码码段段1Label与与JMP之间的位移量之间的位移量代代码码段段2XXHXXHXXHXXHIPCS307段间间接转移n段内间接寻址段内间接寻址n转移的目标地址由指令中的转移的目标地址由指令中的32位操作数给出位操作数给出n 例:例:nJMP DWORD PTRBXX

44、XHXXHXXHXXHBXIPCSJMP指令码指令码代代码码段段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无条件转移指令例nMOV SI,1122HnMOV WORD PTRSI,0120HnADD SI,2nMOV WORD PTRSI,0122HJMP DWORD PTRSI-2JMP WORD PTRSIJMP1122H代代码码段段数数据据段段01H22H20H0

45、1HIPCSIP3102. 条件转移指令n在满足一定条件下,程序转移到目标地在满足一定条件下,程序转移到目标地址继续执行址继续执行n条件转移指令均为段内短转移,即转移条件转移指令均为段内短转移,即转移 范围为:范围为: -128-+127311条件转移指令的应用n几种条件转移指令的应用几种条件转移指令的应用nJC/JNCn判断判断CF的状态。常用于比大小的状态。常用于比大小nJZ/JNZn判断判断ZF的状态。常用于循环体的结束判断的状态。常用于循环体的结束判断nJO/JNOn判断判断OF的状态。常用于有符号数溢出的判断的状态。常用于有符号数溢出的判断nJP/JPEn判断判断PF的状态。用于判断

46、运算结果低的状态。用于判断运算结果低8位中位中1的个数是否为偶数的个数是否为偶数nJA/JAE/JB/JBEn判断判断CF或或CF+ZF的状态。常用于无符号数的大小比较的状态。常用于无符号数的大小比较312转移指令例n统计内存数据段中以统计内存数据段中以TABLE为首地址的为首地址的100个个8位符号数中正数、负数和零元数位符号数中正数、负数和零元数的个数。的个数。313转移指令例(流程图)将存放各元素个将存放各元素个数的单元清零数的单元清零取首地址取首地址设串长度设串长度取一个字节数取一个字节数正数个数加正数个数加1零元素加零元素加1为负?为负?为零?为零?负数个数加负数个数加1NYNYp1

47、33314二、循环控制指令n循环范围:循环范围:n以当前以当前IP为中心的为中心的-128+127范围内循环。范围内循环。n循环次数由循环次数由CX寄存器指定。寄存器指定。n循环指令:循环指令:LOOP *LOOPZ *LOOPNZ无条件循环指令无条件循环指令条件循环指令条件循环指令315无条件循环指令n格式:格式: LOOP LABELn循环条件:循环条件: CX 0n操作:操作: DEC CX JNZ 符号地址符号地址P133例例3-44316三、过程调用和返回n用于调用一个子过程;用于调用一个子过程;n子过程由程序员预先设计子过程由程序员预先设计 并装入内存并装入内存 n子过程执行结束后

48、要返回子过程执行结束后要返回 原调用处原调用处调用程序调用程序断断点点入入口口地地址址子程序子程序317调用指令的执行过程n保护断点;保护断点;n将调用指令的下一条指令的地址(断点)压入堆栈将调用指令的下一条指令的地址(断点)压入堆栈n获取子过程的入口地址;获取子过程的入口地址;n子过程第子过程第1条指令的偏移地址条指令的偏移地址n执行子过程,含相应参数的保存及恢复;执行子过程,含相应参数的保存及恢复;n恢复断点,返回原程序。恢复断点,返回原程序。n将断点偏移地址由堆栈弹出将断点偏移地址由堆栈弹出318过程调用段内调用段内调用段间调用段间调用段内直接调用段内直接调用段内间接调用段内间接调用段间

49、直接调用段间直接调用段间间接调用段间间接调用3191. 段内调用n被调用程序与调用程序在同一代码段被调用程序与调用程序在同一代码段n调用前只需保护断点的偏移地址调用前只需保护断点的偏移地址n格式:格式: CALL NEAR PROCn执行过程:执行过程:近过程名近过程名代代码码段段1调用程序调用程序被调用程序被调用程序代代码码段段1n 将断点的偏移地址压入堆栈将断点的偏移地址压入堆栈n 根据过程名找子程序入口根据过程名找子程序入口320段内调用例(1)CALL TIMRE(2)CALL WORD PTRSI直接调用直接调用间接调用间接调用44H33HCALL代代码码段段数数据据段段设:设:SI

50、=1200H CS=6000H1200H执行第(执行第(2)条指令后:)条指令后:6000HCS =3344HIP =3212. 段间调用n子过程与原调用程序不在同一代码段子过程与原调用程序不在同一代码段n断点保护时的压栈顺序:断点保护时的压栈顺序:n先将断点的先将断点的CS压栈,再压入压栈,再压入IP。调用前需保护断点的段基地址和偏移地址调用前需保护断点的段基地址和偏移地址322段间调用例n格式:格式: CALL FAR PROCn格式例:格式例:nCALL FAR TIMREnCALL DWORD PTRSIXXHXXHCALL代代码码段段数数据据段段SIXXHXXHCSIP3233. 返

51、回指令n功能:功能:n从堆栈中弹出断点地址,返回原程序从堆栈中弹出断点地址,返回原程序n格式:格式: RETRETnRETRET指令一般位于子程序的最后。指令一般位于子程序的最后。324四、中断指令n中断中断n中断源中断源n中断的类型中断的类型n中断指令中断指令n引起引起CPU产生一次中断的指令产生一次中断的指令325中断与过程调用:n中断是随机事件或异常事件引起,调用则是事中断是随机事件或异常事件引起,调用则是事 先已在程序中安排好先已在程序中安排好 ; n响应中断请求不仅要保护断点地址,还要保护响应中断请求不仅要保护断点地址,还要保护 FLAGS内容;内容;n调用指令在指令中直接给出子程序

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

53、一条指令的指令的下一条指令的CS、IP压栈;压栈;n由由n4得到存放得到存放中断向量的地址;中断向量的地址;n将中断向量(中断服务程序入口地址)送将中断向量(中断服务程序入口地址)送CS和和IP寄存器;寄存器;n转入中断服务程序。转入中断服务程序。328中断指令的执行过程n4 22H11H00H67HIPCS68122HMOV代代码码段段数数据据段段堆堆栈栈段段SPFLAGSHFLAGSLIPHCSLCSHIPLSPSPSP329中断指令例执行程序段:执行程序段: CS IP 6200H:0110H INT 21H6200H:0112H MOV AX,BX 12H01H00H62HSP=120

54、0FLAGSLFLAGSHSP=11FA执行执行INT指令后指令后堆堆栈栈段段330中断指令例n执行执行INT 21H指令后指令后 IP=21H4 CS=(21H4)+20084H 23H11H00H20HIP CS数数据据段段代代码码段段XX21123H 中断服务子程序中断服务子程序3312. 溢出中断指令n格式:格式: INTO n若若OF=1,OF=1,则启动一个类型为则启动一个类型为4 4的中断过程的中断过程, ,给出给出一个出错标志一个出错标志, ,如果如果OF=0,OF=0,不做任何操作。不做任何操作。nINTOINTO指令通常安排在有符号数加减运算指令之指令通常安排在有符号数加减

55、运算指令之后。后。相当于相当于INT 43323. 中断返回指令n格式:格式: IRETn中断服务程序的最后一条指令,负责中断服务程序的最后一条指令,负责恢复断点恢复断点恢复标志寄存器内容恢复标志寄存器内容333六、处理器控制指令对标志位的操作对标志位的操作与外部设备的同步与外部设备的同步说明见说明见p139表表334结束语:掌握:掌握:n指令的格式及意义;指令的格式及意义;n指令对操作数的要求及对标志位的影响;指令对操作数的要求及对标志位的影响;n指令的应用。指令的应用。335第第4 4章章汇编语言程序设计336主要内容n汇编语言源程序的结构汇编语言源程序的结构n汇编语言语句格式汇编语言语句

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

57、源文件源文件 . ASM目标文件目标文件 .OBJ可执行文件可执行文件.EXE最终程序最终程序341二、汇编语言语句类型及格式二、汇编语言语句类型及格式3421. 汇编语言语句类型指令性语句指令性语句指示性语句指示性语句CPU执行的语句,能执行的语句,能够生成目标代码够生成目标代码CPU不执行,而由汇编不执行,而由汇编程序执行的语句,不生程序执行的语句,不生成目标代码成目标代码3432. 汇编语言语句格式 指令性语句:指令性语句: 标号:标号: 前缀前缀 助记符助记符 操作数操作数,操作数操作数 ;注释;注释指令的符号地址指令的符号地址标号后要有冒号标号后要有冒号操作码操作码注释前加分号注释前

58、加分号344指示性语句格式名字名字 伪指令助记符伪指令助记符 操作数操作数 ,操作数,操作数, ;注释;注释变量的符号地址变量的符号地址其后不加冒号其后不加冒号指示性语句中至指示性语句中至少有一个操作数少有一个操作数3453. 标号、名字n标号后有冒号,在指令性语句前;名字后不加标号后有冒号,在指令性语句前;名字后不加冒号,在指示性语句前。冒号,在指示性语句前。n英文字母、数字及专用字符组成英文字母、数字及专用字符组成, ,最大长度不最大长度不能超过能超过3131个个, ,且不能由数字打头且不能由数字打头, ,不能用保留字不能用保留字( (如寄存器名如寄存器名, ,指令助记符指令助记符, ,伪

59、指令伪指令) )。 3464. 操作数寄存器寄存器存储器单元存储器单元常量常量变量或标号变量或标号表达式表达式347常 量n数字常量数字常量n字符串常量字符串常量n例:例:A nMOV AL,An例:例:ABCD汇编时被译成对应的汇编时被译成对应的ASCII码码用单引号引起的字符或字符串用单引号引起的字符或字符串348变 量n代表内存中的数据区,程序中视为存储器代表内存中的数据区,程序中视为存储器操作数操作数n变量的属性:变量的属性: 变量所在段的段地址变量所在段的段地址 变量单元地址与段首地址之变量单元地址与段首地址之 间的位移量。间的位移量。 字节型、字型和双字型字节型、字型和双字型段段

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论