《微机原理考前复习串讲.ppt》由会员分享,可在线阅读,更多相关《微机原理考前复习串讲.ppt(136页珍藏版)》请在三一办公上搜索。
1、微机原理及应用总复习串讲,丁 艳,总复习,考试题型:1.填空题(每空1分)10%2.选择填空题(单选,每题1分)10%3.简答题(2题)10%4.指令伪指令(2题)15%5.程序设计 10%6.硬件及程序设计题(4题)45%,第一、二、三类题型多为书中基本概念,请同学们注意看书。第四、五、六类题型请注意课件中讲解的例题、书中例题、上机考试题以及书后练习等。,第一章 基础知识,1理解Bit,byte,word,doubleword 等基本概念2掌握计算机中常用的数制与编码:十进制、二进制数、十六进制的运算和转换;BCD码的加、减运算及调整;常用的ASCII码:数字、大小写英文字母的ASCII码表
2、示数据在内存中的存贮方式3掌握有符号数的表示法、加、减运算及溢出的概念;4掌握“与”、“或”“非”以及“异或”等逻辑运算。,对一个机器数X:若X0,则 X反=X原 且X补=X反=X原若X0,则 X反=对应原码的符号位不变,数值部分按位求反 且 X补=X反+1例:X=-52 X原=1 0110100 X反=1 1001011 X补=X反+1=11001100,有符号数的表示,思考:已知某一机器码为C7H,当其为有符号数和无符号数是分别表示的十进制数为多少?,习 题,有一个16位的数值0101,0000,0100,0011:,(1)如果它是一个二进制数,和它等值的十进制数是多少?,(2)如果它们是
3、ASCII码字符,则是什么字符?,(3)如果它们是压缩的BCD码,它表示的数是什么?,20547,答:,答:,PC,答:,5043,带符号数的运算时的溢出判断,两个有符号数进行加减运算时,如果结果超出可表示的有效范围就会发生溢出。其判定准则是:当两个同符号数相加或异符号数相减时:(1)如果次高位向最高位有进位(或借位),而最高位向前位无进位(或借位),则结果发生溢出;(2)如果次高位向最高位无进位(或借位),而最高位向前位有进位(或借位),则结果也发生溢出;,带符号数的表示范围,(1)8位二进制数,原码、反码和补码所能表示的范围为:原码、反码:-127+127 补码:-128+127 当运算结
4、果超出以上范围时,就会产生溢出。(2)16位二进制数,原码、反码和补码所能表示的范围为:原码、反码:-32767+32767 补码:-32768+32767 当运算结果超出以上范围时,就会产生溢出。,例题,计算(+72)+(-98)?溢出标志位OF=?(+72)10=(+1001000)2,(+1001000)补=01001000(-98)10=(-1100010)2,(-1100010)补=10011110 01001000+72+10011110+-98 11100110-26 注意:本题中,一个正数加上一个负数,其结果在二进制补码的表示范围之内,无溢出。在运算时可从C6=0,C7=0,而
5、判断得知无溢出,故OF=0。,例题,计算(+72)-(-98)?溢出标志位OF=?(+72)10=(+1001000)2,(+1001000)补=01001000(-(-98)10)=(+1100010)2,(+1100010)补=01100010 01001000B+72+01100010B+98 10101010B-86 注意:本题中,一个正数减去一个负数,其结果超出二进制补码的表示范围,因此出现溢出错误。在运算时可从C6=1,C7=0,而判断得知产生溢出,OF=1。,第二章 微型计算机系统基础,计算机的组成:CPU、存储器、输入/输出接口、总线三态输出电路 L门、E门的作用及其控制逻辑
6、总线结构和总线分类 控制字的写法、作用,怎样控制信息的往来。存储器(Memory)掌握内存储器的几个概念:内存单元的地址和内容、内存 容量、内存的操作、内存的分类,触发器、寄存器、存储器,第三章 微型计算机的基本工作原理,计算机的组成结合FLASH动画理解简化计算机的工作原理掌握机器周期、机器节拍、取指周期、执行周期等基本概念。,第四章 16位微处理器,1.Intel 8088 CPU 的结构:执行部件及总线接口部件(1)执行部件 EU:通用寄存器(AX、BX、CX、DX);变址寄存器(SI、DI)堆栈指针寄存器(SP);基数指针寄存器(BP);标志寄存器(FR);算术逻辑部件(ALU);(2
7、)总线接口部件 BIU:4个段地址寄存器(CS、DS、SS、ES);指令指针寄存器(IP)20位的地址加法器;六字节的指令队列;(3)标志位:SF、ZF、CF、OF、AF、PF、DF、IF、TF(4)20位的地址加法器:完成逻辑地址与物理地址的转换;(段基址*10H+偏移地址)执行部件及总线接口部件的并行关系,ALU,执行部分控制电路,输入/输出控制电路,地址加法器,20位,16位,指令队列缓冲器,8位,执行部件(EU),总线接口部件(BIU),外部总线,16位,运算寄存器,标志寄存器,通用寄存器,8086CPU结构图,段寄存器,2.存储器结构:按字节编址,最大地址空间为2n个字节。8086、
8、8088可 寻址的存储器空间为1MB;存储器的分段(段基址、段边界、偏移量);(为什么分,怎样分)物理地址与逻辑地址;,物理地址=段基址 X 10H+偏移地址,例:设(CS)=123AH,(IP)=341BH,将要取出的指令的物理地址为:3 4 1 B 偏移地址+1 2 3 A 0 段起始地址 _ 1 5 7 B B 该指令的物理地址,存储单元的表示:560H:1250H,3.8088的总线工作周期 何为总线周期?CPU何时执行总线周期?8088的基本总线周期包 括多少时钟周期?什么情况下要插入Tw等待周期?插入多少个时钟周期取决于什 么因素?Tw与空闲周期的区别?8086/8088CPU读写
9、操作与总线周期(字节读写、字读写)例:判断下列两条指令执行时是否需要执行总线周期。MOV AX,CX MOV AX,BX48088CPU的工作模式(掌握最大、最小工作模式的定义)58088CPU的引脚:地址线、数据线、控制线,输入、输出、双 向,分时复用、控制信号的有效电平(高电平还是低电平有效),8086CPU的引脚信号和功能,20根地址线,其中16根与数据复用,4根与状态复用。16根控制线 1个Vcc电源引脚线 2个GND地(管脚1和20)1个时钟信号 8086/8088 CPU 的第24-31脚在最大模式和最小模式下有不同的名称和定义。,6.系统总线及其作用?8088最小工作模式下的复位
10、与启动操作、总线操作(读、写操作)、总线保持等。RESET 复位信号:复位信号必须为大于4个时钟周期的高电平脉冲,它使CPU停止工作,FR,IP,DS,SS,ES 和指令队列清零,CS=FFFFH,当复位脉冲下降为低电平后CPU从FFFF0H处取指令重新开始工作。,1.中断的基本概念、中断的分类,掌握中断类型码、中断向量表地址以及中断入口地址之间的关系,计算机处理中断的五个步骤,中断响应的条件,中断响应时CPU的任务,中断服务程序的几项工作以及中断响应与子程序调用的区别。2.8086/8088中断的响应过程,例:中断返回指令IRET和普通子程序返回指令RET在执行时,具体操作内容有什么不同?,
11、答:IRET除了弹出堆栈中的CS和IP外,还要弹出标志寄存器的值,而RET则不需要。,中断操作,已知类型号为19H的中断子程序放在2345:7890H开始的内存区域中,问向量表中如何存放该地址?,答案:,计算19H型中断向量在向量表中存放的地址19H00011001B 19H40110010064H,地址存放90H0000:0064H78H0000:0065H45H0000:0066H23H0000:0067H,P101,已知(SP)=0150H,(SS)=3550H,(CS)=9000H,(IP)=0200H,(0005CH)=6FH,(0005DH)=5AH,(0005EH)=07H,(0
12、05FH)=7CH,在地址为90200H开始的连续两个单元中存放一条两字节指令INT 17H。试指出在执行该指令并进入相关的中断例程时,SP,SS,IP,CS寄存器的内容以及SP所指向的字单元的内容是多少?,答案:,计算17H型中断向量在向量表中存放的地址17H00010111B 17H45CH,(IP)=5A6FH,(CS)=7C07H,执行中断指令并进入相关的中断例程时,(SS)=3550H(SP)=0150H6=014AH,第五章 8088/8086指令系统,1.指令格式(标号:指令助记符 操作数;注释),有的指令为双操作数,有的指令为单操作数,有的指令无操作数。要特别注意某些指令其隐含
13、的操作数是什么。2.寻址方式:(1)寻址方式(指定操作数或操作数地址的方式)共有七种:立即数寻址、寄存器寻址、直接寻址、寄存器间接寻址、相对的寄存器间接寻址、基址加变址寻址、相对的基址加变址寻址。(2)操作数的类型和操作数的三种可能存放方式(I/O传输除外):在指令中(立即数操作数);在寄存器中(寄存器操作数);在内存中(内存操作数/存储器操作数),8086/8088的寻址方式小结,已知(DS)=2000H,(SS)=5000H,(ES)=3000H,(BX)=157BH,(SI)=1B7AH,(BP)=5C6DH,DATA=0050H,指出下列指令中的源操作数的寻址方式,并计算该操作数的物理
14、地址,(1)MOV SI,200(2)PUSHF PUSHF指令是把标志寄存器的值(是内容而不是地址)压入由SP指向的堆栈顶部,同时堆栈指针SP的值减2。(3)CMP AX,2000H 段寄存器默认为DS,因此物理地址为:(DS)x10H+2000H=22000H(4)MOV DL,ES:BX 指定段寄存器为ES,因此物理地址为:(ES)x10H+(BX)=3157BH,立即数寻址;,寄存器寻址;,直接寻址;,寄存器间接寻址方式;,(5)INC BYTE PTR DATASI 段寄存器默认为DS,因此物理地址为:(DS)x10H+(SI)+DATA=21BCAH(6)ADD AX,BXSI 默
15、认段寄存器为DS,因此物理地址为:(DS)x10H+(BX)+(SI)=230F5H(7)MOV BX,DATABXSI,默认段寄存器为DS,因此物理地址为:(DS)x10H+(BX)+(SI)+DATA=23145H(8)MOV AX,BP 默认段寄存器为SS,因此物理地址为:(SS)x10H+(BP)=55C6DH,相对变址寻址;,基址加变址寻址;,相对基址加变址寻址,堆栈段基址寻址,3使用指令时,应注意的几个问题(1)注意区别立即寻址方式和直接寻址方式。如:MOV AX,126;将数据126送入AX寄存器 MOV AX,126;将数据段中的126和127单元的内容送AX.(2)使用寄存器
16、间接寻址时应注意和寄存器寻址方式的区别。如:MOV AX,BX;BX中的内容传送到AX MOV AX,BX;BX所指示的地址中的内容送AX.(3)在双操作数指令中,源操作数和目的操作数不能同时 为存储器地址。如:M1和M2为两个存储器变量,则ADD M1,M2是错误指令.,(4)段跨越前缀可修改操作数所在的段。如:MOV DL,MESS1SI 源操作数地址为:(DS)X16+(SI)+OFFSET MESS1 MOV DL,ES:MESS2SI 注意:MOV BX,ES:AX对吗?源操作数地址为:(ES)X16+(SI)+OFFEST MESS2 注意:段跨越前缀不能使用CS。提示:本指令的目
17、的操作数DL决定了本指令将从存储单元中取一个字节而不是一个字。(5)代码段寄存器CS不能用作指令的目的寄存器。,(6)用方括号提供的数据来至内存,方括号内的数为偏移地址,也称为有效地址EA。,4掌握各类指令的功能及特点(不仅要了解指令的功能还要了解影响标志位的情况);正确使用指令系统,关键要清楚每条指令的功能以及它们规定或限制使用的寄存器。请同学们特别注意以下几个问题:(1)指令对地址还是对地址中的内容进行操作,这要严格加以 区分。如:LEA BX,MESS;(BX)MESS的偏移地址 MOV BX,OFFSET MESS;(BX)MESS的偏移地址 MOV BX,MESS;(BX)字变量ME
18、SS中的内容,(2)除LEA指令外,加中括号涉及到的操作数为内存操作数,通过地址对内存操作数进行存取,其地址由段基址和段内 偏移地址组成。,(3)使用指令时,要清楚指令隐含的操作寄存器。如:在乘法和除法指令中,只指出源操作数地址,但要清楚目的 操作数必须存放在(AX)/(AL)中(乘法),或(AX)/(DX:AX)中(除法)。串指令(MOVS、SOTS、LODS、CMPS、SCAS),它们的寻址方 式也是隐含的,指令规定操作是在数据段中SI所指示的地址 和附加段中DI所指示的地址之间进行串处理的;在存取串时 AL是隐含的存取寄存器。十进制调整指令(DAA、DAS等)也 隐含地使用了AL寄存器。
19、换码指令XLAT、循环指令LOOP、LOOPE、LOOPNE等,它们都要 求预先在规定的寄存器内设置好操作数地址或记数值。,(4)对带符号数和无符号数的操作应正确选择相应的条件转移指令。,(5)用移位指令来倍增或倍减一个值是很方便的,但要注意对带符号数和无符号数所使用的指令应是不同的。如:(AX)=8520H,请用移位指令实现(AX)/2。当(AX)为无符号数时,SHR AX,1,;结果是(AX)=4290H。当(AX)为带符号数时,SAR AX,1,;结果为(AX)=0C290H(6)标号是程序中指令的符号地址,要注意和变量(数据符号)的区别。如定义VAR是一个变量,LAB是程序中的一个标号
20、,则JMP LAB;指令的转移地址为LAB,指令合法。JMP VRA;是一条非法指令。,7在传送类指令中(1)请注意理解堆栈的基本概念及其操作(2)I/O数据传送指令(跟外设交换数据的指令)中,特别注 意:当端口号大于0FFH时要先送入DX);,例:设堆栈指针SP的初值为2000H,(AX)=3000H,(BX)=5000H,试问:,答:(1)指令执行后SP会自动减2,故(SP)=1FFEH.(2)执行PUSH BX后SP自动减2,BX内容进入堆栈,而BX仍为 5000H。再执行POP AX后,SP自动加2,堆栈内容5000H进入 AX。故:(SP)=1FFEH,(AX)=5000H,(BX)
21、=5000H,(1)执行指令PUSH AX后SP=?(2)再执行PUSH BX及POP AX后SP=?AX=?BX=?,假如AL=20H,BL=10H,当执行CMP AL,BL后,问:,答:(1)因为(AL)=20H(BL)=10H,故当是无符号数时,影响CF和ZF标志位,且CF=0,OF=0.(2)当AL,BL中是有符号数时,AL,BL中仍为正数,比较结果影响SF,OF,ZF标志位,但(AL)(BL),故结果为ZF=0,SF=0,OF=0.,(1)若AL,BL中内容是两个无符号数,比较结果如何?影响哪几个 标志位?(2)若AL,BL中内容是两个有符号数,结果又如何?影响哪几个 标志位?,CM
22、P(比较)指令,类似于减法运算,但只影响标志位,不影响所运算的值;用此指令时须考虑有符号数和无符号数的区别.,8数据操作类指令,根据要求写指令,(1)AX寄存器低四位清零(2)BX寄存器低四位置”1”AND AX,0FFF0H(3)CX寄存器低四位变反 XOR CX,000FH(4)用TEST指令测试DL寄存器位3,位6是否同时为零,若是,将0送DL,否则1送DH TEST DL,48H;0100 1000B=48H JZ LOOP1;为零,则ZF=1,转LOOP1,0送DL MOV DH,1;否则ZF=0,不转移,1送DH JMP TT1 LOOP1:MOV DL,0 TT1:HLT,OR
23、BX,000FH,TEST类似于AND指令,但只影响标志位,不将运算结果送入目标操作数。,设(BX)1011 1001 1011 1001,CF 0,(CL)03。确定下列指令分别执行后(BX)?,(1)SHL BL,1(2)SAL BL,CL(3)SHR BL,CL(4)SAR BL,1(5)ROL BH,1(6)RCL BX,CL(7)RCR BL,CL(8)ROR BH,1,(BL)=0111 0010 CF=1,(BL)=1100 1000 CF=1,(BL)=0001 0111 CF=0,(BH)=0111 0011 CF=1,(BH)=1101 1100 CF=1,(BL)=110
24、1 1100 CF=1,(BX)=1100 1101 1100 1010 CF=1,(BL)=0101 0111 CF=0,注意:所移动次数大于1时须将值送CL,9在串指令中,注意操作数的隐含规则:串传送指令 MOVSB/MOVSW:将一个字节/字从(DS:SI)传送到(ES:DI)完成操作后自动修改SI、DI,使其指向串的下一个元素串比较指令 CMPSB/CMPSW:比较(DS:SI)和(ES:DI)的值,自动修改SI、DI,指令前通常加重复前缀REPZ/REPE。串搜索指令:SCASB/SCASW:在首地址为ES:DI的串中搜索某个元素(字节/字)事先要将待搜索的元素存入AL/AX,指令前
25、通常加重复前缀REPNZ/REPNE。自动修改DI注意比较REP,REPE/REPZ以及REPNE/REPNZ的退出循环条件有何不同。读串指令LODSB/LODSW:将地址为DS:SI的一个字节/字读入AL/AX,自动修改SI写串指令 STOSB/STOSW:将AL/AX的值存入地址为ES:DI的内存单元,自动修改DI,判断下列指令书写是否正确,不正确的请指出原因。,(1)MOV AL,BX 错 BX为16位寄存器,AL为8 位,类型不匹配(2)MOV ES,DS 错 两个操作数不能同为段寄存器(3)DEC BX 错 本指令DEC后的目的操作数需指明类型(4)MOV 5,AL 错 5是一个立即
26、数,目的操作数不能是立即数(5)MOV BX,SI 错 两个操作数不能同时为内存单元,(6)MOV DS,2000H 错 不能给段寄存器用立即数的方式赋初值(7)POP CS 错 代码段寄存器CS不能是目的操作数(8)PUSH CS 对 代码段寄存器CS 是源操作数(9)DIV 12 错 DIV源操作数不能是立即数(10)IN BL,45H 错 IN指令只能用累加器AL或AX(11)SHR AL,5 错 移位次数大于1时应放入CL寄存器中,判断下列指令书写是否正确,不正确的请指出原因。,(12)MOV BX,AX 错 AX寄存器不能用于寄存器间接寻址方式(13)MOV AX,BXBP 错 不能
27、同时使用两个基址寄存器或变址寄存器进行间接寻址(14)XLAT BX 错 XLAT操作数是隐含的(15)XCHG AX,DS 错,段寄存器不能用于交换指令中,判断下列指令书写是否正确,不正确的请指出原因。,注意:CALL指令、RET指令、INT指令、IRET指令及其相关操作,P133,P133,例题,MOV AL,80HCBWCMP AL,80H指令执行后6个状态标志位的值是什么?,读下面程序段,请问:在什么情况下,本段程序的执行结果是AH=0?,BEGIN:IN AL,5FH;从5FH端口读入数据到AL TEST AL,80H;测试,影响ZF标志位,若AL最高 位为1,则ZF=0,否则ZF=
28、1 JZ BRCH1;若ZF=1,则转BRCH1 MOV AH,0;0送入AH JMP STOP;转STOPBRCH1:MOV AH,0FFH;0FFH送入AHSTOP:HLT;结束 答:要AH=0,则需要AL的最高位为1.,第七章 汇编语言程序设计,汇编语言程序结构、语句类型及格式变量名及其属性、指令中的变量名表达式与关系运算符伪指令:DB、DW、DD、DUP、EQU、ORG、段定义/过程定义/程序结束伪指令:SEGMENT、ENDS、ASSUME、PROC、FAR、NEAR、ENDP、END常用DOS功能的调用方法:1、2、9、0AH、4CH 号调用程序调试过程(编译、连接、运行、debu
29、g),例题,已知某数据段定义数据如下,请画出数据存储的示意图。DATA1 EQU 100DATA_BYTE DB 10,4,10HLENGTH1 EQU$-DATA_BYTEDATA_WORD DW 100,100H,-16LENGTH2 EQU$-DATA_WORDDATA_DW DD 3*20,0FFFDH,注意:DATA1、LENGTH1和LENGTH2不占用存储单元!LENGTH13,LENGTH26注意DUP表达式,读下面程序段,请问:程序执行后数据段数据的存储情况?,DATA SEGMENT BUF1 DB 2 DUP(3,0,2 DUP(ABC),FFH)BUF2 EQU 1A7
30、BH BUF3 DW 1250H LEN=$-BUF1DATA ENDSMOV AX,BUF2MOV SI,OFFSET BUF1MOV SI,AX,7BH,1AH,LEN=?,某数据段如下所示,请说出变量VECT1和VECT2的属性以及其各自的偏移地址。VECTORSSEGMENT ORG10 VECT1 DW47A5H ORG20 VECT2 DW0C596H VECTORSENDS,答:变量VECT1 和VECT2具有3个属性:(1)段属性,即变量VECT1 和VECT2均在数据段VECTORS中;(2)类属性,变量VECT1 和VECT2均是字变量,即变量中每一项都占用两个字节;(3)
31、偏移属性,VECT1的偏移地址为OAH,而VECT2的偏移地址为14H,上一页,下一页,指令XOR AX,OPR1 XOR OPR2 中,OPR1和OPR2是两个已赋值的变量,这两个XOR操作有何区别?,第一个XOR 是CPU执行的,程序运行时执行。,第二个XOR,OPR1 XOR OPR2 是一个表达式,此中的XOR是逻辑操作符,它在汇编是 求得一个值。,P159,对于下面的数据定义,各条MOV指令单独执行后,有关寄存器的内容是什么?,AB DB?,DATA1 DW 40 DUP(?),DATA2 DB ABCDEF,MOV AX,TYPE AB,MOV AX,TYPE DATA1,MOV
32、CX,LENGTH DATA1,MOV DX,SIZE DATA1,MOV CX,LENGTH DATA2,(AX)=1,(AX)=2,(CX)=40,(DX)=40*2=80,(CX)=1,第六章程序设计与汇编语言编程,汇编语言的基本语句;汇编语言程序的分段结构;汇编语言程序的解题方法及思路;顺序程序、分支程序、循环程序、子程序调用。,注意:课件中的例题、习题、书中的例题、习题以及上机考试题目。,编一程序段,完成符号函数:,假设x的值存放在DATA1中,y的值存放DATA2中。,BEGIN:MOV AL,DATA1 CMP AL,0 JGE BIG;大于等于转BIG MOV AL,0FFH;
33、DATA2中置1 MOV DATA2,AL JMP AA BIG:JE EQUAL;ZF=1,转EQUAL MOV AL,1;DATA2中置1 MOV DATA2,AL JMP AA EQUAL:MOV AL,0;DATA2中置0 MOV DATA2,AL AA:MOV AH,4CH INT 21H,JGE为有符号数跳转指令,输入一个字符串,再输入一个字符,统计该字符在字符串里出现的次数在屏幕上输出,DATA SEGMENTBUF DB 50;定义缓冲区用来存放输入的字符串 DB?DB 50 DUP(?)DATA ENDSCODE SEGMENT ASSUME DS:DATA,CS:CODES
34、TA:MOV AX,DATAMOV DS,AX,LEA DX,BUF;输入字符串MOV AH,0AH;系统10号功能调用INT 21HMOV DL,0AH;换行MOV AH,2;系统2号功能调用INT 21HMOV AH,1;输入要统计的字符INT 21H;系统1号功能调用,MOV DL,0AH;回车 MOV AH,2 INT 21H MOV DL,BL;将统计结果 放入DL准备输出 ADD DL,30H;将数字转换为相应的ASCII码 MOV AH,2;输出统计结果,系统2号功能调用 INT 21H;返回DOS MOV AH,4CH INT 21HCODE ENDSEND STA,MOV B
35、L,0;清零BL寄 存器准备计数 LEA DI,BUF+2;设置字符串开始位置 MOV CL,BUF+1;设置实际输入字符的个数A:CMP AL,BYTE PTRDI;比较当前字符是不是和要统计的字符相符 JNE NEXT;不是则跳转 INC BL;是则计数器加1NEXT:INC DI;指向下一个字符 LOOP A;如此循环,比较两个等长的字符串是否相同,并找出其中第一个不相等字符的地址,将该地址送BX,不相等的字符送AL。设M1为源串首地址,M2为目标串首地址。,DATA SEGMENT M1 DB AEC.M2 DB ABC.LEN EQU$-M2DATA ENDSCODE SEGMENT
36、 ASSUME DS:DATA,CS:CODE,ES:DATASTR:MOV AX,DATA MOV DS,AX MOV ES,AX LEA SI,M1;(SI)源串首地址 LEA DI,M2;(DI)目标串首地址 MOV CX,LEN;(CX)串长度 CLD;(DF)=0,使地址指针按增量方向修改,REPE CMPSB;若相等则重复比较 JZ STOP;(CX)等于0则转到STOP DEC SI;否则(SI)-1,指向不相等单元 MOV BX,SI;(BX)不相等单元的地址 MOV AL,SI;(AL)不相等单元的内容STOP:MOV AH,4CH INT 21H CODE ENDS END
37、 STR,注意:程序中找到第一个不相等字符后,地址指针已自动加了1,所以将地址指针再减1即可得到不相等单元的地址。,注意:学会读程序,分析程序实现功能,DATA SEGMENT BUFFER1 DB 50,?,50 DUP(?)NEWLINE DB 13,10 BUFFER2 DB 50 DUP($)DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA STA PROC FAR STAA:MOV AX,DATA MOV DS,AX MOV ES,AX LEA DX,BUFFER1 MOV AH,0AH INT 21H,用子程序实现将从键盘输
38、入的一组字符串中的小写字母改为大写字母,;键盘输入字符串,;数据段赋首址,;附加段赋首址,OVER:LEA DX,NEWLINE MOV AH,9H INT 21H MOV AH,4CH INT 21H STA ENDP CHECKBH PROC CMP BH,a JB CHECKBH_OVER CMP BH,z JA CHECKBH_OVER SUB BH,a-ACHECKBH_OVER:RETCHECKBH ENDPCODE ENDS END STAA,LEA SI,BUFFER1 ADD SI,2 LEA DI,BUFFER2 MOV CH,BUFFER1+1 MOV CL,0BEGIN
39、:INC CL CMP CH,CL JB OVER MOV BH,SI CALL CHECKBH MOV DI,BH INC SI INC DI JMP BEGIN,;取字符串个数,;屏幕上显示字符串,;返回DOS,;循环结束控制,a-A是一个表达式,在汇编时得到一个值(20H),第八章 存储器,存储器是计算机的重要组成部分,用来存放计算机系统工作时所用的信息 程序和数据。1理解基本概念:内存、外存、字扩展、位扩展2掌握微型机的存储系统存储器定义(存储器由能够表示二进制数“0”和“1”的、具有记忆功能的一些物理器件组成。存储器能存放一位二进制数的物理器件称为一个存储元。若干存储元构成一个存储单
40、元。);存储器的分类及其特点;数据在内存中的存贮方式3掌握几种常用存储器芯片及其与系统的连接;,1、内存和外存,(1)内存(或主存),用于存放当前正在使用的程序和数据,CPU可以对它直接访问,存取速度快,但容量较小。(2)外存(或辅存),用于存放一些CPU暂时不处理的程序和数据。当CPU要处理这些信息时,必须先将其调入内存。需通过专用设备才能对其进行读写操作。外存包括软盘,硬盘,光盘等等。相对内存来说,外存容量大,存取速度较慢,(1)只读存储器ROM,只读存储器(Read Only Memory ROM)用户在使用时只能读出其中信息,不能修改或写入新的信息,断电后,其信息不会消失。只读存储器分
41、类:存储单元中的信息由ROM制造厂在生产时一次性写入,称为掩膜ROM(Masked ROM);PROM(Programmable ROM 可编程ROM)程序和数据是由用户自行写入的,但一经写入,就无法更改,是一次性的ROM;,2、存储器的分类,(1)只读存储器ROM,EPROM(Eraseble Programmable ROM 可擦除可编程ROM)可由用户自行写入程序和数据,写入后的内容可用紫外线灯照射擦除,然后可以重新写入新的内容,可以多次擦除,多次使用。E2PROM(Electrically Eraseble Programmable ROM 电可擦除可编程ROM)可用电信号进行清除和改
42、写的存储器,使用方便。掉电不丢失。,随机存取存储器(Random Access Memory)RAM的特点是存储器中的信息能读能写,且对存储器中任一单元的读或写操作所需要的时间基本是一样的。断电后,RAM中的信息即消失。,(2)随机存取存储器RAM,(2)随机存取存储器RAM,按其制造工艺分:(1)双极型半导体RAM 存取时间短,与MOS型比,集成度低,功耗大,价 格高。(2)MOS 型RAMSRAM(Static RAM 静态RAM)SRAM是利用半导体触发器的两个稳定状态表示“1”和“0”。只要电源不撤除,信息不会消失,不需要刷新电路。DRAM(Dynamic RAM 动态RAM)DRAM
43、是利用电容端电压的高低来表示“1”和“0”,为了弥补漏电需要定时刷新。一般微机系统中的内存采用DRAM,配有刷新电路,每隔12ms刷新一次。,3 存储容量,存储容量 是指一块存储芯片上所能存储的二进制位数。假设存储芯片的存储单元数是M,一个存储单元所存储的信息的位数是N,则其存储容量为MN。,D7 D1D0,例题,已知单片6116芯片的地址线是11位,每个存储单元是8位,求其存储容量?解:因为可编址范围211,即M 211,每个存储单元可存8位,即N 8,所以,6116的存储容量=2118=210248=2K8 2KB,例题,若要组成64K字节的存储器,以下芯片各需几片?6116(2K8)44
44、16(16K4),解:(64K8)(2K8)=32(片)(64K8)(16K4)=8(片),区别:芯片的存储容量和微机的存储容量,微机的存储容量 由多片存储芯片组成的总存储容量。微机的最大内存容量 由CPU的地址总线决定。如:PC486,地址总线是32位,则,内存容许最大容量是232=4G;实际的装机容量 由实际使用的若干片存储芯片组成的总存储容量。,4、存储器的基本结构,1、存储体 由多个基本存储单元组成,容量即为MN;2、地址寄存器(地址锁存器)锁存CPU送来的地址信号;3、地址译码器 对地址信号进行译码,选择存储体中要访问的存储单元;4、读/写驱动电路 包括读出放大和写入电路;5、数据缓
45、冲器 芯片数据信号经双向三态门挂在数据总线上,未选中该片,呈高阻状态;,6、读/写控制电路 接受来自CPU的片选信号、读/写信号。(对ROM只读;对DRAM刷新信号),“读”操作工作过程,(1)送地址 CPU通过地址总线将地址送入地址寄存器,并译码;(2)发出“读”命令 CPU通过控制总线将“存储器读”信号送入读/写控制电路;,(3)从存储器读出数据 读/写控制电路根据“读”信号和片选信号选中存储体中的某一存储单元,从该单元读出数据,送到数据缓存器。再经过数据总线送到CPU。,“写”操作工作过程,(1)送地址 CPU通过地址总线将地址送入地址寄存器,并译码;(2)发出“写”命令 CPU通过控制
46、总线将“写”信号送入读/写控制电路;,(3)写入数据到存储器 读/写控制电路根据“写”信号和片选信号选中存储体中的某一存储单元,将数据总线上的数据,送到数据缓存器,再写入到选中的存储单元。,5 典型SRAM芯片,地址线:A0-A12数据线:D0-D7输出允许信号:OE写允许信号:WE选片信号:CS1,CS2,CMOS RAM芯片6264(8KB):主要引脚功能,6264芯片与系统的连接,常用的SRAM还有6116,6232,62256,适用于较小系统,译码电路,作用:将输入的一组二进制编码变换为一个特定的输出信号,即:将输入的一组高位地址信号通过变换,产生一个有效的输出信号,用于选中某一个存储
47、器芯片,从而确定了该存储器芯片在内存中的地址范围。分类:(1)全地址译码:用全部的高位地址信号作为译码信号,使得存储器芯片的每一个单元都占据一个惟一的内存地址(2)部分地址译码:用部分高位地址信号(而不是全部)作为译码信号,使得被选中得存储器芯片占有几组不同的地址范围,应用举例,D0D7,A0,A12,WE,OE,CS1,CS2,A0,A12,MEMW,MEMR,D0D7,A19,&,&,A18,A14,A13,A17,A16,A15,VCC,Y0,74LS138,G1,G2A,G2B,C,B,A,应用举例,A19A18A17A16A15A14A13,1,1,1,1,1,1,1,地址范围:FE
48、000H-FFFFFH,A12 A11-A0,0 000H-1 FFFH,应用举例,用存储器芯片SRAM 6116构成一个4KB的存储器。要求其地址范围为:78000H78FFFH,G1=1 G2A=G2B=0时,译码器处于使能状态。,A、B和C三条线的输入决定Y0 Y7的状态。,A19A18A17A16A15A14A13A12A11,0 1 1 1 1 0 C B A,6 动态随机存储器DRAM-典型芯片举例,DRAM芯片Intel 2164A 动态随机存取存储器,8条地址线,2位数据线(输出和输入),3条控制线,两条电源线,单片存储容量64K1。地址线采用分时复用,由CAS(列选通)和RA
49、S(行选通),从而实现16位地址线,M216 64K。,7 存储器扩展技术,位扩展字扩展字位扩展,用多片存储芯片构成一个需要的内存空间,它们在整个内存中占据不同的地址范围,任一时刻仅有一片(或一组)被选中存储器的扩展。,存储器的存储容量等于:单元数每单元的位数,字节数,字长,位扩展,当构成内存的存储器芯片的字长小于内存单元的字长时,就要进行位扩展,使每个单元的字长满足要求。,位扩展方法:,将每片的地址线、控制线并联,数据线分别引出连接至数据总线的不同位上位扩展特点:存储器的单元数不变,位数增加,位扩展例,用8片2164A芯片构成64KB存储器,字扩展,地址空间的扩展。芯片每个单元中的字长满足,
50、但单元数不满足扩展原则:每个芯片的地址线、数据线、控制线并联,仅片选端分别引出,以实现每个芯片占据不同的地址范围,字位扩展,根据内存容量及芯片容量确定所需存储芯片数进行位扩展以满足字长要求进行字扩展以满足容量要求若已有存储芯片的容量为LK,要构成容量为M N的存储器,需要的芯片数为:(M/L)(N/K),8 主存储器设计,1、芯片选择2、存储器芯片的基本地址3、存储器芯片的容量扩充4、存储器芯片与CPU连接,芯片选择,SRAM与CPU连接,不需要外围电路,连接简单,用于小型控制系统。DRAM常用于大型系统,因为需要刷新电路,比如PC机的内存条。ROM通常用于存放固定的系统程序。,存储器芯片的基