• 424.00 KB
  • 2022-04-22 11:27:34 发布

《微型计算机原理及应用技术》部分习题答案(新).doc

  • 37页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'《微型计算机原理及应用技术》习题答案为了配合《计算机原理及硬件技术》课程的学习,特编制此部分习题答案,以便对广大同学的学习能有所帮助。但由于时间仓促,难免有错误之处,请同学们在学习中发现错误尽快找老师联系进行更正,可以通过email邮箱联系:gongdajixi@126.com27 微机基础知识一、选择题1.一台完整的微机系统应包括()。AA.硬件和软件B.运算器、控制器和存储器C.主机和外部设备D.主机和实用程序2.微机硬件中最核心的部件是()。CA.运算器B.主存储器C.CPUD.输入/输出设备3.微机的性能主要取决于()。AA.CPUB.主存储器C.硬盘D.显示器4.带符号数在计算机中通常采用()来表示。CA.原码B.反码C.补码D.BCD码5.已知某数为-128,其机器数为10000000B,则其机内采用的是()表示。CA.原码B.反码C.补码D.真值6.在8位二进制数中,采用补码表示时数的真值范围是()。CA.-127~+127B.-127~+128C.-128~+127D.-128~+1287.大写字母“B”的ASCII码是()。BA.41HB.42HC.61HD.62H8.某数在计算机中用8421-BCD码表示为10010011,其真值为()。CA.10010011BB.93HC.93D.147二、填空题:1.微机的硬件主要包括主机和外设等部分。2.系统软件主要包括操作系统、语言处理程序和各种实用程序等。3.任何计数制都可以采用基数和位权来表示,二进制的基数为2,其中第n位的位权为2n-1。4.计算机中的数有_数值型和非数值型_两种表示方法,前者的特点是_表示数值大小,进行算术运算等处理操作_;后者的特点是_表示字符编码,在计算机中描述某种特定的信息。5.计算机中参加运算的数及运算结果都应在用原码表示的-2n-1≤X<+2n-1范围内,若参加运算的数及运算结果-2n-1>X±Y≥+2n-1,称为数据溢出。注:其中n为计算机的字长6.计算机中带符号的数在运算处理时通常采用补码表示,其好处在于简化机器数的运算。7.ASCII码可以表示_128_种字符,其中起控制作用的称为_功能码_;供书写程序和描述命令使用的称为_信息码_。8.已知某数为61H,若为无符号数代表97D;若为带符号数代表+97D;若为ASCII码代表a;若为BCD码代表61。27 三、判断题1.由于物理器件的性能,决定了微机内部的所有信息仍以二进制方式表示。()√2.微机中数据的表示范围不受计算机字长的限制。()×3.微机地址总线的宽度决定内存容量的大小。()√4.“0”的原码和反码各有不同表示,而“0”的补码表示是唯一的。()√5.微机在运算中产生数据溢出,其原因是运算过程中最高位产生了进位。()×6.微机键盘输入的各类符号在计算机内部均表示为ASCII码。()×四、数制转换题1.将下列十进制数分别转换为二进制数、十六进制数和压缩BCD码。(1)26(2)47(3)125(4)228答:(1)(2)(3)(4)十进制数2647125228二进制数11010101111111110111100100十六进制数1AH2FH7DHE4H压缩BCD码0010011001000111000100100101001000101000方法:转换为二进制数:用“除R取余”法转换为十六进制数:将二进制数采用“四合一”法(即每四位分为一段)转换为压缩BCD码:将十进制数采用“一分四”法(即每一位用四位二进制数表示)例如:26D=00100110=26BCD2.将下列二进制数或十六进制数分别转换为十进制数。(1)10110110B(2)10100101B(3)A8H(4)B5.62H答:按位权展开法进行求解。(1)(2)(3)(4)10110110B10100101BA8HB5.62H十进制数182165168181.3828125例如:(1)10110110B=1×27+1×25+1×24+1×22+1×21=182D(3)A8H=A×16+8=10×16+8=168D3.写出下列带符号十进制数的原码、反码、补码表示(采用8位二进制数)。(1)+28(2)+75(3)-38(4)-119答:(1)+28[28]原=00011100;[28]反=00011100;[28]补=00011100(2)+75[75]原=01001011;[75]反=01001011;[75]补=0100101127 (3)-38[-38]原=10100110;[-38]反=11011001;[-38]补=11011010(4)-119[-119]原=11110111;[-119]反=10001000;[-119]补=100010014.已知下列补码求出其真值。(1)97H(2)3FH(3)3C2AH(4)8B4CH答:解法:先用[X]补最高位确定真值的符号,然后求[X]反,再加1得出X,最后若需要将其转换为十进制数,可以将十六进制数转换为十进制数。(1)[X]补=97H=10010111B,符号位为1,X是负数,[X]反=[0010111]补=[1101000]反,[X]原=-([X]反+1)=-([1101000]反+1)=([1101001]原),X=-69H=-105D(2)[X]补=3FH=00111111B,符号位为0,X是正数,X=[X]补=3FH=63D(3)[X]补=3C2AH=0011110000101010B,符号位为0,X是正数,X=3C2AH(4)[X]补=8B4CH=1000101101001100B,符号位为1,X是负数,[X]原=-111010010110011B,X=-74B4H5.按照字符所对应的ASCII码值,查表写出下列字符的ASCII码。K、b、good、*、$、ESC、LF、CR、答:Kbgood*$ESCLFCR4BH62H676F6F64H2AH24H1BH0AH0DH五、简答题1.常见的微机硬件结构由哪些部分组成?各部分主要功能和特点是什么?答:常见的微机硬件结构组成部分有:中央处理机、存储器、系统总线、接口电路、主机板及I/O设备等部件。主要组成部件的功能和特点分析如下:(1)中央处理器CPU:是微型计算机部件,它包含运算器、控制器、寄存器组及总线接口等部件。它负责对系统的各模块进行统一的协调和控制。(2)主存储器:是微型计算机中存储程序、原始程序、中间结果和最终结果等各种信息的部件。可分为随机存储器(RAM)和只读存储器(ROM)。(3)系统总线:是CPU与其他部件之间传输数据、地址和控制信息的公共通道。各部件直接用系统总线相连,信号通过总线相互传输。根据传输内容不同,可以分成数据总线、地址总线和控制总线。(4)输入/输出接口电路:也成为I/O电路。是微型计算机与外部设备交换信息的桥梁。由寄存器组、专用存储器和控制电路等组成。(5)27 主机板:由CPU、RAM、ROM、I/O接口电路及系统总线等部件组成的计算机装置称为主机。主机的主体是主机板,CPU就安装在它上面,主机板上有内存插槽、总线扩展槽、串行/并行接口、各种跳线和一些辅助电路等硬件。(1)外存储器:使用最多的是磁盘存储器(软盘、硬盘)和光盘存储器。外存储器容量大,保存的信息不会丢失。(2)输入/输入设备:是微型计算机系统与外部进行通信联系的主要装置。常用的有键盘、鼠标、显示器、打印机和扫描仪等。1.计算机中有哪些常用的计数制?如何进行数制之间的转换?答:数值数据经常用二进制、十进制、八进制和十六进制;字符数据使用ASCII码;表示十进制数字用BCD码。(1)十进制转换为二进制:整数部分连续除以2后“倒取余”,小数部分连续乘以2后“正取整”。(2)二进制转换为十进制:将二进制数按权展开即可。(3)二进制与八进制之间的转换:将3位二进制一组对应1位八进制数。(4)二进制与十六进制之间的转换:将4位二进制一组对应1位十六进制数。3.如何判断数据运算的溢出?答:“溢出”的概念:当运算结果超出了结果单元所能表示的数值范围(即用原码表示的-2n-1>X±Y≥+2n-1范围)时,会产生错误结果。这种现象称为“溢出”。“溢出”与数的表示方法有关,因而“溢出”的判别方法也不同。在补码运算中,有符号数常用“双进位位”法判别(即:最高位与次高位都产生进位表明运算有“溢出”),无符号数值要运算有进位或借位就表明运算有“溢出”。4.ASCII码和BCD码有哪些特点?其应用场合是什么?答:ASCII码的特点为:每个字符用7位二进制数表示,总共有128个字符;ASCII码表中的英文字母和数字都是按顺序排列;128个字符包含94种信息码和34种功能码两大类;ASCII码用于表示英文字母的大小写、数字、专用字符和控制字符,ASCII码的最高位用于奇偶校验等场合。BCD码有压缩BCD码和非压缩BCD码的两种表示形式。其特点为:它是一种有权码,BCD码采用4位二进制数表示1位十进制数,自左至右每一位对应的位权是:8、4、2、1;简单直观,每个代码符合二进制和十进制的转换规则;不允许出现1010B~1111B中的任一种6个代码。用于进行十进制数的表示和计算等场合。本章重点题目:一、4.;2.;6.;8.27 二、3.;7.三、1.;2.;3.;6.四、2.(1).(2).(3).(4);3.(2).(3);4.(1).(2)五、2.27 典型微处理器一、选择题1.在执行部件EU中实现数据加工与处理的功能部件是()。CA.数据暂存器B.数据寄存器C.ALUD.EU控制电路2.以下不属于总线接口部件BIU中功能部件的是()。AA.地址寄存器B.地址加法器C.段寄存器D.指令队列缓冲器3.可用作堆栈指针寄存器的是()。CA.SIB.DIC.SPD.DX4.堆栈操作中用于指示栈顶基址的寄存器是()。CA.SSB.SPC.BPD.CS5.指令指针寄存器IP中存放的内容是()。CA.指令B.操作数C.指令地址D.操作数地址6.8086最大和最小工作模式的主要差别是()。DA.数据总线的位数不同B.地址总线的位数不同C.I/O端口数的不同D.单处理器与多处理器的不同二、填空题:1.8086的内部结构由_EU_和_BIU_组成,前者功能是_执行指令_,后者功能是_总线操作_。2.8086有20条地址线,可直接寻址1MB容量的内存空间,其物理地址范围是00000H~FFFFFH。3.8086的指令队列作用是预取指令,其长度是6个字节。4.8086标志寄存器共有_9_个标志位,分为_6_个_状态_标志位和_3_个_控制_标志位。5.8086为访问1MB内存空间,将存储器进行_分段_管理;其_物理_地址是唯一的;偏移地址是指_相对段基地址的偏移量_;逻辑地址常用于_程序中_。6.逻辑地址为2100H:0180H时,其物理地址是_21180H_,段地址是_2100H_,偏移量是_0180H_。7.时钟周期是指_CPU基本时间计量单位_,总线周期是指_一次总线操作时间_,总线操作是指_CPU经外部总线对存储器或I/O端口进行一次信息输入和输出的过程_。8.8086工作在最大方式时CPU引脚MN/-MX应接_地_;最大和最小工作方式的应用场合分别是_多处理器和单处理器系统_。三、判断题1.8086访问内存的20位物理地址是在BIU中由地址加法器实现的。()√27 2.若计算结果为0,则标志寄存器的ZF=0.()×3.IP中存放的是正在执行的指令偏移地址。()×4.逻辑地址是在书写汇编程序中用到的操作数存储地址。()√5.从内存单元偶地址开始存放的数据称为规则字。()√6.指令执行中插入T1和TW是为了解决CPU与外设之间的速度差异。()×7.8086系统复位后重新启动时从内存的FFFF0H地址处开始执行。()√四、简答题1.8086系统中的存储器分为几个逻辑段?每个段寄存器的作用是什么?答:8086CPU将1MB的存储空间分成若干个逻辑段来进行管理:每个逻辑段最小为16B,最大为64KB。最多可分成64K个逻辑段,最少可分成16个逻辑段。4个16位的段寄存器用来存放每一个逻辑段的段起始地址:CS中为代码段的起始地址;DS中为数据段的起始地址;SS中为堆栈段的起始地址;ES中为附加段的起始地址。2.I/O端口有哪两种编址方式?8086最大I/O寻址空间是多少?答:I/O端口的两种编址方式分别为:统一编址和独立编址。8086最大I/O寻址空间是64KB。3.8086的最大和最小工作模式的主要区别是什么?如何进行控制?答:两种模式的主要区别是:8086工作在最小模式时,系统只有一个微处理器,且系统所有的控制信号全部由8086CPU提供;在最大模式时,系统由多个微处理器/协处理器构成的多机系统,控制信号通过总线控制器产生,且系统资源由各处理器共享。8086CPU工作在哪种模式下通过CPU的第33条引脚MN/来控制:MN/=1,系统就处于最小工作模式;MN/=0,系统处于最大工作模式。5.简述Pentium微处理器的内部主要部件的功能。答:Pentium微处理器的主要部件包括总线接口部件、指令高速缓存器、数据高速缓存器、指令预取部件与转移目标缓冲器、寄存器组、指令译码部件、具有两条流水线的整数处理部件(U流水线和V流水线)、以及浮点处理部件FPU等。各主要部件的功能分析如下:(1)整数处理部件:U流水线和V流水线都可以执行整数指令,U流水线还可执行浮点指令。因此能够在每个时钟周期内同时执行两条整数指令。(2)浮点处理部件FPU:高度流水线化的浮点操作与整数流水线集成在一起。微处理器内部流水线进一步分割成若干个小而快的级段。27 (3)独立的数据和指令高速缓存Cache:两个独立的8KB指令和8KB数据Cache可扩展到12KB,允许同时存取,内部数据传输效率更高。两个Cache采用双路相关联的结构,每路128个高速缓存行,每行可存放32B。数据高速缓存两端口对应U、V流水线。(4)指令集与指令预取:指令预取缓冲器顺序地处理指令地址,直到它取到一条分支指令,此时存放有关分支历史信息的分支目标缓冲器BTB将对预取到的分支指令是否导致分支进行预测。(5)分支预测:指令预取处理中增加了分支预测逻辑,提供分支目标缓冲器来预测程序转移。五、分析设计题1.在内存有一个由10个字节组成的数据区,起始地址为1200H:0010H。计算出该数据区在内存的首末单元的实际地址。答:逻辑地址1200H:0010H对应的物理地址为PA=1200H×10H+0010H=12010H,即该数据区在内存中的首单元的物理地址为12010H;因为存储空间中每个字节单元对应一个地址,所以10个字节对应10个地址,则该数据区在内存中的末单元的物理地址PA=12010H+10D=12010H+0AH=1201AH。1.有两个16位的字数据32D7H和2E8FH,在存储器中的物理地址分别为10210H和10212H,试画出它们的存储示意图。地址存储空间10210HD7H10211H32H...10212H8FH10213H2EH答:2.内存中有一个程序段,保存位置为(CS)=13A0H,(IP)=0110H,当计算机执行该程序段指令时,实际启动的物理地址是多少?答:逻辑地址(CS):(IP)=13A0H:0110H,计算出对应物理地址PA=(CS)×10H+(IP)=13A0H×10H+0110H=13B10H27本章重点题目:一、2.;3.;5.;6.二、4.;8.四、2.五、1.第2章27 三、2.;3.;5.;6.;7.27 指令系统和寻址方式一、选择题1.寄存器间接寻址方式中,要寻找的操作数位于()中。CA.通用寄存器B.段寄存器C.内存单元D.堆栈区2.下列传送指令中正确的是()。CA.MOVAL,BXB.MOVCS,AXC.MOVAL,CLD.MOV[BX],[SI]3.下列指令中错误的是()。CA.MOVAX,1234HB.INCBXC.SALAX,2D.PUSHDX4.设(SP)=1010H,执行PUSHAX后,SP中的内容为()。CA.1011HB.1012HC.1OOEHD.100FH5.将AX清零并使CF位清零,下面指令错误的是()。AA.SUBAX,BXB.XORAX,AXC.MOVAX,0D.ANDAX,0OOOH6.对两个带符号数A和B进行比较,要判断A是否大于B,应采用指令()。BA.JAB.JGC.JNBD.JNA7.已知(AL)=80H,(CL)=02H,执行指令SHRAL,CL执行后的结果是()。BA.(AL)=40HB.(AL)=20HC.(AL)=C0HD.(AL)=E0H二、填空题:1.计算机指令通常由_操作码字段_和_操作数字段_两部分组成;指令对数据操作时.按照数据的存放位置可分为_立即数、寄存器操作数、存储器操作数_。2.寻址的含义是指_寻找操作数的过程_;8086指令系统的寻址方式按照大类可分为_立即数寻址方式、寄存器寻址方式、存储器寻址方式和I/O端口寻址方式_;其中寻址速度最快的是_立即数寻址_。3.若指令操作数保存在存储器中,操作数的段地址隐含在数据段DS寄存器或堆栈段SS寄存器中;可以采用的寻址方式有直接寻址方式、寄存器间接寻址方式、寄存器相对寻址方式、基址变址寻址方式、相对基址变址寻址方式。4.指令MOVAX,ES:[BX+O1OOH]中,源操作数位于_物理地址为ES*10H+BX+0100H的存储单元;读取的是_附加数据ES_段的存储单元内容。5.堆栈是一个特殊的_存储器区域_,其操作是以_2字节单元_为单位按照_先进后出_原则来处理;采用_SP_指向栈顶地址,入栈时地址变化为_SP←(SP)-2_。6.I/O端口的寻址有_直接端口寻址和间接端口寻址_两种方式;采用8位数时,可访问的端口地址为_0~255_;采用16位数时,可访问的端口地址为_0~65535_。27 三、分析计算题1.设(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据段ARY的位移量为0050H,试指出下列各指令中源操作数的寻址方式,对于内存单元的操作数计算出其物理地址。(1)MOVAX,2345H(2)MOVAX,BX(3)MOVAX,[1000H](4)MOVAX,ARY(5)MOVAX,[BX](6)MOVAX,ES:[BX](7)MOVAX,[BP](8)MOVAX,20H[BX](9)MOVAX,[SI](10)MOVAX,[BX][SI](11)MOVAX,ARY[BP][SI](12)MOVAX,ES:[BX][SI](13)MOVAX,ES:ARY[BX](14)MOVAX,[BP][SI]答:(1)MOVAX,2345H立即寻址,源操作数直接放在指令中(2)MOVAX,BX寄存器寻址,源操作数放在寄存器BX中(3)MOVAX,[0100H]直接寻址,EA=0100H,PA=(DS)×10H+EA=2000H×10H+0100H=20100H(4)MOVAX,ARY直接寻址,EA=[ARY]=0050H,PA=(DS)×10H+EA=2000H×10H+0050H=20050H(5)MOVAX,[BX]寄存器间接寻址,EA=(BX)=0100H,PA=(DS)×10H+EA=2000H×10H+0100H=20100H(6)MOVAX,ES:[BX]寄存器间接寻址,EA=(BX)=0100H,PA=(ES)×10H+EA=2100H×10H+0100H=21100H(7)MOVAX,[BP]寄存器间接寻址,EA=(BP)=0010H,PA=(SS)×10H+EA=1500H×10H+0010H=15010H(8)MOVAX,20H[BX]27 寄存器相对寻址,EA=(BX+20H)=0100H+20H=0120H,PA=(DS)×10H+EA=2000H×10H+0120H=20120H(1)MOVAX,[SI]寄存器间接寻址,EA=(SI)=00A0H,PA=(DS)×10H+EA=2000H×10H+00A0H=200A0H(2)MOVAX,[BX][SI]基址变址寻址,EA=(BX)+(SI)=0100H+00A0H=01A0H,PA=(DS)×10H+EA=2000H×10H+01A0H=201A0H(3)MOVAX,ARY[BP][SI]相对基址变址寻址,EA=[ARY]+(BP)+(SI)=0050H+0010H+00A0H=0100H,PA=(SS)×10H+EA=1500H×10H+0100H=15100H(4)MOVAX,ES:[BX][SI]相对基址变址寻址,EA=(BX)+(SI)=0100H+00A0H=01A0H,PA=(ES)×10H+EA=2100H×10H+01A0H=211A0H(5)MOVAX,ES:ARY[BX]相对基址变址寻址,EA=[ARY]+(BX)=0050H+0100H=0150H,PA=(ES)×10H+EA=2100H×10H+0150H=21150H(6)MOVAX,[BP][SI]基址变址寻址,EA=(BP)+(SI)=0010H+00A0H=00B0H,PA=(SS)×10H+EA=1500H×10H+0100H=15100H2.已知寄存器及存储器单元内容:(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(2010lH)=34H,(20102H)=56H,(20103H)=78H,(21200H)=90H,(21201H)=2AH,(21202H)=3BH,(21203H)=4CH。分析下列指令中源操作数字段的寻址方式,计算操作数存放的物理地址及指令执行后AX寄存器中保存的内容:(1)MOVAX,12O0H(2)MOVAX,BX(3)MOVAX,[1200H](4)MOVAX,[BX](5)MOVAX,1100H[BX](6)MOVAX,[BX][SI]答:(1)MOVAX,1200H;立即数寻址。指令执行后,(AX)=1200H(2)MOVAX,BX;寄存器寻址。指令执行后,(AX)=(BX)=0100H(3)MOVAX,[1200H];存储器直接寻址。27 EA=1200H,PA=(DS)×10H+EA=2000H×10H+1200H=21200H,执行后,(AX)=2A90H(1)MOVAX,[BX];寄存器间接寻址。EA=(BX)=0100H,PA=(DS)×10H+EA=2000H×10H+0100H=20100H,执行后,(AX)=3412H(2)MOVAX,1100H[BX];寄存器相对寻址。EA=(BX)+1100H=0100H+1100H=1200H,PA=(DS)×10H+EA=2000H×10H+1200H=21200H,执行后,(AX)=2A90H(3)MOVAX,[BX][SI];基址变址寻址。EA=(BX)+(SI)=0100H+0002H=0102H,PA=(DS)×10H+EA=2000H×10H+0102H=20102H,执行后,(AX)=7856H1.下列程序段执行完后,BX寄存器中的内容是多少?MOVCL,3MOVBX,0B7HROLBX,1RORBX,CL答:程序段执行中MOVCL,3;(CL)=3MOVBX,0B7H;(BX)=0B7H=10110111ROLBX,1;循环左移一次,(BX)=01101111RORBX,CL;循环右移三次,(BX)=11101101=EDH程序段执行完后,BX寄存器中的内容为(BX)=EBH4.已知(AX)=75A4H,标志位CF=1,分别写出下列指令执行后的结果:(1)ADDAX,08FFH(2)INCAX(3)SUBAX,4455H(4)ANDAX,OFFFH(5)ORAX,0101H(6)SARAX,1(7)RORAX,1(8)ADCAX,5答:(1)ADDAX,08FFH;(AX)=7EA3HCF=0(2)INCAX;(AX)=75A5HCF=127 (3)SUBAX,4455H;(AX)=314FHCF=0(4)ANDAX,0FFFH;(AX)=05A4HCF=0(5)ORAX,0101H;(AX)=75A5HCF=0(6)SARAX,1;(AX)=3AD2HCF=0(7)RORAX,1;(AX)=3AD2HCF=0(8)ADCAX,5;(AX)=75AAHCF=0……78H56H34H12H……5.给定(SS)=3000H,(SP)=1020H,(AX)=1234H,(DX)=5678H。执行下列程序段,分析每条指令执行后寄存器的内容和堆栈存储内容的变化情况:SP=101CHSP=101EHSP=1020HDX5678AX1234BX5678CX1234PUSHAXPUSHDXPOPBXPOPCX答:压入堆栈指令PUSH完成的操作是“先移后入”,即先将堆栈指针SP减2,然后将操作数压入SP指定的栈顶中。弹出堆栈指令POP完成的操作是“先出后移”,即先将堆栈指针SP所指示的栈顶存储单元的地址弹出到操作数中,然后将堆栈指针SP加2。PUSHAX;(AX)=1234H,(SP)=101EH,(3101EH)=1234HPUSHDX;(DX)=5678H,(SP)=101CH,(3101CH)=5678HPOPBX;(BX)=5678H,(SP)=101EHPOPCX;(CX)=1234H,(SP)=1020H6.分析下面程序段的功能,执行该程序段后AX寄存器中的内容是多少?MOVAX,0102HMOVBX,0010HMOVCL,2SHLBX,CLADDAX,BX答:MOVAX,0102H;(AX)=0102H27 MOVBX,0010H;(BX)=0010H=0000000000010000MOVCL,2;(CL)=02HSHLBX,CL;逻辑左移二次,(BX)=0000000001000000=0040HADDAX,BX;(AX)←(AX)+(BX)=0102H+0040H=0142H执行该程序段后AX寄存器中的内容是0142H。四、分析设计题:1.根据以下要求写出相应的8086指令。(1)把内存区域BUF数据区的偏移地址送入BX寄存器中。(2)把BX和AX寄存器的内容相加,结果存入AX寄存器中。(3)用位移量1200H的直接寻址方式把存储器中的一个字数据与立即数3210H相加,结果送回该存储器中。(4)用寄存器BX和位移量2100H的变址寻址方式把存储器中的一个字数据和CX寄存器中的内容相加,结果送回存储器。(5)用BX和SI的基址变址寻址方式,把存储器中的一个字节数据与AL内容相加,结果保存在AL寄存器中。答:(1)LEABX,BUF(2)ADDAX,BX(3)ADDWORDPTR[1200H],3210H(4)ADD2100[BX],CX(5)ADDAL,[BX][SI]2.设堆栈寄存器(SS)=2250H。堆栈指示器(SP)=0140H,若在堆栈中存入5个字数据,则SS、SP的内容各是多少?如果又取出2个字数据,SS、SP的内容各是多少?答:堆栈中存入5个数据:(SS)=2250H、(SP)=0136H又取出2个字数据:(SS)=2250H、(SP)=013AH3.设寄存器AX、BX中保存带符号数,寄存器CX、DX中保存无符号数,写出实现以下功能的指令或程序段。(1)若(CX)<(DX),程序转移到NEXT1处。(2)若(AX)>(BX),程序转移到NEXT2处。(3)若(CX)=0,程序转移到NEXT3处。(4)若AX中内容为负,程序转移到NEXT4处。答:(1)CMPCX,DX;将CX中数据与DX中数据进行比较27 JBNEXT1;若低于则转移到NEXT1(2)CMPAX,BX;将AX中数据与BX中数据进行比较JGNEXT2;若大于则转移到NEXT2(3)CMPCX,0;将CX中数据与0进行比较JENEXT3;若结果为0则转移到NEXT3(或用JCXZNEXT3指令实现)(4)TESTAX,8000H;测试符号位JNZNEXT4;若结果为负则转移到NEXT4(或ADDAX,0JSNEXT4实现)实现方法不唯一。4.现有两个双倍精度字数据1234FEDCH和11238765H,分别存放在数据段中从1000H和2000H开始的存储单元中,低位在前,高位在后。要求两数相加之后所得的和放在从1000H开始的内存单元中,设计该程序段。答:程序段设计如下:;3_4_1.ASMMOVSI,2000H;SI指向2000HMOVDI,1000H;DI指向1000HCLC;CF=0MOVCX,4;CX=4,循环相加4次LL:MOVAL,[SI];取数ADCAL,[DI];相加MOV[DI],AL;保存INCSI;SI增1INCDI;DI增1LOOPLL;CX减1,不为0,转LLMOVAX,0ADCAX,0MOV[DI],AX(答案不唯一)27 本章重点题目:一、3.;7.二、5.;6.三、1.(3).(4).(6).(7);2.(3).(4).(5).(6)四、3.27 汇编语言程序设计一、选择题1.汇编语言程序中可执行的指令位于()中。DA.数据段B.附加数据段C.堆栈段D.代码段2.汇编语言语句中标号和变量有规定的属性,以下内容不是属性的是()。BA.段属性B.地址属性C.偏移属性D.类型属性4.DOS系统功能调用的子功能号存放在寄存器()中。CA.ALB.AHC.DLD.DH5.DOS系统功能调用中,从键盘读取一个字符并回显的是()。AA.01HB.02HC.09HD.0AH6.循环程序设计的核心问题是()。DA.循环的控制B.循环结构的选择C.循环参数初始的设置D.循环控制参数的修改二、填空题1.完整的汇编语句包括_名字、操作符、操作数、和注释_4个字段。2.标号和变量应具备的3个属性分别是段属性、偏移属性和类型属性。3.计算机中的指令通常可分为CPU指令、伪指令和宏指令。4.DOS功能调用可完成对_文件、设备、内存_的管理;BIOS的主要功能是_外设的控制;如系统加电自检、引导装入及对键盘、磁盘、显示器、打印机、异步串行通信口等的控制_。5.给定以下程序段,在每条指令的右边写出指令的含义和操作功能,指出该程序段完成的功能及运行结果:MOVAX,0;AX赋值0MOVBX,1;BX赋值1MOVCX,5;CX赋值5LP:ADDAX,BX;AX+BX,结果送AXADDBX,2;BX+2,结果送BXLOOPLP;CX-1送CX;若CX≠0,转LP(1)程序段完成的功能是__。(2)程序运行后:(AX)=_25_;(BX)=_11_;(CX)=_0_。27 三、判断题1.伪指令是在汇编中用于管理和控制计算机相关功能的指令。()×2.程序中的“$”可指向下一个所能分配存储单元的偏移地址。()√3.宏指令的引入是为了增加汇编程序的功能。()√4.多重循环的内循环要完整地包含在外循环中,可嵌套和并列。()√5.子程序结构缩短了程序的长度,节省了程序的存储空间。()√四、简答题1.完整的汇编源程序应该由哪些逻辑段组成?各逻辑段的主要作用是什么?答:完整的汇编源程序应该由数据段、堆栈段、代码段逻辑段组成。各逻辑段的主要作用是存放数据变量及其预置初值、保存中断和子程序的断点和参数传递、存放程序执行的代码。2.简述在机器上建立、编辑、汇编、连接、运行、调试汇编语言源程序的过程和步骤。答:在机器上建立:为源程序起一个有意义的文件名字,并创建成文本文件;汇编:通过汇编程序ASM.EXE或MASN.EXE,将源程序会变成机器语言目标程序.OBJ;连接:运用连接程序LINK.EXE,将目标程序.OBJ连接生成执行程序.EXE;运行:在DOS状态下,直接运行执行程序;调试:运用调试程序DEBUG.EXE将执行程序跳入调试界面状态,并进行断点设置调试运行或单步调试运行操作。3.什么是伪指令?程序中经常使用的伪指令有哪些?简述其主要功能。答:伪指令是发送给汇编程序的命令。程序中经常使用的伪指令有:数据定义、符号定义、段定义、过程定义、结构定义、模块定义与连接、程序计数器$和起点定义ORG。其主要功能:数据定义为变量及其类型分配存储单元,并赋予初值;符合定义给一个符号重新命名;段定义指定逻辑段的名称、范围、断的定位类型、组合类型和类别;过程定义为程序段定义成过程,并赋予过程名字,以便用CALL指令调用;结构定义用于相互关联的数据定义;模块定义与连接用NAME为源程序汇编后的目标程序指定模块名,以便连接该目标模块,并生成执行程序文件;$在汇编过程中,用于存储单元分配计数器,该计数器可在指令操作数表达式中引用;ORG为数据变量和程序段指定起始位置。4.什么是宏指令?宏指令在程序中如何被调用?答:宏指令是代表某功能的一段源程序。宏指令在程序中在源程序中,通过宏名字(即宏指令名)进行调用。27 五、分析设计题1.内存BUF单元中定义有10个字数据,找出其中的最大值和最小值,并将最大值和最小值存放到指定的存储单元max和min中,画出流程图并编程实现。答:按照本题要求,10个字数据的首址为BUF内存单元,数据个数为10用CN指向,然后找出其中最大值并保存在max单元中,找出其中最小值并保存在min单元中,采用循环程序来完成该功能。27主程序流程图:START初始化DS数组首地址送SI数组元素个数送CX调用过程QZDZXS(求最大最小数)ENDQZDZXS子程序流程图:QZDZXS保护现场取一个数组元素送DX较大数存入ZD数组指针加2调整(AX)>(DX)(AX)<(DX)较小数存入ZX恢复现场数组元素全部完成?返回NYZDZX2ZDZX1YZDZX0YNN27 27参考程序设计如下:主程序:DATASEGMENTARRDW123,456,67,0,34,90,89,67,0,256CNEQU($-ARR)/2ZDDW0;最大(数组中任何数均大于AX内容)ZXDW0FFFFH;最小(数组中任何数均小于BX内容)DATAENDSCODESEGMENTASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AX;初始化DSMOVSI,OFFSETARR;数组首地址送SIMOVCX,CN;数组元素个数送CXCALLQZDZXS;调用近过程QZDZXS(求最大最小数)MOVAH,4CHINT21H;返回DOS过程子程序:;求最大最小数子程序名:QZDZXS;子程序功能:求一组字数据中的最大最小数;入口参数:数组首地址在SI中,数组个数在CX中;出口参数:最大数在ZD中,最小数在ZX中;使用寄存器:CX、DX、SI及PSWQZDZXSPROCNEARPUSHSIPUSHDXPUSHCX;保护现场ZDZX0:MOVDX,[SI];取一个数组元素送DXCMPZD,DX;AX中内容和DX中内容比较JNBZDZX1;(ZD)>(DX),转ZDZX127 MOVZD,DX;较大数存入ZDZDZX1:CMPZX,DX;AX中内容和DX中内容比较JNAZDZX2;(ZX)<(DX),转ZDZX2MOVZX,DX;较小数存入ZXZDZX2:ADDSI,2;数组指针加2调整LOOPZDZX0;循环控制POPCXPOPDXPOPSI;恢复现场RET;返回主程序QZDZXSENDP;子程序定义结束CODEENDS;代码段结束ENDSTART;汇编结束2.编写程序,计算下面函数的值:答:此程序可采用分支结构实现。根据X的取值范围,来确定转向那个分支。判断过程可使用CMP指令与0和10分别进行比较,根据结果实现跳转。X和S是两个需要定义的变量,X中是要处理的数据,S中是要保存运算结果。参考程序段编写如下:DATASEGMENT;定义数据段XDB15SDB?DATAENDSCODESEGMENT;定义代码段ASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AXMOVAL,X;将X送到AL中TESTAL,80H;(AL)<0吗?JZLL0;X≥0转LL027 SALAL,1;X乘以2JMPLL10;无条件转移LL0:CMPAL,10;否,(AX)<10吗?JGLL1;X≥10转LL1MOVBL,ALSALAL,1;X乘以3ADDAL,BLJMPLL10;无条件转移LL1:SALAL,1;X乘以4SALAL,1LL10:MOVS,AL;将结果保存至S中MOVAH,4CHINT21H;返回DOSCODEENDSENDSTART;汇编结束注意,在比较的过程中使用的是针对带符号数的跳转指令,将变量χ应该看作带符号数。程序中还用了移位指令代替了乘法指令实现乘2的运算。3.已知内存数据区BLOCK单元起存放有20个带符号字节数据,分别找出其中正、负数放入指定单元保存,并统计正、负数的个数。答:此程序可采用循环与分支结合的结构。再循环体中完成对数据区中数字的判断,为正数时,使计数器统计其个数,而负数的个数就是数据区的数据总数减去证书的个数;程序中循环次数与数据区中的个数一致。完成判断并计数后,分别将正数和负数保存到正数和负数的指定内存单元中,并将统计正数和负数个数的结果送到相应的内存单元中。参考程序设计如下:27DATASEGMENTBLOCKDB-7,1,12,-90,-70,34,-1,56,45,-12DB-3,-4,23,0,12,11,-9,-8,67,-56COUNTZDB?;定义正数个数COUNTFDB?;定义负数个数BLOCKZDB?;定义正数的数组27 BLOCKFDB?;定义负数的数组DATAENDSCODESEGMENTASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AX;初始化DSMOVBX,0;正数个数计数器清BX送0MOVDX,0;负数个数计数器清DX送0LEASI,BLOCK;SI指向数据区首址MOVCX,1AH;数据的个数送CXLP:MOVAL,[SI];数据区中一个数送入AL中INCSI;地址加1TESTAL,80H;测试数据的正负JZNEXT;结果为正数,转NEXTMOV[BLOCKZ+DX],AL;将负数送指定数据区保存INCDX;否则负数计数器BH加1NEXT:MOV[BLOCKZ+BX],AL;将正数送指定数据区保存INCBX;正数计数器BL加1LOOPLP;CX中内容减1不为0转LPMOVCOUNTZ,BX;送正数计数结果MOVCOUNTF,DX;送负数计数结果MOVAH,4CH;返回DOSINT21HCODEENDSENDSTART2727 6.试定义一条宏指令,完成将一位十六进制数转换为ASCII码的操作,编程实现。答:由于4位二进制数可以表示一位十六进制数。所以把十六进制数放在寄存器AL中,将高4位屏蔽掉,只保留低4位。然后判断这4位二进制数是否大于9,若不大于,则将其加上30H即可以转换为0~9的ASCII码;否则,加上37H将其转换为A~F的ASCII码。在下面的宏定义中,将十六进制数存储在AL中,针对AL进行转换。H_ASCIIMACRO;进行宏定义ANDAL,0FH;屏蔽AL的高4位CMPAL,9;判断低4位的值是否大于9JNAL1;结果不大于9转L1ORAL,30H;转换成0~9的ASCII码JMPL2L1:ORAL,37H;转换成A~F的ASCII码L2:ENDM本章重点题目:一、2.;6.二、2.;5.三、1.;3.;4.;5.;四、4.五、2.27 存储器系统一、选择题1.存储器的主要作用是()。DA.存放数据B.存放程序C.存放指令D.存放数据和程序2.在下列几种存储器中,CPU可直接访问的是()。AA.主存储器B.磁盘C.磁带D.光盘3.SRAM的存储原理是()。BA.依靠双稳态电路B.依靠定时刷新C.依靠读后再生D.不断电信息能长久保存4.以下属于DRAM特点的是()。CA.只能读出B.只能写入C.信息需定时刷新D.不断电信息能长久保存5.某存储器容量为32K×16,该存储器的地址和数据线条数分别为()。CA.16,32B.32,16C.16,16D.32,326.某SRAM芯片,存储器容量为64K×16位,该芯片的地址线和数据线数目为()。DA.64,16B.16,64C.64,8D.16,167.主存储器和CPU之间增加Cache的目的是()。AA.解决CPU和主存之间的速度匹配问题B.扩大主存储器容量C.扩大CPU中通用寄存器的数量D.既扩大主存储器容量,又扩大CPU中通用寄存器的数量8.虚拟存储器是由()构成的存储层次。AA.主存—CacheB.Cache—主存C.主存—辅存D.寄存器—Cache9.采用虚拟存储器的目的是()。CA.提高主存的存取速度B.提高辅存的存取速度C.扩大主存的存储空间D.扩大辅存的存储空间二、填空题1.存储容量是指_二进制信息总量_;容量越大,能存储的_二进制信息_越多,系统的处理能力就_越强_。2.RAM的特点是_通过指令可随机地对存储单元进行访问_;根据存储原理可分为_27 静态RAM_和_动态RAM_,其中要求定时对其进行刷新的是_动态RAM_。3.2164是常用的动态RAM芯片,容量为64K×1位,用8片2164可构成64KB的存储器。4.EPROM芯片能够通过紫外线的照射进行片内原有信息的擦除;根据需要可利用EPROM编程器对其进行编程。。5.半导体存储器与CPU连接前,先要确定内存容量的大小并选择存储器芯片的容量大小,然后需要考虑存储器地址分配问题,已解决CPU与存储器之间的匹配。6.Cache是一种_高速小容量_的存储器,位于_CPU_和_主存_之间,用来存放_CPU正在使用的指令和数据_;使用Cache的目的是_提高CPU访问存储器的存取速度,减少处理器的等待时间_。7.虚拟存储器是以_存储器访问局部性_为基础,建立在_主存-辅存_物理体系结构上的_主存与辅存之间的数据交换_技术。三、判断题1.CPU可直接访问主存和辅存。()×2.因为DRAM是破坏性读出,所以必须不断地刷新。()×3.SRAM比DRAM电路简单,集成度高,功耗低。()×4.Cache的存取速度比主存快,但比CPU内部寄存器慢。()√5.Cache位于CPU和主存之间,用来存放当前频繁访问的内容。()√6.辅存与主存的相比,其特点是容量大,速度快。()×四、简答题1.存储器的主要功能是什么?为什么要把存储系统分成若干个不同层次?答:现代计算机硬件以存储器为中心,其主要功能作用是:(1)存储程序和数据。程序和数据输入计算机后都是存放在存储器中的,运行中需要的数据和处理结果也存放在存储器中。(2)I/O设备可通过DMA方式与存储器直接交换数据。现代计算机可配置的外设越来越多,数据传送速度不断加快,且多数采用直接存储器存取(DMA)方式和I/O通道技术,这些I/O设备可与存储器直接交换数据而不必通过CPU控制,使批量数据的处理速度加快。(3)存放共享数据。由于出现采用共享数据存储器的多处理器微机,可利用存储器来存放共享数据,实现各处理器之间的通讯,加强了存储器作为整个计算机系统中心的作用。要把存储系统分成若干个不同层次的原因:为了提高存储器的性能,通常把不同存储容量、存取速度和价格的存储器按层次结构组成多层存储器27 ,并通过管理软件和辅助软件有机结合成统一整体,使所存放的程序和数据按层次分布在各存储器中。2.SRAM、DRAM各自有何特点?答:特点是容量大、存取速度快、体积小、功耗低、集成度高、价格便宜。SRAM存放的信息在不停电的情况下能长时间保留不变,只要不掉电所保存的信息就不会丢失。而DRAM保存的内容即使在不掉电的情况下隔一定时间后也会自动消失,因此要定时对其进行刷新。3.常用的存储器地址译码方式有哪几种?各自的特点是什么?答:线选译码:连接简单,无须专门的译码电路;缺点是地址不连续,CPU寻址能力的利用率太低,会造成大量的地址空间浪费。全译码:将低位地址总线直接连至各芯片的地址线,余下的高位地址总线全部参加译码,译码输出作为各芯片的片选信号。可以提供对全部存储空间的寻址能力。部分译码:该方法只对部分高位地址总线进行译码,以产生片选信号,剩余高位线可空闲或直接用作其它存储芯片的片选控制信号。4.半导体存储器在与微处理器连接时应注意哪些问题?答:半导体存储器与CPU连接前,要确定内存容量的大小并选择存储器芯片的容量大小,要考虑存储器地址分配问题;在进行存储器地址分配时,要将ROM和RAM分区域安排。5.简述计算机中为什么要采用高速缓存器Cache?分析其工作原理。答:Cache存储空间较小而存取速度很高,位于CPU和主存之间,用来存放CPU频繁使用的指令和数据,可以减少存储器的访问时间,所以能提高整个处理机的性能。6.简述虚拟存储技术的特点和工作原理。答:虚拟存储器是以存储器访问的局部性为基础,建立在“主存—辅存”物理体系结构上的存储管理技术。它可以使计算机具有辅存的容量,且用接近于主存的速度进行存取,程序员可按比主存大得多的虚拟空间编址——是一种概念性的逻辑地址,并非实际物理地址。虚拟存储器允许用户把主存、辅存视为一个统一的虚拟内存。用户可以对海量辅存中的存储内容按统一的虚址编排,在程序中使用虚址。在程序运行时,当CPU访问虚址内容时发现已存于主存中(命中),可直接利用;若发现未在主存中(未命中),则仍需调入主存,并存在适当空间,待有了实地址后,CPU就可以真正访问使用了。五、分析设计题1.已知一个具有14位地址和8位数据的存储器,回答下列问题:(1)该存储器能存储多少字节的信息?27 (2)如果存储器由8Kx4位RAM芯片组成,需要多少片?(3)需要地址多少位做芯片选择?答:(1)该存储器能存储的字节个数是214=24×210=16K。(2)该存储器能存储的总容量是16KB,若由8K×4位RAM芯片组成,需要的片数为(16K×8)/(8K×4)=4片(3)因为该存储器中读写数据的宽度为8位,所以4片8K×4位RAM芯片要分成两组,用一位地址就可区分;另一方面,每一组的存储容量为8K×8位=213×8位,只需要13位地址就可完全访问。2.若用4K×1位的RAM芯片组成16K×8位的存储器,需要多少芯片?A19~A0地址线中哪些参与片内寻址?哪些作为芯片组的片选信号?答:(16K×8位)/(4K×1位)=32片每8片一组,分成4组。每组的存储容量为4KB=212B,片内寻址需要12位地址线,即A11~A0;4组芯片可用2位地址线进行区分,即可用A13~A12做片选信号,A19~A14可浮空或做其他用途。3.若用2114芯片组成2KBRAM,地址范围为3000H~37FFH,则地址线应如何连接?(假设CPU有16条地址线、8条数据线)答:2114芯片单片容量为1K×4位,组成2K×8位RAM需要:(2K×8位)/(1K×4位)=4片每2片一组,分成2组。每组的存储容量为1KB=210B,片内寻址需要10位地址线。对应的地址范围为3000H~37FFH=0011000000000000B~0011011111111111B,可见,CPU的16条地址线中A9~A0用于片内寻址,A10用做片选信号,A13~A12接高电平,A15~A14、A11接地。重点题目:一、1.;4.;8.;9.二、1.;7.三、1.;3.;4.;6.四、2.五、1.27 输入/输出接口技术一、选择题1.以下不属于输入/输出接口功能的是()。DA.数据缓冲功能B.信号转换功能C.设备选择功能D.地址变换功能2.可实现CPU与外设并行工作的数据传输方式是()。DA.无条件传送方式B.程序查询传送方式C.中断控制方式D.DMA方式3.DMA在()接管总线的控制权。BA.申请阶段B.相应阶段C.数据传送阶段D.结束阶段4.以下不属于8237A工作方式的是()。AA.字传送B.数据块传送C.请求传送D.级联传送。二、填空题1.接口是指_外设与CPU通信的控制部件_,是_CPU与外设间传递信息的_中转站。2.I/O接口电路位于_总线和外部设备_之间,其作用是_信息转换和数据传递_。3.CPU与输入/输出设备之间传送的信息有数据信息、状态信息、控制信息。相应的端口称为数据端口、状态端口和控制端口。4.CPU和外设之间的数据传送方式有程序控制方式、中断控制方式、DMA控制方式。5.中断方式进行数据传送,可实现_CPU与外设_并行工作,提高了_CPU_的工作效率。中断传送方式多适用于_小批量慢速数据输入/输出设备传送_场合。6.DMA方式是在_内存与外设_间开辟专用的数据通道,在_DMA控制器_控制下直接进行数据传送而不必通过CPU。三、简答题1.采用无条件输入方式与外设接口时,接口电路应如何设计?答:如下图所示为无条件传送输入方式的例子。要将几个按键开关的状态输入CPU时,将这些开关连接到一个三态缓冲器,缓冲器的输出端接到CPU的数据总线,构成一个最简单的输入端口。CPU可随时执行输入输出指令,它使、和片选信号同时变成低电平,它们相与后开启缓冲器的三态门,使各开关的当前状态以二进制的形式出现在数据总线上,然后读入CPU,检查这个字节各位的内容,便能了解各开关的当前状态。在其它时刻,三态门呈高阻态,将开关和数据总线隔离。27 2.简述在微机系统中,DMA控制器从外设提出请求到外设直接将数据传送到存储器的工作过程。答:DMA方式要利用系统的数据总线、地址总线和控制总线来传送数据。原先,这些总线是由CPU管理的,但当外设需要利用DMA方式进行数据传送时,接口电路可以向CPU提出请求,要求CPU让出对总线的控制权,用一种称为DMA控制器的专用硬件接口电路来取代CPU,临时接管总线,控制外设和存储器之间直接进行高速的数据传送,而不要CPU进行干预。在DMA传送结束后,它能释放总线,把对总线的控制权又交给CPU。3.8237ADMA控制器有哪两种工作状态?其工作特点如何?答:一种是系统总线的主控者,这是它工作的主方式。在取代CPU控制DMA传送时,它应提供存储器的地址和必要的读写控制信号,数据是在I/O设备与存储器之间通过数据总线直接传递;另一种是在成为主控者之前,必须由CPU对它编程以确定通道的选择、数据传送的模式、存储器区域首地址、传送总字节数等。在DMA传送之后,也有可能由CPU读取DMA控制器的状态。这时8237A如同一般I/O端口设备一样,是系统总线的从设备,这是8237A工作的从方式。4.8237ADMA控制器的当前地址寄存器、当前字计数寄存器和基字寄存器各保存什么值?答:8237ADMA控制器的当前地址寄存器用于存放DMA传送的存储器地址值。当前字计数寄存器保存当前DMA传送的字节数基字寄存器用于存放对应通道当前字节计数器的初值。四、分析设计题若8237A的端口基地址为000H,要求通道0和通道1工作在单字节读传输,地址减1变化,无自动预置功能。通道2和通道3工作在数据块传输方式,地址加1变化,有自动预置功能。8237A的DACK为高电平有效,DREQ为低电平有效,用固定优先级方式启动8237A工作,试编写8237A的初始化程序。DMAEQU00H;8237A的基地址为00H27 ;输出主清除命令OUTDMA+0DH,AL;发总清除命令;写入方式字:通道0和通道1工作在单字节读传输,地址减1变化,无自动预置功能。MOVAL,01101000B;通道0方式字OUTDMA+0BH,AL;写入方式字MOVAL,01101001B;通道1方式字OUTDMA+0BH,AL;写入方式字;写入方式字:通道2和通道3工作在数据块(读)传输方式,地址加1变化,有自动预置功能。MOVAL,10011010B;通道2方式字OUTDMA+0BH,AL;写入方式字MOVAL,10011011B;通道3方式字OUTDMA+0BH,AL;写入方式字;写入命令字:DACK为高电乎有效,DREQ为低电平有效,用固定优先级方式,允许8237ADMA传送。;(不扩展写,正常时序,禁止通道0地址保持不变,禁止存储器到存储器)MOVAL,11000000B;命令字OUTDMA+08H,AL;写入8237A;写主屏蔽字,通道0~3屏蔽位清0。MOVAL,00HOUTDMA+0FH,AL;一次完成4个通道屏蔽位清0。本章重点题目:一、1.;4.二、2.;4.;6.三、3.27 中断系统一、选择题1.以下不属于计算机系统采用中断技术解决的问题是()AA.并行处理B.实时处理C.故障处理D.设备控制2.以下中断的优先级别最高的是()。DA.NMI中断B.INTR中断C.单步中断D.断点中断3.8086内部中断和外部中断之和最多可有()个。DA.8B.2C.255D.2564.中断服务程序入口地址是()。BA.中断向量表的指针B.中断向量C.中断向量表D.中断类型码5.一个8259A可提供的中断类型号数量为()。BA.1个B.8个C.16个D.64个6.指令INTn中断是()。DA.有系统断电引起B.有外设请求引起C.可用IF标志位屏蔽D.软件调用的内部中断二、填空题1.中断的含义_是指CPU在正常执行程序的过程中,由于内、外部事件或由程序的预先安排,引起CPU暂时中断当前程序的运行而转去执行为内、外部事件或预先安排的事件服务的子程序,待中断服务子程序执行完毕后,CPU再返回到暂停处(断点)继续执行原来的程序;中断源是指_引起中断的设备或事件_;可分为_内部中断和外部中断_两种。2.中断源的识别的方法有_查询中断和矢量中断_两种;前者的特点是_多个中断源公用一个中断入口服务程序,通过执行一段查询程序,确定引起中断的中断源状态;然后做相应的中断处理_;后者的特点是_每个中断源对应一个中断服务入口地址,由中断向量来指示中断服务程序入口地址_。3.CPU进入中断响应周期后,中断响应和处理的过程主要有关闭中断;保护断点;取中断向量确定终端服务程序的入口地址执行中断服务程序。4.8086中断系统最多可处理256种不同中断类型;对应的类型号为0~255;每一个中断都有一个中断类型码供CPU识别。27 5.8259A对中断优先权的管理方式有一般完全嵌套方式、特殊完全嵌套方式、自动循环方式、特殊循环方式;其中可用于级联方式的是特殊完全嵌套方式。6.8259A的变成包括对8259A初始化状态的设置和工作状态的动态改变;前者的作用是设置中断请求信号的有效方式,是高电平有效还是上升沿有效;工作于单片方式还是工作于级联方式;若为级联工作方式,则规定主8259A中每个IR端是否带从8259A,从8259A则要规定由主8259A的哪个IR端引入;置中断类型码;完成中断工作方式的设定;后者的作用是根据某些操作要求需要改变8259A的工作状态,对其进行控制的操作命令。三、判断题1.CPU中断处理的保护断点是把断点处IP值和CS值压入堆栈。()√2.采用软件查询法确定中断优先级时先查到的设备优先级高。()√3.CPU在执行当前指令过程中可响应可屏蔽中断()×4.8259A有8级中断优先权控制,通过级联方式可扩展到64级()√5.中断结束的管理是用不同方式使ISR寄存器相应位置“1”。()×四、简答题1.8086的中断分哪两大类?各自有什么特点?答:8086的中断分为外部中断和内部中断两种:外部中断由外部硬件产生,由CPU外部中断请求信号触发,分为非屏蔽中断NMI和可屏蔽中断INTR。内部中断是为了处理程序运行过程中发生的一些意外情况或调试程序而提供的中断。2.什么是中断向量?什么是中断向量表?非屏蔽中断的中断类型码为多少?8086中断系统优先级顺序怎样?答:8086的中断系统能够处理256个不同的中断,每一个中断安排一个编号,范围为0~255,称为中断类型。每种中断类型对应的中断服务程序的入口地址称为中断矢量(或中断向量)。把系统中所有的中断矢量按中断类型从小到大的顺序放到存储器的特定区域,该区域称为中断矢量表。非屏蔽中断的中断类型码为2。8086中断系统优先级顺序:内部中断(除法出错中断、INTn指令中断、INT0溢出中断、断点中断)→NMI中断→INTR中断→单步中断。3.什么是非屏蔽中断?什么是可屏蔽中断?它们要得到CPU相应的条件是什么?答:硬件中断分为非屏蔽中断和可屏蔽中断。非屏蔽中断:由NMI引脚引入的不受中断允许标志位IF影响的中断请求是非屏蔽中断。可屏蔽中断:由INTR引脚引入的受中断允许标志位IF影响的中断请求是可屏蔽中断。27 CPU响应中断的条件:只要NMI上请求脉冲的有效宽度大于两个时钟周期,CPU就能将这个请求信号锁存起来,当CPU在NMI上采样到一个由低到高的跳变信号时,就自动进入NMI中断服务程序。对于可屏蔽中断,CPU将根据中断允许标志位IF的状态决定是否响应。如果IF=0,CPU不理会该中断请求而继续执行下一条指令;如果IF=1,CPU执行完现行指令后会转入中断响应周期。4.编写程序时,为什么通常总要用STI和CLI中断指令来设置中断允许标志?答:在编写程序时,用STI指令使中断允许标志位IF=1,目的是使CPU能够接受中断请求,或实现中断嵌套。而用CLI指令使中断允许标志位IF=0,则可以关中断,使CPU拒绝接受外部中断请求信号。5.8259A的中断屏蔽寄存器IMR和中断允许标志IF有什么区别?答:IF是8086微处理器内部标志寄存器Flags的中断允许标志位。若IF=1,则CPU可以接受中断请求;若IF=0,8086就不接受外部可屏蔽中断请求INTR引线上的请求信号。如果8259A的中断屏蔽寄存器IMR中的某位为1,就把这一位对应的中断请求输入信号IR屏蔽掉,无法被8259A处理,也无法向8086处理器产生INTR请求。五、分析设计题1.某外部可屏蔽中断的类型码为08H,它的中断服务程序的人口地址为0020:0040H。编程将该中断服务程序的入口地址填入中断矢量表中。解:CLIMOVAX,00MOVDS,AXMOVSI,08H*4MOVWORDPTR[SI],0040HINCSIINCSIMOVWORDPTR[SI],0020HSTI2.已知中断类型码分别为84H和2AH,它们的中断向量应放在中断向量表的什么位置?答:中断入口地址表又称中断矢量表,它是中断矢量类型码与该中断类型相对应的中断服务程序入口之间的连接表,它设置在系统RAM最底端1024个单元内。中断矢量表共有256种中断类型码,每个类型码占用4个字节。其中低两个字节为中断服务程序入口地址的偏移地址,置入IP;高两位字节为服务程序的段基址置入CS。于是可通过这27 4个字节的值即可找到该中断类型的中断服务程序入口。中断类型码84H中断入口在中断矢量表的210H中断类型码2AH中断入口在中断矢量表的A8H本章重点题目:一、2.;3.二、4.;5.三、1.;2.;4.;5.四、2.;5.五、1.27'