微机原理与接口技术ppt课件.ppt_第1页
微机原理与接口技术ppt课件.ppt_第2页
微机原理与接口技术ppt课件.ppt_第3页
微机原理与接口技术ppt课件.ppt_第4页
微机原理与接口技术ppt课件.ppt_第5页
已阅读5页,还剩676页未读 继续免费阅读

下载本文档

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

文档简介

微机原理与接口技术,大家好!,1,课程目标,掌握:微型计算机的基本工作原理汇编语言程序设计方法微型计算机接口技术建立微型计算机系统的整体概念,形成微机系统软硬件开发的初步能力,2,教材及实验指导书,教材:微机原理与接口技术(第3版).冯博琴,吴宁主编.清华大学出版社实验指导书微机原理与接口技术实验指导书(讲义)陈文革,吴宁,夏秦编.西安交通大学微机原理与接口技术题解及实验指导(第3版).吴宁,陈文革编.清华大学出版社,3,第1章微型计算机基础概论,主要内容:微机系统的组成计算机中的编码、数制及其转换无符号二进制数的运算算术运算和逻辑运算运算中的溢出机器数的表示及运算基本逻辑门及译码器,4,一、微型计算机系统,微型机的工作原理微机系统的基本组成,5,1.计算机的工作原理,冯诺依曼计算机的工作原理存储程序工作原理,6,存储程序原理,将计算过程描述为由许多条指令按一定顺序组成的程序,并放入存储器保存指令按其在存储器中存放的顺序执行;由控制器控制整个程序和数据的存取以及程序的执行。,7,冯诺依曼计算机体系结构,运算器,存储器,控制器,输入设备,输出设备,8,冯诺依曼机的工作过程,内存中的程序,指令1,指令2,指令n,分析,获取操作数,执行,存放结果,程序计数器PC,地址,CPU,取出,操作数,9,冯诺依曼机的工作过程,取一条指令的工作过程:将指令所在地址赋给程序计数器PC;PC内容送到地址寄存器AR,PC自动加1;把AR的内容通过地址总线送至内存储器,经地址译码器译码,选中相应单元。CPU的控制器发出读命令。在读命令控制下,把所选中单元的内容(即指令操作码)读到数据总线DB。把读出的内容经数据总线送到数据寄存器DR。指令译码因为取出的是指令的操作码,故数据寄存器DR把它送到指令寄存器IR,然后再送到指令译码器ID,10,冯诺依曼机的特点和不足,特点:程序存储,共享数据,顺序执行属于顺序处理机,适合于确定的算法和数值数据的处理。不足:与存储器间有大量数据交互,对总线要求很高;执行顺序有程序决定,对大型复杂任务较困难;以运算器为核心,处理效率较低;由PC控制执行顺序,难以进行真正的并行处理。,11,典型的非冯诺依曼机结构,数据流驱动的计算机结构当指令具有所需数据、且输出端没有数据时就可执行。,DataflowImageProcessingSystem,12,2.系统组成,主机硬件系统外设微机系统系统软件软件系统应用软件,CPU存储器输入/输出接口总线,13,微处理器,微处理器简称CPU,是计算机的核心。主要包括:运算器控制器寄存器组,14,存储器,定义:用于存放计算机工作过程中需要操作的数据和程序。,15,有关内存储器的几个概念,内存单元的地址和内容内存容量内存的操作内存的分类,16,内存单元的地址和内容,内存按单元组织每单元都对应一个地址,以方便对单元的寻址,10110110,38F04H,内存地址,单元内容,17,内存容量,内存容量:所含存储单元的个数,以字节为单位内存容量的大小依CPU的寻址能力而定实地址模式下为CPU地址信号线的位数,18,内存操作,读:将内存单元的内容取入CPU,原单元内容不改变;写:CPU将信息放入内存单元,单元中原来的内容被覆盖。,19,内存储器的分类,随机存取存储器(RAM)只读存储器(ROM),按工作方式可分为,20,输入/输出接口,接口是CPU与外部设备间的桥梁,CPU,I/O接口,外设,21,接口的分类,串行接口并行接口,数字接口模拟接口,输入接口输出接口,22,接口的功能,数据缓冲寄存;信号电平或类型的转换;实现主机与外设间的运行匹配。,23,总线,基本概念分类工作原理常用系统总线标准及其主要技术指标(具体内容见后续课程),24,软件系统,软件:为运行、管理和维护计算机系统或为实现某一功能而编写的各种程序的总和及其相关资料。,系统软件,应用软件,操作系统编译系统网络系统工具软件,软件,25,二、计算机中的数制和编码,数制和编码的表示各种计数制之间的相互转换,26,1.常用计数法,十进制(D)二进制(B)十六进制(H),27,例:,234.98D或(234.98)D1101.11B或(1101.11)BABCD.BFH或(ABCD.BF)H,28,2.各种进制数间的转换,非十进制数到十进制数的转换十进制到非十进制数的转换二进制与十六进制数之间的转换,29,非十进制数到十进制数的转换,按相应的权值表达式展开例: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.5,30,十进制到非十进制数的转换,到二进制的转换:对整数:除2取余;对小数:乘2取整。到十六进制的转换:对整数:除16取余;对小数:乘16取整。,31,二进制与十六进制间的转换,用4位二进制数表示1位十六进制数例:25.5=11001.1B=19.8H11001010.0110101B=CA.6AH,32,3.计算机中的编码,BCD码用二进制编码表示的十进制数ASCII码西文字符编码,33,BCD码,压缩BCD码用4位二进制码表示一位十进制数每4位之间有一个空格扩展BCD码用8位二进制码表示一位十进制数,每4位之间有一个空格。,34,BCD码与二进制数之间的转换,先转换为十进制数,再转换二进制数;反之同样。例:(00010001.00100101)BCD=11.25=(1011.01)B,35,ASCII码,西文字符的编码,一般用7位二进制码表示。D7位为校验位,默认情况下为0。要求:理解校验位的作用熟悉0-F的ASCII码,36,ASCII码的奇偶校验,奇校验加上校验位后编码中“1”的个数为奇数。例:A的ASCII码是41H(1000001B)以奇校验传送则为C1H(11000001B)偶校验加上校验位后编码中“1”的个数为偶数。上例若以偶校验传送,则为41H。,37,三、无符号二进制数的运算,算术运算逻辑运算,无符号数有符号数,二进制数的运算,38,主要内容,无符号二进制数的算术运算无符号数的表达范围运算中的溢出问题无符号数的逻辑运算基本逻辑门和译码器,39,1.无符号数的算术运算,加法运算1+1=0(有进位)减法运算0-1=1(有借位)乘法运算除法运算,40,乘除运算例,000010110100=00101100B000010110100=00000010B即:商=00000010B余数=11B,41,2.无符号数的表示范围:,0X2n-1若运算结果超出这个范围,则产生溢出。对无符号数:运算时,当最高位向更高位有进位(或借位)时则产生溢出。,42,例:,最高位向前有进位,产生溢出,43,3.逻辑运算,与、或、非、异或掌握:与、或、非门逻辑符号和逻辑关系(真值表);与非门、或非门的应用。,44,“与”、“或”运算,“与”运算:任何数和“0”相“与”,结果为0。“或”运算:任何数和“1”相“或”,结果为1。,45,“非”、“异或”运算,“非”运算按位求反“异或”运算相同则为0,相异则为1,46,4.译码器,掌握74LS138译码器各引脚功能输入端与输出端关系(真值表),47,74LS138译码器,主要引脚及功能,48,三、机器数(有符号数)的运算,49,计算机中符号数的表示,机器数计算机中的数据构成:符号位+真值,“0”表示正“1”表示负,50,例,+52=+0110100=00110100符号位真值,-52=-0110100=10110100符号位真值,51,1.符号数的表示,机器数的表示方法:原码反码补码,52,原码,最高位为符号位(用“0”表示正,用“1”表示负),其余为真值部分。优点:真值和其原码表示之间的对应关系简单,容易理解;缺点:计算机中用原码进行加减运算比较困难0的表示不唯一。,53,数0的原码,8位数0的原码:+0=00000000-0=10000000即:数0的原码不唯一。,54,反码,对一个机器数X:若X0,则X反=X原若X0,则X补=X反=X原若XBX若AXBXOF和SF状态不同AXBX,238,CMP指令例,LEABX,MAXLEASI,BUFMOVCL,20MOVAL,SINEXT:INCSICMPAL,SIJNCGOON;CF=0转移XCHGSI,AL,GOON:DECCLJNZNEXTMOVBX,ALHLT,239,程序功能,MAX,BUF,XXH,XXH,XXH,在20个数中找最大的数,并将其存放在MAX单元中。,240,三、乘法指令,无符号的乘法指令MUL*带符号的乘法指令IMUL,注意点:乘法指令采用隐含寻址,隐含的是存放被乘数的累加器AL或AX及存放结果的AX,DX.,241,1.无符号数乘法指令,格式:MULOPRD不能是立即数操作:OPRD为字节数OPRD为16位数,ALOPRD,AXOPRD,DXAX,AX,242,无符号数乘法指令例,MULBYTEPTRBX,BX,XXH,ALXXH,AX,243,四、除法指令,无符号除法指令格式:DIVOPRD有符号除法指令格式:IDIVOPRD,244,除法指令的操作,若OPRD是字节数执行:AX/OPRD结果:AL=商AH=余数若OPRD是双字节数执行:DXAX/OPRD结果:AX=商DX=余数,指令要求被除数是除数的双倍字长,245,五、BCD码调整指令,将指令执行的二进制运算结果调整为压缩BCD码或扩展BCD码表示的十进制数。共6条,均为隐含寻址方式,隐含的操作数是AL或AL、AH;不能单独使用,要紧跟在相应的算术运算指令之后;,246,逻辑运算和移位指令,247,指令类型,逻辑运算与,或,非,异或移位操作非循环移位,循环移位,248,一、逻辑运算,逻辑运算指令对操作数的要求大多与MOV指令相同。“非”运算指令要求操作数不能是立即数;除“非”运算指令外,其余指令的执行都会使标志位OF=CF=0,249,1.“与”指令:,格式:ANDOPRD1,OPRD2操作:两操作数相“与”,结果送目标地址。,250,“与”指令的应用,实现两操作数按位相与的运算ANDBL,SI使目标操作数的某些位不变,某些位清零ANDAL,0FH在操作数不变的情况下使CF和OF清零ANDAX,AX,251,“与”指令应用例,从地址为3F8H端口中读入一个字节数,如果该数bit1位为1,则可从38FH端口将DATA为首地址的一个字输出,否则就不能进行数据传送。编写相应的程序段。,252,“与”指令应用例,开始,取待输出数的偏移地址,读入状态字,测试bit1位状态,Bit1=1?,取输入口地址,取输出口地址,输出一个字,N,Y,253,“与”指令应用例,LEASI,DATAMOVDX,3F8HWATT:INAL,DXANDAL,02HJZWATT;ZF=1转移MOVDX,38FHMOVAX,SIOUTDX,AX,254,2.“或”运算指令,格式:OROPRD1,OPRD2操作:两操作数相“或”,结果送目标地址,255,“或”指令的应用,实现两操作数相“或”的运算ORAX,DI使某些位不变,某些位置“1”ORCL,0FH在不改变操作数的情况下使OF=CF=0ORAX,AX,256,“或”指令的应用例,ORAL,ALJPEGOONORAL,80HGOON:.,PF=1转移,257,“或”指令的应用,将一个二进制数9变为字符9,如何实现?,258,3.“非”运算指令,格式:NOTOPRD操作:操作数按位取反再送回原地址注:指令中的操作数不能是立即数指令的执行对标志位无影响例:NOTBYTEPTRBX,259,4.“异或”运算指令,格式:XOROPRD1,OPRD2操作:两操作数相“异或”,结果送目标地址例:XORBL,80HXORAX,AX,260,5.“测试”指令,格式:TESTOPRD1,OPRD2操作:执行“与”运算,但运算的结果不送回目标地址。应用:常用于测试某些位的状态,261,例:,从地址为3F8H的端口中读入一个字节数,当该数的bit1,bit3,bit5位同时为1时,可从38FH端口将DATA为首地址的一个字输出,否则就不能进行数据传送。编写相应的程序段。,262,源程序代码:,LEASI,DATAMOVDX,3F8HWATT:INAL,DXMOVDX,38FHMOVAX,SIOUTDX,AX,ANDAL,2AHCMPAL,2AHJNZWATT,TESTAL,02HJZWATT;ZF=1转移TESTAL,08HJZWATTTESTAL,20HJZWATT,ANDAL,2AHXORAL,2AHJNZWATT,263,二、移位指令,非循环移位指令循环移位指令,注:移动一位时由指令直接给出;移动两位及以上,则移位次数由CL指定。,264,1.非循环移位指令,逻辑左移算术左移逻辑右移算术右移,265,算术左移和逻辑左移,算术左移指令:SALOPRD,1SALOPRD,CL逻辑左移指令:SHLOPRD,1SHLOPRD,CL,有符号数,无符号数,266,逻辑右移,格式:SHROPRD,1SHROPRD,CL,0,CF,无符号数的右移,267,逻辑右移例:,MOVAL,68HMOVCL,2SHRAL,CL,0,CF,011010,AL,0,0,0,00110100,AL,CF,0,0,00011010,AL,CF,0,0,移动1次,移动2次,268,算术右移,格式:SAROPRD,1SAROPRD,CL,有符号数的右移,CF,269,非循环移位指令的应用,左移可实现乘法运算右移可实现除法运算,270,2.循环移位指令,不带进位位的循环移位带进位位的循环移位,左移ROL右移ROR,左移RCL右移RCR,指令格式、对操作数的要求与非循环移位指令相同,271,不带进位位的循环移位,CF,CF,272,带进位位的循环移位,CF,CF,273,循环移位指令的应用,用于对某些位状态的测试;高位部分和低位部分的交换;与非循环移位指令一起组成32位或更长字长数的移位。,P124例3-34,P124例3-35,274,程序功能,将1000H开始存放的4个压缩BCD码转换为ASCII码存放在3000H开始的单元中去。,12H,34H,56H,78H,1000H,3000H,275,程序例,MOVSI,1000HMOVDI,3000HMOVCX,4Next:MOVAL,SIMOVBL,ALANDAL,0FHORAL,30HMOVDI,ALINCDIMOVAL,BL,PUSHCXMOVCL,4SHRAL,CLORAL,30HMOVDI,ALINCDIINCSIPOPCXDECCXJNZNextHLT,276,串操作指令,277,串操作指令说明,针对数据块或字符串的操作;可实现存储器到存储器的数据传送;待操作的数据串称为源串,目标地址称为目标串。,278,串操作指令的特点,源串一般存放在数据段,偏移地址由SI指定。允许段重设;目标串必须在附加段,偏移地址由DI指定;指令自动修改地址指针,修改方向由DF决定。DF=0DF=1数据块长度值由CX指定可增加自动重复前缀以实现自动修改CX内容。,增地址方向;,减地址方向;,279,重复前缀,无条件重复REP条件重复REPE相等重复REPZ为零重复REPNE不相等重复REPNZ不为零重复,CX0ZF=1,CX0ZF=0,CX0重复,280,串操作指令流程(以传送操作为例),取源串地址,取目标串地址,设串长度,传送一个字节或字,修改地址指针,修改串长度值,传送完否?,N,Y,设操作方向,281,串操作指令,串传送MOVS串比较CMPS串扫描SCAS串装入LODS串送存STOS,282,1.串传送指令,格式:MOVSOPRD1,OPRD2MOVSBMOVSW串传送指令常与无条件重复前缀连用,283,串传送指令,对比用MOV指令和MOVS指令实现将200个字节数据从内存的一个区域送到另一个区域的程序段。,284,串传送指令例,用串传送指令实现200个字节数据的传送:LEASI,MEM1LEADI,MEM2MOVCX,200CLDREPMOVSBHLT,285,2.串比较指令,格式:CMPSOPRD1,OPRD2CMPSBCMPSW串比较指令常与条件重复前缀连用,指令的执行不改变操作数,仅影响标志位。前缀的操作对标志位不影响,286,串比较指令例,测试200个字节数据是否传送正确:,LEASI,MEM1LEADI,MEM2MOVCX,200CLDREPECMPSBTESTCX,00FFH,JZSTOPDECSIMOVAL,SIMOVBX,SISTOP:HLT,287,3.串扫描指令,格式:SCASOPRDSCASBSCASW执行与CMPS指令相似的操作,只是这里的源操作数是AX或AL,目标操作数,288,串扫描指令的应用,常用于在指定存储区域中寻找某个关键字。,289,串装入指令,格式:LODSOPRDLODSBLODSW操作:对字节:对字:,源操作数,DS:SI,DS:SI,AL,AX,290,4.串装入指令,用于将内存某个区域的数据串依次装入累加器,以便显示或输出到接口。LODS指令一般不加重复前缀。,291,5.串存储指令,格式:STOSOPRDSTOSBSTOSW操作:对字节:AL对字:AX,目标操作数,ES:DI,ES:DI,292,串存储指令的应用,常用于将内存某个区域置同样的值此时:将待送存的数据放入AL(字节数)或AX(字数据);确定操作方向(增地址/减地址)和区域大小(串长度值);使用串存储指令+无条件重复前缀,实现数据传送。,293,串存储指令例内存某个区域清零,将内存某单元清零设计思想:,区域首地址送ES:DI,串长度送CX,置方向标志DF,0送累加器AL,执行串送存指令,294,程序控制指令,转移指令循环控制过程调用中断控制,295,程序的执行方向,程序控制类指令的本质是:控制程序的执行方向决定程序执行方向的因素:CS,IP控制程序执行方向的方法:修改CS和IP,则程序转向另一个代码段执行;仅修改IP,则程序将改变当前的执行顺序,转向本代码段内其它某处执行。,296,一、转移指令,无条件转移指令无条件转移到目标地址,执行新的指令有条件转移指令在具备一定条件的情况下转移到目标地址,通过修改指令的偏移地址或段地址及偏移地址实现程序的转移,297,1.无条件转移指令,格式:JMPOPRD,目标地址,与JMP在同一代码段,与JMP不在同一代码段,原则上可实现在整个内存空间的转移,298,无条件段内转移,转移的目标地址在当前代码段内,段地址不改变。即:目标地址是16位偏移地址。,指令中直接给出目标地址,由指令中的寄存器或存储器操作数指出目标地址,段内直接转移,段内间接转移,299,段内直接转移,转移的目标地址由指令直接给出格式:JMPLabel,近地址标号,300,段内直接转移示图,JMP,Label,代码段,位移量,下一条要执行指令的偏移地址=当前IP+位移量,JMPLabel,301,段内间接转移,段内间接转移转移的目标地址存放在某个16位寄存器或存储器的某两个单元中例:JMPBX若:BX=1200H则:转移的目标地址=1200H,JMP,代码段,1200H,MOV,302,段内间接转移例,JMPWORDPTRBX设:BX=1200H,JMP,代码段,数据段,BX=1200,XXH,XXH,IP,指令码,303,无条件段间转移,转移的目标地址不在当前代码段内。目标地址为32位,包括段地址和偏移地址。,指令中直接给出目标地址,由指令中的32位存储器操作数指出目标地址,段间直接转移,段间间接转移,304,段间直接转移,段内直接转移转移的目标地址由指令直接给出格式:JMPFARLabel,远地址标号,305,段间直接转移示图,JMP,Label,代码段1,Label与JMP之间的位移量,代码段2,XXH,XXH,XXH,XXH,IP,CS,306,段间间接转移,段内间接寻址转移的目标地址由指令中的32位操作数给出例:JMPDWORDPTRBX,XXH,XXH,XXH,XXH,BX,IP,CS,JMP,指令码,代码段1,代码段2,数据段,307,无条件转移指令例,(1)2000:0100MOVAX,1200H(2)2000:0103JMPNEXT(3)2000:0120NEXT:MOVBX,1200H(4)JMPBX(5)2000:1200,308,无条件转移指令例,MOVSI,1122HMOVWORDPTRSI,0120HADDSI,2MOVWORDPTRSI,0122H,JMPDWORDPTRSI-2,JMPWORDPTRSI,IP,CS,IP,309,2.条件转移指令,在满足一定条件下,程序转移到目标地址继续执行条件转移指令均为段内短转移,即转移范围为:-128-+127,310,条件转移指令的应用,几种条件转移指令的应用JC/JNC判断CF的状态。常用于比大小JZ/JNZ判断ZF的状态。常用于循环体的结束判断JO/JNO判断OF的状态。常用于有符号数溢出的判断JP/JPE判断PF的状态。用于判断运算结果低8位中1的个数是否为偶数JA/JAE/JB/JBE判断CF或CF+ZF的状态。常用于无符号数的大小比较,311,转移指令例,统计内存数据段中以TABLE为首地址的100个8位符号数中正数、负数和零元数的个数。,312,转移指令例(流程图),将存放各元素个数的单元清零,取首地址设串长度,取一个字节数,正数个数加1,零元素加1,为负?,为零?,负数个数加1,N,Y,N,Y,p133,313,二、循环控制指令,循环范围:以当前IP为中心的-128+127范围内循环。循环次数由CX寄存器指定。循环指令:,LOOP*LOOPZ*LOOPNZ,无条件循环指令,条件循环指令,314,无条件循环指令,格式:LOOPLABEL循环条件:CX0操作:DECCXJNZ符号地址,P133例3-44,315,三、过程调用和返回,用于调用一个子过程;子过程由程序员预先设计并装入内存子过程执行结束后要返回原调用处,调用程序,断点,入口地址,子程序,316,调用指令的执行过程,保护断点;将调用指令的下一条指令的地址(断点)压入堆栈获取子过程的入口地址;子过程第1条指令的偏移地址执行子过程,含相应参数的保存及恢复;恢复断点,返回原程序。将断点偏移地址由堆栈弹出,317,过程调用,段内调用段间调用,段内直接调用段内间接调用,段间直接调用段间间接调用,318,1.段内调用,被调用程序与调用程序在同一代码段调用前只需保护断点的偏移地址格式:CALLNEARPROC执行过程:,近过程名,代码段1,调用程序,被调用程序,代码段1,将断点的偏移地址压入堆栈根据过程名找子程序入口,319,段内调用例,(1)CALLTIMRE(2)CALLWORDPTRSI,直接调用,间接调用,44H,33H,CALL,代码段,数据段,设:SI=1200HCS=6000H,1200H,执行第(2)条指令后:,6000H,CS=,3344H,IP=,320,2.段间调用,子过程与原调用程序不在同一代码段断点保护时的压栈顺序:先将断点的CS压栈,再压入IP。,调用前需保护断点的段基地址和偏移地址,321,段间调用例,格式:CALLFARPROC格式例:CALLFARTIMRECALLDWORDPTRSI,XXH,XXH,CALL,代码段,数据段,SI,XXH,XXH,CS,IP,322,3.返回指令,功能:从堆栈中弹出断点地址,返回原程序格式:RETRET指令一般位于子程序的最后。,323,四、中断指令,中断中断源中断的类型中断指令引起CPU产生一次中断的指令,324,中断与过程调用:,中断是随机事件或异常事件引起,调用则是事先已在程序中安排好;响应中断请求不仅要保护断点地址,还要保护FLAGS内容;调用指令在指令中直接给出子程序入口地址,中断指令只给出中断向量码,入口地址则在向量码指向的内存单元中。,325,1.中断指令,格式:INTn说明:n4,中断类型码n=0255,n4,XXH,XXH,XXH,XXH,入口的段地址,入口的偏移地址,存放中断服务子程序入口地址的单元的偏移地址,代码段,数据段,该单元在数据段,段地址=DS,326,中断指令的执行过程,将FLAGS压入堆栈;将INT指令的下一条指令的CS、IP压栈;由n4得到存放中断向量的地址;将中断向量(中断服务程序入口地址)送CS和IP寄存器;转入中断服务程序。,327,中断指令的执行过程,n4,22H,11H,00H,67H,IP,CS,68122H,MOV,代码段,数据段,堆栈段,SP,FLAGSH,FLAGSL,IPH,CSL,CSH,IPL,SP,SP,SP,328,中断指令例,执行程序段:CSIP6200H:0110HINT21H6200H:0112HMOVAX,BX,12H,01H,00H,62H,SP=1200,FLAGSL,FLAGSH,SP=11FA,执行INT指令后,堆栈段,329,中断指令例,执行INT21H指令后IP=21H4CS=(21H4)+2,0084H,23H,11H,00H,20H,IP,CS,数据段,代码段,XX,21123H,中断服务子程序,330,2.溢出中断指令,格式:INTO若OF=1,则启动一个类型为4的中断过程,给出一个出错标志,如果OF=0,不做任何操作。INTO指令通常安排在有符号数加减运算指令之后。,相当于,INT4,331,3.中断返回指令,格式:IRET中断服务程序的最后一条指令,负责,恢复断点恢复标志寄存器内容,332,六、处理器控制指令,对标志位的操作与外部设备的同步,说明见p139表,333,结束语:,掌握:指令的格式及意义;指令对操作数的要求及对标志位的影响;指令的应用。,谢谢大家!,334,第4章汇编语言程序设计,335,主要内容,汇编语言源程序的结构汇编语言语句格式伪指令功能调用汇编语言程序设计,336,4.1汇编语言源程序,了解:汇编语言源程序的结构汇编语言语句类型及格式,337,一、汇编语言源程序结构,338,1.汇编语言源程序与汇编程序,汇编语言源程序汇编程序,用助记符编写,汇编程序,汇编语言源程序,机器语言目标程序,源程序的编译程序,339,2.汇编语言程序设计与执行过程,输入汇编语言源程序(EDIT)汇编(MASM)链接(LINK)调试(TD),源文件.ASM,目标文件.OBJ,可执行文件.EXE,最终程序,340,二、汇编语言语句类型及格式,341,1.汇编语言语句类型,指令性语句指示性语句,CPU执行的语句,能够生成目标代码,CPU不执行,而由汇编程序执行的语句,不生成目标代码,342,2.汇编语言语句格式,指令性语句:标号:前缀助记符操作数,操作数;注释,指令的符号地址标号后要有冒号,操作码,注释前加分号,343,指示性语句格式,名字伪指令助记符操作数,操作数,;注释,变量的符号地址其后不加冒号,指示性语句中至少有一个操作数,344,3.标号、名字,标号后有冒号,在指令性语句前;名字后不加冒号,在指示性语句前。英文字母、数字及专用字符组成,最大长度不能超过31个,且不能由数字打头,不能用保留字(如寄存器名,指令助记符,伪指令)。,345,4.操作数,寄存器存储器单元常量变量或标号表达式,346,常量,数字常量字符串常量例:AMOVAL,A例:ABCD,汇编时被译成对应的ASCII码41H,42H,43H,44H,用单引号引起的字符或字符串,347,变量,代表内存中的数据区,程序中视为存储器操作数变量的属性:变量所在段的段地址变量单元地址与段首地址之间的位移量。字节型、字型和双字型,段值,偏移量,类型,348,表达式,算术运算逻辑运算*关系运算取值运算和属性运算其它运算,349,算术运算和逻辑运算符,算术运算符+,-,*,/,MOD逻辑运算符AND,OR,NOT,XOR例:MOVAL,8AND4MOVAL,8+4-1,350,取值运算符,取得其后变量或标号的偏移地址取得其后变量或标号的段地址,TYPE取变量的类型LENGTH取所定义存储区的长度SIZE取所定义存储区的字节数,用于分析存储器操作数的属性获取变量的属性值,OFFSET,SEG,351,取值运算符例,MOVAX,SEGDATAMOVDS,AXMOVBX,OFFSETDATALEABX,DATA,等价于,352,取值运算符例,若BUFFER存储区用如下伪指令定义:BUFFERDW200DUP(0)则:TYPEBUFFER等于2LENGTHBUFFER等于200SIZEBUFFER等于400,353,属性运算符,用于指定其后存储器操作数的类型运算符:PTR例:MOVBYTRPTRBX,12H,354,其它运算符,方括号:段重设符段寄存器名:,方括号中内容为操作数的偏移地址,用于修改默认的段基地址,355,4.2伪指令,掌握:伪指令的格式及实现的操作伪指令的应用,356,伪指令,由汇编程序执行的“指令系统”作用:定义变量;分配存储区定义逻辑段;指示程序开始和结束;定义过程等。,357,常用伪指令,数据定义伪指令符号定义伪指令段定义伪指令结束伪指令过程定义伪指令宏命令伪指令,358,一、数据定义伪指令,用于定义数据区中变量的类型及大小格式:变量名伪指令助记符操作数,;注释,符号地址,定义变量类型,定义变量值及区域大小,359,1.数据定义伪指令助记符,DB定义的变量为字节型DW定义的变量为字类型(双字节)DD定义的变量为双字型(4字节)DQ定义的变量为4字型(8字节)DT定义的变量为10字节型,360,数据定义伪指令例,DATA1DB11H,22H,33H,44HDATA2DW11H,22H,3344HDATA3DD11H*2,22H,33445566H,以上变量在内存中的存放形式,361,数据定义伪指令例_变量在内存中的分布,362,数据定义伪指令的几点说明,伪指令的性质决定所定义变量的类型;定义字符串必须用DB伪指令例:DATA1DBABCD,66H,A,B,C,D,41H,42H,43H,44H,66H,363,2.重复操作符,作用:为一个数据区的各单元设置相同的初值目的:常用于声明一个数据区格式:变量名伪指令助记符nDUP(初值,)例:BW20DUP(0)M1DB10DUP(0),364,3.“?”的作用,表示随机值,用于预留存储空间MEM1DB34H,A,?DW20DUP(?),预留40个字节单元,每单元为随机值,随机数占1个字节单元,365,数据定义伪指令例,M1DBHowareyou?M2DW3DUP(11H),3344HDB4DUP(?)M3DB3DUP(22H,11H,?),366,数据定义伪指令例,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,367,二、符号定义伪指令,格式:符号名EQU表达式操作:用符号名取代后边的表达式,不可重新定义例:CONSTANTEQU100VAREQU30H+99H,EQU说明的表达式不占用内存空间,368,三、段定义伪指令,说明逻辑段的起始和结束;说明不同程序模块中同类逻辑段之间的联系形态,369,段定义伪指令格式,段名SEGMENT定位类型组合类型类别段名ENDS,说明逻辑段的起点,说明不同模块中同名段的组和连接方式,370,定位类型,PARA:段的起点从节边界开始(16个字节为1节)BYTE:段的起点从存储器任何地址开始WORD:段的起点从偶地址开始PAGE:段的起点从页边界开始(256个字节为1页),371,组合类型,与其它模块中的同名段在满足定位类型的前提下具有的组合方式:NONE:不组合PUBLIC:依次连接(顺序由LINK程序确定)COMMON:覆盖连接STACK:堆栈段的依次连接AT表达式:段定义在表达式值为段基的节边界MEMORY:相应段在同名段的最高地址处。,372,类别,不同模块连接时将相同类别的段放在连续的内存区域中,373,段定义伪指令例,DATASEGMENTMEM1DB11H,22HMEM2DBHello!MEM3DW2DUP(?)DATAENDS,变量在逻辑段中的位置就代表了它的偏移地址,表示变量所在逻辑段的段地址,表示变量的类型,374,四、设定段寄存器伪指令,说明所定义逻辑段的性质格式:ASSUME段寄存器名:段名,段寄存器名:段名,,375,五、结束伪指令,表示源程序结束格式:END标号,376,汇编语言源程序结构,数据段名SEGMENT数据段名ENDS附加段名SEGMENT附加段名ENDS,堆栈段名SEGMENT堆栈段名ENDS代码段名SEGMENT代码段名ENDSEND,377,一个完整源程序结构例,DSEGSEGMENTDATA1DB1,2,3DUP(?)DATA2DW1234HDSEGENDSESEGSEGMENTDB20DUP(?)ESEGENDSSSEGSEGMENTSTACKSTACKDB200DUP(?)SSEGENDS,378,一个完整源程序结构例,CSEGSEGMENTASSUMECS:CSEG,DS:DSEG,ES:ESEG,SS:SSEGSTART:MOVAX,DSEGMOVDS,AXMOVAX,ESEGMOVES,AXMOVAX,SSEGMOVSS,AXCSEGENDSENDSTART,源程序代码,段寄存器初始化将段地址送相应的段寄存器,379,六、过程定义伪指令,用于定义一个过程体格式:过程名PROCNEAR/FARRET过程名ENDP,P157例,过程入口的符号地址,380,过程定义及调用例,定义延时子程序DELAYPROCPUSHBXPUSHCXMOVBL,2NEXT:MOVCX,4167W10M:LOOPW10MDECBLJNZNEXTPOPCXPOPBXRETDELAYENDP,调用延时子程序:CALLDELAY,381,七、宏命令伪指令,源程序中由汇编程序识别的具有独立功能的一段程序代码格式:宏命令名MACROENDM,宏体,宏,382,八、其它伪指令,段内程序代码或变量的起始偏移地址格式:ORG表达式例:ORG2000H,计算值为非负常数,ORG,383,其它伪指令,NAME-为目标程序设定一个名字格式:NAME模块名TITLE-为程序清单指定打印标题格式:TITLE标题名,384,4.3功能调用,DOS功能调用BIOS功能调用,385,DOS功能调用,包含多个子功能的功能包;用软中断指令调用,中断类型码固定为21H;各子功能采用功能号来区分。,386,DOS功能调用,设备管理目录管理文件管理其它,387,DOS功能调用,调用格式:MOVAH,功能号INT21H,388,一、单字符输入,调用方法:MOVAH,01INT21H输入的字符在AL中,389,单字符输入例,GET_KEY:MOVAH,1INT21HCMPAL,YJZYESCMPAL,NJZNOJMPGET_KEYYES:NO:,交互式应答程序,390,二、字符串输入,注意问题:调用格式字符输入缓冲区的定义,391,1.调用格式,功能号OAH字符串在内存中的存放地址INT21H,AH,DS:DX,392,2.定义字符缓冲区,用户自定义缓冲区格式:,0DH,N1,N2,整个缓冲区,最大可键入字符数,实际键入字符数,存放键入的字符,存放字符个数:255,393,输入字符串程序段,DAT1DB20,?,20DUP(?)LEADX,DAT1MOVAH,0AHINT21H,在数据段中定义,394,输入缓冲区,14H,?,20个字节,定义后的输入缓冲区初始状态:,395,三、单字符显示输出,功能号O2H待输出字符INT21H,AH,DL,396,单字符显示输出例,MOVAH,02MOVDL,41HINT21H,执行结果:屏幕显示A,397,四、字符串输出显示,功能号O9H待输出字符串的偏移地址INT21H,AH,DS:DX,398,字符串输出显示,被显示的字符串必须以$结束,且所显示的内容不应出现非可见的ASCII码,399,字符串输出显示例,DATASEGMENTMESS1DBInputString:,0DH,0AH,$DATAENDSCODESEGMENTMOVAH,09MOVDX,OFFSETMESS1INT21H,400,4.4汇编语言程序设计,设计步骤:根据实际问题抽象出数学模型确定算法画程序流程图分配内存工作单元和寄存器程序编码调试,401,程序流程图符号,起始:,功能:,判断:,子过程:,402,汇编语言程序结构,顺序结构循环结构先判定型后判定型分枝结构单分枝多分枝子程序结构,403,本章注意点,完整的汇编语言源程序结构定义逻辑段,说明段的含义,初始化段寄存器伪指令数据定义方式字符及字符串的输入和显示输出字符输入缓冲区的定义,输出字符串的定义源程序的编写几种结构(顺序、循环、分枝等),谢谢大家!,404,第5章存储器系统,405,主要内容:,存储器系统的概念半导体存储器的分类及其特点半导体存储芯片的外部特性及其与系统的连接存储器接口设计(存储器扩展技术)高速缓存,406,5.1概述,主要内容:存储器系统及其主要技术指标半导体存储器的分类及特点两类半导体存储器的主要区别,407,一、存储器系统,408,1.存储器系统的一般概念,将两个或两个以上速度、容量和价格各不相同的存储器用硬件、软件或软硬件相结合的方法连接起来系统的存储速度接近最快的存储器,容量接近最大的存储器。,构成存储系统。,409,2.两种存储系统,在一般计算机中主要有两种存储系统:,Cache存储系统,主存储器高速缓冲存储器,虚拟存储系统,主存储器磁盘存储器,410,Cache存储系统,对程序员是透明的目标:提高存储速度,Cache,主存储器,411,虚拟存储系统,对应用程序员是透明的。目标:扩大存储容量,主存储器,磁盘存储器,412,3.主要性能指标,存储容量(S)(字节、千字节、兆字节等)存取时间(T)(与系统命中率有关)命中率(H)T=H*T1+(1-H)*T2单位容量价格(C)访问效率(e),413,4.微机中的存储器,通用寄存器组及指令、数据缓冲栈,高速缓存,主存储器,联机外存储器,脱机外存储器,片内存储部件,内存储部件,外存储部件,414,二、半导体存储器,415,1.半导体存储器,半导体存储器由能够表示二进制数“0”和“1”的、具有记忆功能的半导体器件组成。能存放一位二进制数的半导体器件称为一个存储元。若干存储元构成一个存储单元。,416,2.半导体存储器的分类,内存储器,随机存取存储器(RAM)只读存储器(ROM),417,随机存取存储器(RAM),RAM,静态存储器(SRAM)动态存储器(DRAM),418,只读存储器(ROM),只读存储器,掩模ROM一次性可写ROMEPROMEEPROM,419,3.主要技术指标,存储容量存储单元个数每单元的二进制数位数存取时间实现一次读/写所需要的时间存取周期连续启动两次独立的存储器操作所需间隔的最小时间可靠性功耗,420,5.2随机存取存储器,掌握:SRAM与DRAM的主要特点几种常用存储器芯片及其与系统的连接存储器扩展技术,421,一、静态存储器SRAM,422,1.SRAM的特点,存储元由双稳电路构成,存储信息稳定。,p196,423,2.典型SRAM芯片,掌握:主要引脚功能工作时序与系统的连接使用,424,典型SRAM芯片,SRAM6264:容量:8KX8b外部引线图,425,6264芯片的主要引线,地址线:A0-A12;数据线:D0-D7;输出允许信号:OE;写允许信号:WE;选片信号:CS1,CS2。,426,6264的工作过程,读操作写操作,工作时序,427,3.8088总线信号,8088总线,A19-A0,A15-A0,MEMR、MEMW,IOR、IOW,存储器,输入/输出,RD、WR,428,4.6264芯片与系统的连接,D0D7,A0,A12,WE,OE,CS1,CS2,A0,A12,MEMW,MEMR,译码电路,高位地址信号,D0D7,SRAM6264,8088总线,+5V,429,5.存储器编址,00,11,00,00,11,11,00,00,01,01,10,10,低位地址(片内地址),高位地址(选片地址),430,存储器地址,片选地址,片内地址,高位地址,低位地址,内存地址,431,6264芯片的编址,片首地址,A19,A12,A0,A19,A12,A0,0000000000000,XXXXXXX,XXXXXXX,1111111111111,片尾地址,432,存储器编址,

温馨提示

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

评论

0/150

提交评论