• 739.50 KB
  • 2022-04-22 11:41:39 发布

微型计算机原理与应用 第三版 (马义德 张在峰 著) 高等教育出版社 课后答案

  • 61页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'课后答案网-中国第一答案下载门户答案分类爱校园社区淘答案(专业级搜索引擎为你提供服务)大学课后答案高中课后答案公共基础课|通信/电子/电气|计算机/软件/网络/高一课后答案|高二课后答案|高三课后答案信息/数学|物理/光学/声学/热学/力学|经济学/管理初中课后答案学/法学|化学/环境/生物/医学/制药|土建/机械/材初一课后答案|初二课后答案|初三课后答案料/制造|哲学/心理学/政治学|文学/史学/外语/教考试课后答案育|其它类别等级考试类答案|公务员考试答案热门答案最新求助最新答案新视野大学英语读写教高鸿业版西方经济学习概率论与数理统计教程高等数学(第五版)含C程序设计第三版(谭程答案(全)【k题答案(微观.宏观(茆诗松著)高上下册(同济大学浩强著)清华大新视野英语听力原文及理论力学第六版(哈尔线性代数(同济大学应21世纪大学英语第3册复变函数与积分变换答案课后答案【滨工业大学理论用数学系著)高(1-4)答案【khd第四版(张元林西概率与数理统计第二,C语言程序设计教程第西方经济学(微观部分)C语言程序设计教程第复变函数全解及导学[西三版(浙江大学三版(谭浩强张(高鸿业著)中二版(谭浩强张安交大第四版]社区服务社区热点进入社区http://www.khdaw.com/2009-10-15 课后答案网www.khdaw.com《微型计算机原理及应用》课程辅导材料(习题解答)马义德张在峰徐光柱袁敏李柏年编www.khdaw.com兰州大学信息科学与工程学院目录www.khdaw.com 课后答案网www.khdaw.com第一章微型计算机发展概述..........................……..................…...................................................................1第二章8086/808816位微处理器..........…....................….............................................……..…2www.khdaw.com第三章存储器技术...............................……………...................................................................….6第四章指令与寻址方式.....................................………..................................................................................10第五章汇编语言程序设计................….........………................…........................................................…....17第六章输入输出处理方法.....................………........................................................................................….41第七章微型计算机综合应用与发展......……………................................................................................41www.khdaw.com 课后答案网www.khdaw.com第一章微型计算机的发展概述习题解答1.从第一代计算机第四代计算机体系结构都是相同的,都是由运算器、控制器、存储器以及输入输出组成的、这种体系结构称为什么体系结构?www.khdaw.com答:冯`诺依曼体系结构。2.一个完整的计算机系统通常包括系统软件和应用软件、硬件系统和软件系统、计算机及其外部设备、系统硬件和系统软件这四种组合中的哪一种?答:硬件系统和软件系统。3.通常我们所说的32位机,指的是这种计算机CPU是什么样的?答:总线的数据宽度为32位。4.若某台微型计算机的型号是486/25,则其中25的含义是什么?答:25的含义是运算速度是25MB/s。5.操作系统是计算机发展到第几代出现的?答:操作系统是计算机发展到第三代期间出现的。6.决定微机性能的主要是CPU、总线、I/O接口电路的处理速度、价格、耗电量还是质量?答:CPU、总线和I/O接口电路的处理速度。7.现代计算机之所以能自动地连续进行数据处理,主要是它有什么功能?答:它有程序计数器和指令寄存器。8.微机的主要性能指标有哪些?答:主要有CPU的处理速度,总线的数据宽度,内存数据宽度,带外设的能力等。9.有些高级语言程序在计算机中执行时,采用的是解释方式。源程序由哪一种程序边翻译边执行?答:解释程序。10.在计算机中为什么要使用局部总线?什么是PCI总线?它和AGP总线有什么区别?答:局部总线是在ISA总线和CPU总线之间增加了一级总线,这样可将一些高速外设从ISA总线上卸下来,而通过局部总线直接挂到CPUwww.khdaw.com 课后答案网www.khdaw.com总线上,使之与高速的CPU相匹配。PCI总线时钟为33MHz,总线数据宽度为32位,并可扩展为64位,具有高速的数据通道,是一种局部总线。AGP总线的时钟为66MHz,传输速率也比PCI快,为264MB/s。目前,AGP总线时钟发展到4X66MHZ。第二章8086/808816位微处理器习题解答1.试说明8086/8088CPU中有哪些寄存器?各有哪些用途?答:寄存器组有(1)数据寄存器,含AX、BX、CX、DX四个通用寄存器,用来暂时存放计算过程中所遇到的操作数,结果和其它信息。(2)www.khdaw.com指针及变址寄存器,含SP、BP、SI、DI四个十六位寄存器,它们可以像寄存器一样在运算过程中存放操作数只能以字为单位使用。还用来在段内寻址时提供偏移地址。(3)段寄存器,含CS、DS、SS、ES,用来专门存放段地址。(4)控制寄存器,包括IP和PSW两个16为寄存器。IP是指令指针寄存器,用来存放代码段中的偏移地址。PSW为程序状态字寄存器,由条件码标志和控制标志构成。条件码标志用来纪录程序运行结果的状态信息。包括OF、SF、ZF、CF、AF、PF。控制标志位有三个寄存器DF、IF、TF组成。2.是说明8086/8088CPU中标志位寄存器中各标志位的意义?答:OF溢出标志,在运算过程中,如操作数超出了机器能表示的范围则置1,否则置0。SF符号标志,运算结果为负时置1,否则置0。ZF零标志,运算结果为0置1,否则置0。CF进位标志,记录运算是最高有效位产生的进位。AF辅助进位标志,记录第三位的进位情况。PF奇偶标志位,用来为机器中传送信息时可能产生的出错情况提供检验条件,当结果操作数中的1的个数为偶时置1。DF方向标志位,在串处理指令中控制处理信息的方向。当DF=1时,每次操作后变址寄存器减量,这样就使串处理从高地址向低地址方向处理。IF中断标志,当IF=1时,允许中断,否则间断中断。TF陷阱标志,用于单步操作方式,当TF为1时,每条指令执行完后产生陷阱,由系统控制计算机。当TF为0时,CPU正常工作不产生陷阱。3.哪些操作只能隐含使用某个段寄存器,而不能用其它段寄存器代替?哪些操作出隐含使用某个段寄存器外,还可以使用其它段寄存器?答:计算程序的地址隐含使用CS,正在执行的程序隐含使用SS,而数据的地址隐含使用ES和DS。4.8086/8088系列违纪在存储器中寻找存储单元时,逻辑地址由哪两个部分组成的?www.khdaw.com 课后答案网www.khdaw.com答:由段地址和偏移地址两部分构成。5.设IBMPC微机内存中某个单元的物理地址是12345H,试完成下列不同的逻辑地址表示:(1)1234H:___H(2)____H:0345H答:(1)1234H:05H(2)1200H:0345H6.假设某程序执行过程中,(SS)=0950H,(SP)=64H,试问该用户程序的堆栈底部物理地址是多少?答:(SS)*10H+(SP)=09564H7.设堆栈段寄存器(SS)=0E4BH,程序中设堆栈长度为200H个字节。www.khdaw.com试计算出堆栈底部字单元物理地址,堆栈指针SP初始值(即堆栈中没有数据时)和SP初始值指向的物理地址。答:物理地址为:3E4B0H,SP的初始值为200H,指向的物理地址为:3E6B1H.。8.设某用户程序(SS)=0925H,SP=30H,(AX)=1234H,(DX)=5678H,问堆栈的地址范围是多少?如现有两条进展指令:PUSHAXPUSHDS试问两指令执行后,(SP)=?答:寻址范围:09250H~09280H,SP减4为2CH。9.8086CPU与8088CPU由哪些相同之处?又有哪些区别?答:他们内结构基本相同,不同之处仅在于8088有8条外部数据总线,因此为准16位。8088有16条外部数据总线,两个CPU的软件完全兼容,程序的编制也完全相同。10.8086CPU从功能上分为几部分?各部分由什么组成?各部分的功能是什么?答:8086CPU从功能上分外两大部分,一是执行部件(EU),二是总线接口部件(BIU)。执行部件是由以下四部分组成:(1)4个通用寄存器AX,BX,CX,DX。(2)4个专用寄存器BP,SP,XI,DI。(3)标志寄存器FR。(4)算术逻辑部件ALU。功能是负责执行所以的指令,向总线接口部件(BIU)提供指令执行的结果数据和地址,并对通用寄存器和标志寄存器进行管理。总线接口部件(BIU)由以下部件组成:(1)四个段寄存器,代码段寄存器,数据段寄存器,附加段寄存器,堆栈段寄存器。(2)指令指针寄存器。(3)地址加法器。(4)指令领队列。功能:执行外部总线周期,负责存储器与I/O端口传送数据。也就是负责CPU与存储器和www.khdaw.com 课后答案网www.khdaw.com外设之间的信息交换。12.8086系统中的物理地址是如何的得到的?假如CS=2000H,IP=2100H,其物理地址是多少?答:8086系统的物理地址是将段地址乘10H,加上偏移地址。2000H*10H+2100H=22100H(物理地址)13什么叫总线周期?一个总线周期包括多少时钟周期,什么情况下要插入TW等待周期?插入多少个TW取决于什么因素?答:CPU把总线接口部件BIU完成一次访问存储器或外设操作所需要的时间称为一个总线周期,它包括了四个时钟周期。当访问存储器或外设时,存储器或外设不能及时配合CPU传www.khdaw.com输数据时,存储器或外设通过“READY”信号在T3之前向CPU发出一个“数据未准备好”信号,CPU会在T3之前插入一个或多个等待时间周期。当存储器或外设准备好数据,通过“READY”发“准备好”信号,CPU接受此信号后,会自动脱离TW状态进入T4状态。因此,插入多少个TW由“READY”信号决定。14什么是最大模式?什么是最小模式?用什么方法将8086/8088置于最大模式和最小模式?答:最小模式,即系统中只有一个微处理器,所有的总线控制信号都直接由8086/8088,因此,系统总线控制电路被减到最小。最大模式,即系统里包括两个或多个微处理器,主处理器就是8086/8088,其它均为协助主处理器工作的协处理器。它主要用于中等规模或大型的8086/8088系统中。将8086/8088的第33脚接地时,系统处于最大模式,接+5V时,为最小模式15什么是地址锁存器?8086/8088系统中为什么要用地址锁存器?锁存的是什么信息?答:地址锁存器就是一个暂存器,它根据控制信号的状态,将总线上地址代码暂存起来。8086/8088数据和地址总线采用分时复用操作方法,即用同一总线既传输数据又传输地址。当微处理器与存储器交换信号时,首先由CPU发出存储器地址,同时发出允许锁存信号ALE给锁存器,当锁存器接到该信号后将地址/数据总线上的地址锁存在总线上,随后才能传输数据。168086/8088系统中的8286是什么器件?起什么作用?答:8286为总线驱动器(收发器,双向数据缓冲器),当一个系统中所含外设接口较多时,用来增强数据总线的驱动能力。178086/8088系统用的时钟发生器产生哪些信号?答:时钟发生器8284A产生恒定的时钟信号(CLK),复位信号(RESET),准备就绪信号(READY)。www.khdaw.com 课后答案网www.khdaw.com188086/8088的执行部件EU由多少个通用寄存器,多少个专用寄存器,几个标志寄存器和什么组成?答:执行部件由以下几部分组成:1、四个通用寄存器AXBXCXDX;2、四个专用寄存器,即基数指针寄存器BP,堆栈指针寄存器SP,源变址寄存器SI,目的变址寄存器DI;3一个标志寄存器FR;4算术逻辑部件ALU。198086/8088的指令队列长度分别为多少个字节?答:8086的指针队列为6个字节,8088的指针队列有4个字节。208086与8088的16位寄存器中,有多少个寄存器可拆分为8位寄存器使用。它们分别是什么?它们又被统称为什么?www.khdaw.com答:在8086与8088的16位寄存器中,有四个寄存器可拆分为八位寄存器使用,它们分别是AX,BX,CX,DX。统称为通用寄存器。21PU从主存取出一条指令并执行该指令的时间称(),它通常用若干个()来表示,而后者又包括若干个()。①指令周期②机器周期③时钟周期答:1-2-322计算机时钟脉冲的频率称为什么?,其倒数又称为什么?答:计算机的时钟脉冲频率称为时钟频率,即主频。其倒数为时钟周期。22计算机主频为8MHz,每个机器周期平均含两个时钟周期,每条指令平均有2.5个机器周期,则该机器的平均指令执行速度为多少MIPS?答:该机器执行一条指令所用时间为:1/8*10-6*2*2.5=5/8*10-6t;平均指令执行速度为:1/(5/8)=1.6MIPS。248086/8088的存储器可以寻址1MB的空间,在对I/O进行读写操作时,20位地址中只有哪些位是有效的?这样,I/O地址的寻址空间为多大?答:在对I/O进行读写操作时,20位地址中只有A0-A15有效,I/O地址的寻址空间为216B。25指令队列的作用是什么?答:指令队列存放内存中取下的将被执行的下一条或下几条指令,使CPU执行完一条指令就可立即执行下一条,提高CPU的效率。268086CPU可访问的存储空间为1MB,实际上分为奇数存储体和偶数存储体两部分,对奇数存储体的选择信号是什么,对偶数存储体的选择信号是什么,对每个存储体单元的选择信号是什么?答:奇数存储体的选择信号为BHE,偶数存储体的选择信号为A0。对每个存储体内存储单元的选择信号是READY。www.khdaw.com 课后答案网www.khdaw.com278086有两种工作方式,即最小模式和最大模式,它由什么信号决定?最小模式的特点是什么?最大模式的特点是什么?答:8086的两种工作模式由MN/MAX信号决定。当接入+5V时,系统处于最小模式,只有一个微处理器,总线控制逻辑部件被减到最小。当接地时,系统处于最大模式,实现多处理器控制系统,主要应用于大中型系统。28当M/IO=0,RD=0,WR=1时,CPU完成的操作是什么?答:CPU完成一个对I/O设备端口的读操作。298088与8086在软件上是否完全兼容?答:8086/8088内部都采用16位字进行操作及存储器寻址。因www.khdaw.com此两者软件完全兼容。第三章存储器技术习题解答1半导体存储器从器件原理的角度可分为哪两种类型?答:半导体存储器从器件原理角度分为ROM和RAM两种。2磁盘和磁带属于哪种类型的存储器?答:磁盘和磁带同属于外存储器。3半导体静态RAM和半导体动态RAM分别靠什么原理存储信息?答:静态RAM:用一个触发器电路作为1个Bit的基本存储单元,每个触发器能置位存储1,或复位存储0。动态RAM:每Bit只需一个管子和一个电容,存放的信息是1还是0,决定于电容中是否储存电荷。4为保证动态RAM中的内容不消失,需要进行哪一步操作?答:由于电容有漏放电现象,为保证RAM中的内容不消失,必须另外设计一种电路,定时(一般为2ms),使电容上泄放的电荷得到补充,即进行内存刷新。5存储器片内的地址译码有哪两种方式?答:存储芯片内的地址译码有全地址译码和独立译码两种。6存储器是计算机系统的记忆设备,它主要用来存储哪些东西?答:存储器用来存储地址、数据和程序。7存储字长和存取周期分别指什么?答:存储字长是指存放在一个存储单元中的二进制代码个数。存取周期是指存储器进行连续读写操作所允许的最短时间间隔。8和外存相比,内存的特点有哪些?答:和外存相比,内存的特点是容量小、速度快、成本高。9某计算机主存容量为2048KB,这里的2048KB表示多少个字节?答:2048KB表示2048*1024个Byte,即2(11)*2(10)=2(21)个。www.khdaw.com 课后答案网www.khdaw.com10某计算机的主存为3KB,则内存地址寄存器需多少位就足够了?答:主存为3KB,则地址线有12条,所以内存地址寄存器需12位。11若256KB的SRAM具有8条数据线,则它具有多少条地址线?答:具有18条地址线。12计算机的内存可采用ROM、RAM、磁盘中的哪几种?EPROM指的又是什么?主存和CPU之间增加高速缓存的目的是什么?采用虚拟存储器的目的是什么?答:可采用ROM和RAM。EPROM指可编程并可擦除的ROM,兼有ROM和RAM的功能。由于主存储器的存/取时间比CPU慢一个数量级,从www.khdaw.com而严重影响了微型机的速度,而RAM线路的读写时间可与CPU的处理速度处于同一个数量级,因此在主存储器和CPU之间增加高速缓冲存储器Cache,以提高机器的速度。虚拟存储器的容量比实际物理上主存储器的容量大,软件可根据需要将所需的存储区域调入物理存储器,也可以提高处理速度。13某以8088为CPU的微型计算机内存RAM区为00000H~3FFFFH,若采用6264、62256、2164或21256各需要多少片芯片?答:采用6264(8k*8bit)需要32片;采用62256(32k*8bit)需要8片;采用2164(64k*1bit)需要32片;采用21256(256k*1bit)需要8片。14利用全地址译码将6264芯片接在8088的系统总线上,其所占地址范围为BE000H~BFFFFH,试画连接图。解答:采用全地址译码连接图如下:8088系统BUSD0...10A0D011912A1D1D7813A2D2715A3D3A0616A4D4517A1A5D5418A6D6319......25A7D7A824A12A921A1023MEMRA112MEMWA12A1922A18OE626427A17WE26A16+5VCS220A15CS1A14A1315试利用6264芯图3-14电路图片,在8088系统总www.khdaw.com 课后答案网www.khdaw.com线上实现00000H~03FFFH的内存区域,试画连接电路图。解答:采用全地址译码。8088系统BUSD0...10A0D011912A1D1D7813A2D2715A3D316叙述EPROM的编程过A06A4D416517A1A5D5418程,说明EEPROM的编程过3A6D619...25A7D7A8程。24A12A921A10答:PROM的编程有两种MEMR23A112MEMWA12方式,即标准编程和灵巧A1922OE626427A18WEwww.khdaw.com编程两种方式。标准编程+5V26CS2A1720CS1的过程为:使Vcc为+5v,A16A15Vpp加上+21v。而后,加A14图3-14电路图上要编程的单元地址,数A13据线加上要写入的数据,使CE保持低电平,OE为高电平。当上述信号稳定后,在PGM端加上50±5ms的负脉冲。这样就将一个字节的数据写到了相应的地址单元中。重复上述过程,即可将要写入的数据逐一写入相应的存储单元中。灵巧编程方式要比标准方式快5倍左右。当加上Vcc=5v,Vpp=21v后,对一个写入地址,用1ms编程脉冲进行编程,接着进行校验,如不成功,再加1ms编程脉冲。最多可进行15次,若15次仍不能将数据正确写入,则认为芯片本身已损坏。若某一单元用X次1编程脉冲已正确写入,校验到这种情况后,立即对该单元加入4倍X的编程覆盖脉冲,则认为该单元编程已完成。重复上述过程,将所有要写入的单元编程。将数据写入EEPROM有两种方式,即字节方式和自动页写入。在对EEPROM编程时,可以在线操作。17有2片6116,现欲将它们接到8088系统中去,其地址范围为40000H到40FFFH,试画连接电路图。利用写入某数据并读出比较,若有错,则在DL中写入01H;若每个单元均对,则在DL写入EEH,试编写此检测程序。解答:连接电路图见下一页。18若用全地址译码将EPROM2764(128或256)接在首地址为A0000H的内存区,试画出电路图。解答:电路图如下:www.khdaw.com 课后答案网www.khdaw.com115A13AY0214A14BY1313A15CY212Y3MEMR74LS13811Y4A19410E1Y5A1859E2Y6A1767E3Y7A16RESET总线信号1011A0D0912A1D1813A2D2D-D07715A3D3616A4D4A-A012517A5D5418A6D6319A7D725A824A921A1023A112A12www.khdaw.com28Vcc(+5V)GN20CE22MEMROE2727641PGM图3-18电路图VPP+5V19第15题中,若8088的时钟频率为5MHz,6264芯片的读写时间均200ns,试粗略估计该芯片能否直接8088系统使用。BUS答:8088的时钟频率为D-D0789A0D0710A0A1D15MHZ,则读写时间为6A2D211513A3D3414200ns,与6264芯片的读3A4D415A5D5...2A6D616写时间相同,若该芯片直117A7D723A822接使用,容易出错。A919A10A1021MEMWW20MEMRG611618E17连接电路图如下:D-D0789A0A0D0710A1D1611A2D2513A3D3414A4D4315......2A5D516A6D6117第四章指令与寻址方式A7D723A822习题解答19A9A10A1021MEMWW20G6116MEMR181.试分别说明下列各指E令中源操作数和目的操A11115AY0作数使用的寻址方式:2BY114313CY212(1)ANDAX,A19Y311Y4A184E1Y510图3-17电路图59E2Y667A17E3Y7A16A15A14www.khdaw.com74LS138A13A12 课后答案网www.khdaw.com0FFH(2)ANDBL,[OFFH](3)MOVDS,AX(4)CMP[SI],CX(5)MOVDS:[0FFH],CL(6)SUB[BP][SI],AH(7)ADCAX,0ABH[BX](8)ORDX,-35[BX][DI](9)PUSHDS(10)CMCwww.khdaw.com答:目的操作数源操作数(1)寄存器直接寻址立即数寻址(2)寄存器直接寻址直接寻址(3)寄存器直接寻址寄存器直接寻址(4)寄存器间接寻址寄存器直接寻址(5)直接寻址寄存器直接寻址(6)基址变址寻址寄存器直接寻址(7)寄存器直接寻址寄存器相对寻址(8)寄存器直接寻址基址变址相对寻址(9)无寄存器直接寻址(10)隐含寻址2.试分别指出下列各指令语句的语法是否有错,如有错,指明是什么错误。(1)MOV[BX][BP],AX(2)TEST[BP],BL(3)ADDSI,ABH(4)ANDDH,DL(5)CMPCL,1234H(6)SHR[BX][DI],3(7)NOTCX,AX(8)LEADS,35[SI](9)INCCX,1(10)PUSH45[DI]答:(1)应将BP,BX其中之一该为SI或DI(2)正确(3)ABH改为0ABH(4)(5)是字操作,CL改为CXwww.khdaw.com 课后答案网www.khdaw.com(6)移位数大于1时,应用CL(7)NOT指令只有一个操作数(8)LEA指令的源操作数应为一内存单元地址(9)此指令不用指出1(10)45改为45H3.下面两条指令执行后,标志寄存器中CF,AF,ZF,SF和OF分别是什么状态?MOVDL,86ADDDL,0AAH答:0101,0110+1010,1010=1,0000,0000www.khdaw.comCF=1AF=1ZF=1SF=1OF=14.在8086/8088CPU中可用于作地址指针的寄存器有哪些?答:有BX,CX,DX,BP,SI,DI(IP,SP,)5.已知(DS)=09lDH,(SS)=1E4AH,(AX)=1234H,(BX)=0024H,(CX)=5678H,(BP)=0024H,(SI)=0012H,(DI)=0032H,(09226H)=00F6H,(09228H)=1E40H,(1E4F6H)=091DH。下列各指令或程序段分别执行后的结果如何?(1)MOVCL,20H[BX][SI](2)MOV[BP][DI],CX(3)LEABX,20H[BX][SI]MOVAX,2[BX](4)LDSSI,[BX][DI]MOV[SI],BX(5)XCHGCX,32H[BX]XCHG20H[BX][SI],AX答(1)(CX)=56F6H;(2)(09226H)=5678H;(3)(AX)=1E40H;(4)(1E4F6H)=0024H;(5)(09226H)=1234H,(AX)=5678H.6.已知(SS)=09l5H,(DS)=0930H,(SI)=0A0H,(DI)=1C0H,(BX)=80H,(BP)=470H。现有一指令“MOVAX,OPRD”,如源操作数的物理地址为095C0H,试用四种不同寻址方式改写此指令(要求上述每个已知条件至少要使用一次)。答:(1)MOVAX,[BP](2)MOVAX,[BP+DI+80H](3)MOVAX,[DI+0100H]MOVAX,[SI+0220H]www.khdaw.com 课后答案网www.khdaw.com(4)MOVAX,[02C0H]7.试按下列要求分别编制程序段:(1)把标志寄存器中符号位SF置‘1’。(2)寄存器AL中高低四位互换。(3)由寄存器AX,BX组成一个32位带符号数(AX中存放高十六位),试求这个数的负数。(4)现有三个字节存储单元A,B,C。在不使用ADD和ADC指令的情况下,实现(A)+(B)=>C。(5)用一条指令把CX中的整数转变为奇数(如原来已是奇数,www.khdaw.com则CX中数据不变,如原来是偶数,则(CX)+1形成奇数)。答:(1)MOVAH,80HSAHF(2)MOVBL,0FHANDBL,ALSAL4SHR4XORAL,BL(3)MOVDX,7FHSUBAX,DXMOVDX,0FFHSUBDX,BXMOVBX,DX(4)MOVAH,FFHMOVBL,[B]SUBAH,BLMOVBH,[A]SUBBH,AHMOV[C],BH(5)MOVAX,CXNOTAXTEST01HJNZNEXTHLTNEXT:INCCXHLT8.试给出下列各指令的机器目标代码:(1)MOVBL,12H[SI]www.khdaw.com 课后答案网www.khdaw.com(2)MOV12H[SI],BL(3)SALDX,1(4)ADD0ABH[BP][DI],1234H答:(1)10001010,11011111=8ADF;(2)10001000,01011100=885C;(3)11010001,11100010=D1E2;(4)10000001,10000001=8181.9.执行下列指令后:STR1DW‘AB’STR2DB16DUP(?)www.khdaw.comCNTEQU$-STR1MOVCX,CNTMOVAX,STR1HLT寄存器CL的值是多少?寄存器AX的值是多少?答:寄存器CL的值为12H,寄存器AX的值为4241H。10.JMPFARPTRABCD(ABCD是符号地址)的转移方式是什么?答:JMPFATPTRABCD的转移方式是段间直接转移.11.MOVAX,ES:[BX][SI]的源操作数的物理地址是多少(用CS、DS、ES、SS、BX、SI表示出即可)?答:MOVAX,ES:[BX][SI]的源操作数的物理地址是[ES]×10H+[BX]+[SI].12.运算型指令的寻址和转移型指令的寻址,其不同点在什么地方?答:运算型指令的寻址包括立即数寻址。寄存器寻址,直接寻址,寄存器间接寻址,寄存器相对寻址和基址加变址寻址方式。这些寻址方式中,CS,IP寄存器的内容不会发生变化。转移型指令的寻址方式包括段内直接寻址,段内间接寻址,段间直接寻址,段间间接寻址。在后三种寻址方式中,CS,IP寄存器的内容发生改变。13.如果TABLE为数据段中0032单元的符号名,其中存放的内容为1234H,当执行指令”MOVAX,TABLE”和”LEAAX,TABLE”后,(AX)中的内容分别为多少?答:执行MOVAX,TABLE后(AX)=1234H执行LEAAX,TABLE后(AX)=0032.14.当指令”SUBAX,BX”执行后,CF=1,说明最高有效位发生了什么现象?对无符号数来说,操作结果发生了什么现象?答:执行指令SUBAX,BX后,CF=1,说明最高位发生了借位对无符号来说,操作结果发生了溢出。www.khdaw.com 课后答案网www.khdaw.com15.在1000H单元中有一条二字节指令JMPSHORTLAB,如果其中的偏移量分别为30H、6CH、0B8H,则转向地址LAB的值分别为多少?答:转向地址LAB的值分别为:1000×10H+2H+30H=10032H1000×10H+2H+6CH=1006EH1000×10H+2H+B8H=100BAH16.下面两个语句的区别在什么地方:X1EQU1000HX2=1000Hwww.khdaw.com答:“EQU”和“=”都可以作为赋值语句,但二者的区别是EQU伪操作中的表达式是不许重复定义的,而“=”伪操作则许重复定义。17.调用指令CALL可进行哪四种调用?答:调用指令CALL可进行段内直接调用,段内间接调用。段间直接调用。段间间接调用。18.(AL)=9AH,(BL)=0BCH,当分别进行下列指令运算后,请写出标志位ZF、PF、CF、SF的内容:(P8050)(1)ADDAL,BL(2)SUBAL,BL(3)ANDAL,BL(4)ORAL,BL(5)XORAL,BL答:(1)ADDAL,BL10011010+)101111001,01010110∴ZF=0,PF=1CF=1SF=0(2)SUBAL,BL1001101010011010—)10111100—〉+)0100010011011110∴ZF=0PF=1CF=1SF=1(3)ANDAL,BL10011010AND)10111100∴ZF=0PF=0CF=0SF=0www.khdaw.com 课后答案网www.khdaw.com10011000(4)ORAL,BL10011010OR)10111100∴ZF=0PF=1CF=0SF=010111110(5)XORAL,BL10011010XOR)10111100∴ZF=0PF=0CF=0SF=0www.khdaw.com0010011019.若(SP)=2800H,试用两种方法实现(SP)=27FEH.答:方法一:执行一次PUSH指令PUSHCX方法二:执行一次PUSHF指令20.试简述LESREG,SRC所完成的操作?答:LESREG,SRC是将SRC和SRC+1中的偏移量送到REG寄存器,而将SRC+2和SRC+3中的段基址送ES段寄存器。21.关系操作符EQ、NE、LT、GT、LE、GE计算的结果为逻辑值,试问0FFFFH代表假,0代表真是否正确?答:0FFFFH代表真。0表示结果为假。22.堆栈存取操作是以字节为单位的.试分析当堆栈存入数据和从堆栈取出数据时SP的变化?答:当堆栈存入一个字时,(SP)<—SP—2从堆栈中取出一个字时(SP)<—SP+223.试编写汇编程序段完成以下功能:将1000个字符的字符串从内存的BUFFER1搬移到内存的BUFFER2中去。解答LEASI,BUFFER1LEADI,BUFFER2MOVCX,1000CLDREPMOVSb24.试编写汇编程序段完成以下功能:将数据段中100个字的数据块BLOCK1搬移到同一个数据段的BLOCK2中去。解答:LEASI,BLOCK1www.khdaw.com 课后答案网www.khdaw.comLEADI,BLOCK2MOVCX,100CLDREPMOVSW25.试编写汇编程序段完成以下功能:比较DEST和SOURCE中的500个字节,找出第一个不相同的字节,如果找到,则将SOURCE中的这个数送AL中。解答:CLDLEADI,DESTLEASI,SOURCEwww.khdaw.comMOVCX,500REPECMPBJCXZNEXTDECSIMOVAL,BYTEPTR[SI]NEXT:HLT26.试编写汇编程序段完成以下功能:求最大值,若自BLOCK开始的内存缓冲区中,有100个带符号的数,希望找到其中最大的一个值,并将它放到MAX单元中。解答:MOVBX,OFFSETBLOCKMOVAX,[BX]MOVCX,100ADDBX,2F0:CMPAX,[BX]JGEF1MOVAX,BXF1:ADDBX,2JCXZNEXTJMPF0MOVMAX,AXNEXT:HLT27.假定(SS)=2000H,(SP)=0100H,(AX)=2107H,执行指令PUSHAX后,存放数据21H的物理地址是多少?解答:07Hwww.khdaw.com 课后答案网www.khdaw.com21H<—原栈顶20100存放数据21H的物理地址是200FFH第五章汇编语言程序设计习题解答1.指出下列指令的错误:(1)MOVAH,BXwww.khdaw.com(2)MOV[BX],[SI](3)MOVAX,[SI][DI](4)MOVMYDAT[BX][SI],ES:AX(5)MOVBYTEPTR[BX],1000(6)MOVBX,OFFSETMYDAT[SI](7)MOVCS,AX答:(1)MOVAH,BXAH为八位,BX为16位(2)MOV[BX],[SI]两个操作数不能都是存储单元(3)MOVAX,[SI][DI]一个操作数中不能用两个变址寄存器(4)MOVMYDAT[BX][SI],E8:AXESES后应为一个变址寄存器,表示偏移量(5)MOVBYTEPTR[BX],1000BYTE说明时BX进行字节操作。而1000为字(6)MOVBX,OFFSETMYDAT[SI]OFFSET为取某个地址的偏移量,故后面不应用[SI],而应是一个符号地址。(7)MOV是数据寻址,不应用程序段寄存器CS.2.下面哪些指令是非法的?(假设OPl,OP2是已经用DB定义的变量)(1)CMPl5,BX(2)CMPOPl,25(3)CMPOPl,OP2(4)CMPAX,OPl答:(1)CMP15,BX非法,两个操作数不能一个为字,一个为字节(2)CMPOP1,25正确(3)CMPOP1,OP2正确(4)CMPAX,OP1非法,两操作数不能一个为字,一个为字节www.khdaw.com 课后答案网www.khdaw.com3.假设下列指令中的所有标识符均为类型属性为字的变量,请指出下列指令中哪些是非法的?它们的错误是什么?(1)MOVBP,AL(2)MOVWORD_OP[BX+4*3][DI],SP(3)MOVWORD_OPl,WORD_OP2(4)MOVAX,WORD_OPl[DX](5)MOVSAVE_WORD,DS(6)MOVSP,SS:DATA_WORD[BX][SI](7)MOV[BX][SI],2(8)MOVAX,WORD_OPl+WORD_OP2www.khdaw.com(9)MOVAX,WORD_OPl-WORD_OP2+100(10)MOVWORD_OPl,WORD_OPl-WORD_OP2答:(1)MOVBP,AL非法,BP为16位AL为八位(2)MOVWORD_OP[BX+4*3][DI],SP正确(3)MOVWORD_OP1,WORD_OP2非法,两个操作数不能都是变量(4)MOVAX,WORD_OP1[DX]非法,[DX]应改为[BX],[BP],[SI]或[DI],则为寄存器相对寻址。(5)MOVSAVE_WORD,DS非法,未指明数据段地址DS的偏移量(6)MOVSP,SS:DATA_WORD[BX][SI]非法,SS与[BX],[SI]不匹配,SS的偏移量用SP(7)MOV[BX][SI],2正确(8)MOVAX,WORD_OP1+WORD_OP2正确(9)MOVAX,WORD_OP1—WORD_OP2+100正确(10)MOVWORD_OP1,WORD_OP1—WORD_OP2非法4.假设VAR1和VAR2为字变量,LAB为标号,试指出下列指令的错误之处:(1)ADDVAR1,VAR2(2)SUBAL,VAR1(3)JMPLAB[SI](4)JNZVARl(5)JMPNEARLABwww.khdaw.com 课后答案网www.khdaw.com答:(1)ADDVAR1,VAR2ADD指令中,目的操作数必须是寄存器或存储单元。(2)SUBAL,VAR1AL为8位的,而VAR为字变量16位(3)JMPLAB[SI]格式不对,LAB处应为一偏移量,而不是标号。(4)JNZVAR1JNZ为非零转移,应转移到某个程序段,故后面应为一个标号。(5)JMPNEARLABwww.khdaw.com段内直接转移,格式应为JMPNEARPTRLAB5.画图说明下列语句所分配的存储空间及初始化的数据值。BYTE-VARDB‘BYTE’,12,-12H,3DUP(0,?,2DUP(1,2),?)WORD-VARDW5DUP(0,1,2),?,-5,’BY’,’TE’,256H解答:(1)BYTE-VAR(2)WORD-VARwww.khdaw.com 课后答案网www.khdaw.com42595445OCF4H0-12www.khdaw.com12-0-1212-0-1212-www.khdaw.com 课后答案网www.khdaw.com┊B00Y00T01E001202-12H00┊┊00www.khdaw.com0001000200--FBFF5942455456026.试列出各种方法,使汇编程序把5150H存入一个存储器字┊中。解答:(1)DW5150H;(2)DB50H,51H;(3)DB‘PQ’7.请设置一个数据段DATASG,其中定义以下字符变量或数据变量。FLD1B为字符串变量:‘personalcomputer’;FLD2B为十进制数字节变量:32;FLD3B为十六进制数字节变量:20;FLD4B为二进制数字节变量:01011001;FLD5B为数字的ASCII字符字节变量:32654;FLD6B为10个零的字节变量;FLD7B为零件名(ASCII码)及其数量(十进制数)的表格:PART120www.khdaw.com 课后答案网www.khdaw.comPART250PART314FLD1W为十六进制数字变量:FFF0;FLD2W为二进制数字变量:01011001;FLD3W为(7)中零件表的地址变量;FLD4W为包括5个十进制数的字变量:5,6,7,8,9;FLD5W为5个零的字变量;FLD6W为本段中字数据变量和字节数据变量之间的地址差。解答:DATASGSEGMENTFLD1BDB‘personalcomputer’www.khdaw.comFLD2BDB32DFLD3BDB14HFLD4BDB01011001BFLD5BDB32654FLD6BDB10DUP(0)FLD7BDB‘PART1’,20D,‘PART2’,50D,‘PART3’,14DFLD1WDW0FFFOHFLD2WDW01011001BFLD3WDW[FLD7B]FLD4WDW5,6,7,8,9FLD5WDW5DUP(0)FLD6WDWFLD1W-FLD1BDATASGENDS8.假设程序中的数据定义如下:PARTNODW?PNAMEDB16DUP(?)COUNTDD?PLENTHEQU$-PARTNIO问PLENTH的值为多少?它表示什么意义?解答:PLENTH代表着PARTNO至PLENTH的地址差,也即三段数据的字节数PLENTH=22。9.有符号定义语句如下:BUFFDB1,2,3,‘123’EBUFFDB0LEQUEBUFF-BUFF问L的值为多少?解答:L=610.假设程序中的数据定义如下:www.khdaw.com 课后答案网www.khdaw.comLNAMEDB30DUP(?)ADDRESSDB30DUP(?)CITYDB15DUP(?)CODE-LISTDB1,7,8,3,2(1)用一条MOVE指令将LNAME的偏移地址放入AX。(2)用一条指令将CODE-LIST的头两个字节的内容放入SI。(3)写一条伪操作使CODE-LENGTH的值等于CODE-LIST域的实际长度。解答:(1)MOVEAX,0FFSETLNAME;(2)MOVESI,0701H;(3)DE-LENGTHEQULENGTHCODE-LIST。www.khdaw.com11.试写出一个完整的数据段DATA-_SEG,它把整数5赋与一个字节,并把整数-1,0,2,5和4放在10字数组DATA-_LIST的头5个单元中。然后写出完整的代码段,其功能为:把DATA-_LIST中头5个数中的最大值和最小值分别存入MAX和MIN单元中。解答:DATA_SEGSEGMENTLENGTHDB5DATA_LISTDW–1,0,2,5,4,5DUP(?)MAXDW?MINDW?DATA_SEGENDSCODE_SEGSEGMENTASSUMECS:CODE_SEG,DS:DATA_SEGSTART:MOVAX,DATA_SEGMOVDS,AXMOVSI,OFFSETDATA_LISTMOVAX,[SI]MOVBX,[SI]MOVCX,LENGTHXORAX,AXXORBX,BXCLCAGAIN:CMPAX,[SI]JGNEXT1MOVAX,[SI]NEXT1:CMPBX,[SI]JNGNEXT2MOVBX,[SI]NEXT2:JNZAGAINwww.khdaw.com 课后答案网www.khdaw.comMOVMAX,AXMOVMIN,BXCODEENDSENDSTART12.给出等值语句如下:ALPHAEQU100BETAEQU25GAMMAEQU2下列表达式的值是多少?(1)ALPHA*100+BETAwww.khdaw.com(2)ALPHAMODGAMMA+BETA(3)(ALPHA+2)*BETA-2(4)(BETA/3)MOD5(5)(ALPHA+3)*(BETAMODGAMMA)(6)ALPHAGEGAMMA(7)BETAAND7(8)GAMMAOR3解答:(1)=10025;(2)=19;(3)=2548;(4)=3;(5)=103;(6)=0;(7)=01H;(8)=03H。13.对于下面的数据定义,三条指令分别汇编成什么?TABLEADW10DUP(?)TABLEBDB10DUP(?)TABLECDB‘1234’┊┊MOVEAX,LENGTHTABLEAMOVEBL,LENGTHTABLEBMOVECL,LENGTHTABLEC解答:MOVEAX,10MOVEBL,10MOVECL,114.对于下面的数据定义,各条MOVE指令单独执行后,有关寄存器的内容是什么?FLDBDBTABLEADW20DUP(?)TABLEBDB‘ABCD’www.khdaw.com 课后答案网www.khdaw.comMOVEAX,TYPEFLDBMOVEAX,TYPETABLEAMOVECX,LENGTHTABLEAMOVEDX,SIZETABLEAMOVECX,LENGTHTABLEB解答:AX=0001HAX=0002HCX=0014HDX=0028Hwww.khdaw.comCX=0001H。15.指出下列伪操作表达方式的错误,并改正之。(1)DATA_SEGSEG(2)SEGMENT‘CODE’(3)MYDATASEGMENT/DATA┆ENDS(4)MAIN_PROCPROCFAR┆ENDMAIN_PROCMAIN_PROCENDP答:(1)DATA-SEGSEGMENT(2)CODESEGMENTPARA"CODE"(3)/DATA错。定义数据段应在代码段中用ASSUME。ENDS缺少‘MYDATA’。(4)多余END,MAIN-PROC应删除。16.按下面的要求写出程序的框架(1)数据段的位置从0E000H开始,数据段中定义—个l00字节的数组,其类型属性既是字又是字节;(2)堆栈段从小段开始,段组名为STACK,(3)代码段中指定段寄存器,指定主程序从1000H开始,给有关段寄存器赋值;(4)程序结束。答:DATA-SEGSEGMENTORG0E000HBYTE-ARRAYLABLEBYTEWORD-ARRAYDW50DUP(?)www.khdaw.com 课后答案网www.khdaw.comDATA-SEGENDSSTACK-SEGSEGMENTPARA"STACK"STACK-SEGENDSCODE-SEGSEGMENTASSUMECS:CODE-SEG,DS:DATA-SEG,SS:STACK-SEGORG1000HSTART:MOVAX,DATA-SEGMOVDS,AXMOVAX,STACK-SEGMOVSS,AXwww.khdaw.com..CODE-SEGENDSENDSTART17.假设在数据段X_SEG、附加段Y_SEG和堆栈段Z_SEG中分别定义了字变量X,Y和Z。试编制一完整的程序计算X←X+Y+Z答:X-SEGSEGMENTXDW?X-SEGENDSZ-SEGSEGMENTZDW?Z-SEGEMDSY-SEGSEGMENTYDW?Y-SEGENDSCODESEGMENTMAINPROCFARASSUMEES:Y-SEG,CS:CODE,DS:X-SEG,SS:Z-SEGSTARTPUSHDSSUBAXAXPUSHAXMOVAX,Y_SEGMOVES,AXMOVAX,Z_SEGMOVSS,AXMOVAX,X_SEGMOVDS,AXwww.khdaw.com 课后答案网www.khdaw.comMOVAX,DS:XMOVBX,ES:YADDAXBXJOOVERFLOWMOVBX,SS:ZADDAX,BXJOOVERFLOWMOVDS:X,AXOVERFLOW:RETMAINENDPwww.khdaw.comCODEENDSENDSTART18.写一个完整的程序放在代码段C_SEG中,要求把数据段D_SEG中的AUGEND和附加段E_SEG中的ADDEND相加,并把结果存放在D_SEG段中的SUM中。其中AUGEND、ADDEND和SUM均为双精度数,AUGEND赋值为99251,ADDEND赋值为-15962。解答:TITLESUMD_SEGSEGMENTAUGWLABELWORDAUGENDDD99251SUMDW2DUPL(?)D_SEGENDSE_SEGSEGMENTADDWLABELWORDADDENDDD-15962E_SEGENDSC_SEGSEGMENTASSUMEDS:D_SEG,ES:E_SEG,CS:C-SEGMAINPROCFARSTART:PUSHDSMOVEAX,0PUSHAXMOVAX,D_SEGMOVDS,AXMOVAX,E_SEGMOVES,AXADDT:MOVAX,AUGWMOVBX,AUGW+2www.khdaw.com 课后答案网www.khdaw.comADDAX,ES:ADDWADCBX,ES:ADDW+2MOVSUM,AXMOVSUM+2,BXRETMAINENDPC_SEGENDSENDSTART19.读下面程序段,请问:在什么情况下,本段程序的执行结果是AH=0?www.khdaw.comBEGIN:INAL,5FHTESTAL,80HJZBRCHlMOVAH,0JMPSTOPBRCHl:MOVAH,0FFHSTOP:HLT解答:AL中的最高位为1时。20.读程序:START:INAL,20HMOVBL,ALINAL,30HMOVCL,ALMOVAX,0ADLOP:ADDAL,BLADCAH,0DECCLJNZADLOPHLT请问:(1)本程序实现什么功能?(2)结果在哪里?解答:完成20H*30H,结果在AX中。21.请编一程序段完成AX*l0的任务(要求不准用乘法指令做)。解答:MOVBX,AXMOVCL2SHLAX,CLADDAX,BXSHLAX,1www.khdaw.com 课后答案网www.khdaw.com22.编程序使:(1)AX寄存器低4位清零。(2)BX寄存器低4位置“1”。(3)CX寄存器低4位变反。(4)用TEST指令测试DL寄存器位3、位6是否同时为0,若是,将0送DL;否则l送DH。解答:1,ANDAX,0FFF0H2,ORBX,000FH3,XORCX,000FH4,TESTDL,48Hwww.khdaw.comJZLOOPMOVDH,1HLTLOOP:MOVDL,0HLT23.编一程序段,完成符号函数(-128≤x≤127):1(x.>0)y=0(x=0)-1(x<0)假设x的值存放在DATAl中,y的值存放在DATA2中。解答:START:MOVAL,DATA1ANDAL,ALJGEBIGRMOVAL,0FFHMOVDATA2.ALHLTBIGR:JEEQULMOVAL,1MOVDATA2,ALHLTEQUL:MOVDATA2,ALHLT24.设AX寄存器中有一个16位二进制数,编一程序,统计AX中“l”的个数,统计结果送CX中。解答:START:MOVCX,0LOOP:SUBAX,0JZSTPwww.khdaw.com 课后答案网www.khdaw.comSALAX,1JNCNODINCCXNOD:JMPLOOPSTP:HLT25.编一子程序利用XLAT指令把十六进制数转换成ASCII码。假设ASCII码存放在以DAT1为首地址的数据区中,对应的16进制数放在以DAT2为首地址的数据区中,转换结果送以DAT3为首地址的数据区中。解答:MAIN:PUSHBXwww.khdaw.comPUSHSIPUSHDIPUSHCXPUSHALPUSHDSSTART:MOVBX,DATA1MOVSI,DATA2MOVDIDATA3MOVCX,16NEST:LODSBXLATDATA1STOSBLOOPNESTPOPDSPOPALPOPCXPOPDIPOPSIPOPBXRET26.(略)27.试分三种情况说明:当NUM字节单元中数据是什么情况时,TEMP字节单元分别是多少?NUMDBXXTEMPDB?┆┆MOVAL,NUMwww.khdaw.com 课后答案网www.khdaw.comTESTAL,99HJNERESANDAL,99HJMPEND0RES:JSNEINCALJMPEND0NE:DECALEND0:MOVTEMP,AL┆www.khdaw.com答:NUM字节单元中的数据是一个八位2进制数。当其第1、4、5、8位均为0时,将此数装入temp单元,若不满足此条件,则又分为两种情况,其最高位为1时(负数),将此数减1装入temp单元;其最高位为0时(正数),将此数加1装入temp单元。28.试编制一程序,把CHAR1中各小写字母分别转换为对应的大写字母,并存放在CHAR2各字节单元中:CHAR1DB‘capitalize’CHAR2DB$-CHAR1DUP(?)解答:MOVCX,0AHMOVSI,0MOVAX,1AHLOOP1:ADDAX,CHAR1[SI]MOVCHAR2[SI],AXINCSILOOPLOOP129.试编制一程序,把DA_BYl字节单元中数据分解成三个八进制数,其高位八进制数存放在DA-BY2字节单元中,最低位存放在DA_BY2+2字节单元中。DA_BY1DB6BHDA_BY2DB3DUP(0)解答:MOVAL,DA-BY1+1SHRAL,2MOVDA-BY2,ALMOVAL,DA-BY1ANDAL,07H;(0,111)MOVDA-BY2+2,AL30.试编制一程序,找出DA数据区中带符号的最大数和最小数。解答:MOVCX,LENGTHwww.khdaw.com 课后答案网www.khdaw.comMOVBX,0000HMOVDX,0000HMOVSI,0000HLOOP1:MOVAX,ADDRESS[SI]CMPAX,80HJGEW1CMPAX,BXJGW2INCSILOOPLOOP1www.khdaw.comHLTW1:CMPAX,DXJGEW3JMPLOOP1W3:MOVDX,AXJMPLOOP1W2:MOVBX,AXJMPLOOP131.试编制一程序,统计出某数组中相邻两数间符号变化的次数。解答:MOVCX,LENGTHMOVSI,0MOVAX,ADDRESS[SI]ANDAX,80HINCSIMOVBX,ADDRESS[SI]ANDBX,80HSUBBX,AXNEGBXCMPBX,80HJGW1LOOPLOOP1HLTW1INCDXJMPLOOP1HLT32.设某数据段已有N个学生的某科成绩(百分制),并按学号的次序www.khdaw.com 课后答案网www.khdaw.com存放在以STUD为首址各字单元的低字节中。现在要求按成绩的高低记入名次,并把名次填入成绩所在字单元的高字节中,各字单元的信息格式为:15870名成绩次成绩相同者,名次相同。试编制一程序实现上述要求(不要排序)。’解答:START:MOVBX,OFFSETSTUDMOVDX,OFFSETSTUD;BX,DX中放置成绩表www.khdaw.com的偏移地址MOVCX,N—1;CX中放置的是要比较的次数MOVSI,0;名次放在SI中LOOP1:MOVAL,[DX]LOOP2:MOVBX,[BX+2];取下一个同学的成绩CMPAL,[BX]JANEXT;如果比下一个同学成绩高则到NEXT即使名次加一DECCX;否则计数值减一JNELOOP2;计数不为零再循环取下一个同学成绩MOV[DX+1],SIHLTNEXT:ADDSI,1;名次加一DECCXJNELOOP2MOV[DX+1],SI;如果计数为零比较完毕,最后将名次放到与成绩相连的单元中去MOVDX,[DX+2];取下一个成绩去和其他N—1个数比较LOOPLOOP1HLTENDSTART33.试编制程序,分别对NUM中各数统计出有多少个20,余下有多少个5,再余下有多少个2,再余下有多少个1。统计的各数分别存放在NUM20,NUM5,NUM2,NUM1的对应位置中,程序要求用主程www.khdaw.com 课后答案网www.khdaw.com序子程序形式编制,而且用两种参量传递方法分别编制主程序和子程序。数据段如下:DATASEGMENTNUMDW0133H,0D5FH,1234HCOUNTEQU($-NUM)/TYPENUMNUM20DBCOUNTDUP(0)NUM5DBCOUNTDUP(0)NUM2DBCOUNTDUP(0)NUM1DBCOUNTDUP(0)DATAENDSwww.khdaw.com解答:DADASEGMENTNUMDW0133H,0D5FH,1234HCOUNTEQU($-NUM)/TYPENUMNUM20DBCOUNTDUP(0)NUM5DBCOUNTDUP(0)NUM2DBCOUNTDUP(0)NUM1DBCOUNTDUP(0)CMPNUMDB20,5,2,1DATAENDSCODESEGENTASSUMEDS:DATAASSUMECS:CODEMAINPROCFARSTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSETNUM20MOVCX,COUNTMOVBX,OFFSETCMPNUMMOVSI,0MOVDI,0CALLCMPDATACMPDATAPROCNEARPUSHAXPUSHDXLOOP:MOVDX,[DI]LOOP1:MOVAX,[SI]www.khdaw.com 课后答案网www.khdaw.comCMPAX,DXJENEXTINESILOOPLOOP1JMPAGAINNEXT:ADD[BX][SI],1INCSILOOPLOOP1AGAIN:MOVCX,4ADDDI,COUNTwww.khdaw.comLOOPLOOPHLTPUSHDXPUSHAXCMPDADTENDPMAINENDPCODEENDSENDSTART34.已知两个正整数BE1(1~14)和BE2(0~14),但是,BEl+BE2<15。试编制一程序,把DA_WORD字单元的内容从第BE1位开始,自左至右的BE2个位清零,其余各位保持不变。处理的数据放在RESU单元中。解答:MOVBL,BE1MOVCX,BE2MOVDX,0LOOP:MOVAX,1SALAX,BLADDDX,AXDECBXDECCXJNZLOOP;此循环的目的是保证DX中的16位数的DE1位到其后BE2个位全部为一NOTDX;将DX中的数取反,保证BE1位到BE2位个数全为零,其他为1MOVBX,OFFSETDA-WORDAND[BX],DX35.编写一条宏指令CLRB,完成用空格符将一字符区中的字符取代的工作。字符区首地址及其长度为变元。解答:CLRBMACROn,cblockwww.khdaw.com 课后答案网www.khdaw.comMOVCX,n;长度为nMOVAL,‘’;把空格送到AL中LEADI,cblock;DI中放字符区首地址REPSTOSB;重复操作直到CX=0ENDM36.某工厂计算周工资的方法是每小时的工资率RATE乘以工作时间HOUR,另外每工作满十小时加奖金3元,工资总数存放在WAG中,请将月工资的计算编写成一条宏指令WAGES,并展开宏调用:WAGESR1,42解答:宏定义:www.khdaw.comWAGESMACRORATE,HOURMOVAL,HOURMULRATEMOVBX,AXMOVAX,HOURDIV10MUL3ADDBX,AXMOVWAG,BXENDM宏调用:WAGESR1,42宏展开:MOVAL,42MULR1MOVBX,AXMOVAX,42DIV10MUL3ADDBX,AXMOVWAG,BX37.给定宏定义如下:DIFMACROAX,YMOVAX,XSUBAX,YENDMABSDIFMACROV1,V2,V3LOCALCONTwww.khdaw.com 课后答案网www.khdaw.comPUSHAXDIFV1,V2CMPAX,0JGECONTNEGAXCONT:MOVV3,AXPOPAXENDM试展开以下调用,并判定调用是否有效。(1)ABSDIFPl,P2,DISTANCEwww.khdaw.com(2)ABSDIF[BX],[SI],X[D1],CX(3)ABSDIF[BX][S1],X[BX][S1],240H(4)ABSDIFAX,AX,AX解答:(1)宏展开:+PUSHP1+MOVP1,X+SUBP1,P2+CMPP1,0+JGE??0000+NEGP1+??0000:MOVDISTANCE,P1+POPP1调用有效(2)宏展开:+PUSH[BX]+MOV[BX],X+SUB[BX],[SI]+CMP[BX],0+JGE??0000+NEG[BX]+??0000MOVX[DI],[BX]+POP[BX](3)宏展开:+PUSH[BX][SI]+MOV[BX][SI],X+SUB[BX][SI],X[BX][SI]+CMP[BX][SI],0+JGE??0000www.khdaw.com 课后答案网www.khdaw.com+NEG[BX][SI]+??0000:MOV240H[BX][SI]POP[BX][SI](4)宏展开:+PUSHAX+MOVAX,X+SUBAX,AX+CMPAX,0+JGE??0000+NEGAXwww.khdaw.com??0000:MOVAXAXPOPAX调用有效38.试编制宏定义,要求把存储器中的一个用EOT字符结尾的字符串传送到另一个存储区去。解答:SENDMACROSCHARS,DCHARSLOCALNEXT,EXITPUSHAXPUSHSIMOVSI,0NEXT:MOVAX,SCHARS[SI]MOVDCHARS[SI],ALCMPAL,24HJZEXITINCSIJMPNEXTEXIT:ENDM39.宏指令BIN_SUB完成多个字节数据连减的功能:RESULT←(A-B-C-D-…)要相减的字节数据顺序存放在首地址为OPERAND的数据区中,减数的个数存放在COUNT单元中,最后结果存入RESULT单元。请编写此宏指令。解答:BIN-SUBMARCOOPERAND,COUNT,RESULTMOVAXOPERAND+1LOOP1:CMPCOUNT,0JNGEXITMOVBXOPERAND+2www.khdaw.com 课后答案网www.khdaw.comSUBAX,BXDECCOUNTINCOPERANDLOOPLOOP1EXIT:MOVRESULTAXENDM40.请用宏指令定义一个可显示字符串GOOD:’GOODSTUDENTS:CLASSXNAME’,其中X和NAME在宏调用时给出。解答:MSGGENMACROLAB,X,NAMELABDB`GOOD:‘GOODSTUDENTS:www.khdaw.comCLASS&X&NAME’`LOOPPRINTITPRINTIT:MOVDLLAB+1;将ASCII代码串放入DLMOVAH,2INT21HDECLABENDM缺4142.定义宏指令并展开宏调用。宏指令JOE把一串信息’MESSAGENO.K’存入数据存储区XK中。宏调用为:I=0JOETEXT,I┆JOETEXT,IJOETEXT,I解答:joemacroa,j;macroa,%j;j=j+1endmmarymacrox,k;x&kdbmessageno,&k;endmi=ojoetext,iwww.khdaw.com 课后答案网www.khdaw.com+text0db"messageno.o"joetext,i+text1db"messageno.1"joetext,i+textdb"messageno.2"43.大多数DOS功能调用都需要在AH寄存器中存放不同的功能码。请将这种功能调用定义成宏指令DOS21。再定义宏指令DISP完成显示字符的功能,其中可使用已定义的DOS21。然后展开宏调用DISP’*’。解答:DOS21MACRONUMwww.khdaw.comMOVAH,NUMINT21HEDMDISP‘MACROZIFU’MOVDI,‘ZIFU’DOS2102HENDM宏调用:DISP‘*’宏展开:MOVDL,‘*’MOVAH,02HINT21H44.宏指令STORE定义如下:STOREMACROX,NMOVX+I,II=I+1IFI-NSTOREX,NENDIFENDM试展开下列调用:I=0STORETAB,7解答:I=0storetab,7movtab,0I=1www.khdaw.com 课后答案网www.khdaw.comstoretab,7+movtab+1,1I=2storetab,7+movtab+2,2I=3storetab+3,3+movtab+3,3I=4storetab,7www.khdaw.com+movtab+4,4I=5storetab,5+movtab+5,5I=6storetab,7+movtab+6,645.试编写非递归的宏指令,使其完成的工作与44题的STORE相同。解答:storemacrokmovtab+k,kendmhongdiaoyongi=orept7store%ii=i+1endm46.试编写一段程序完成以下功能,如给定名为X的字符串长度大于5时,下列指令将汇编10次。ADDAX,AX解答:reptmacrox,rmovax,oper1ifxgt5r=0rept10r=r+1addax,axendm47.定义宏指令FINSUM:比较两个数X和Y,若X>Y则执行SUM←www.khdaw.com 课后答案网www.khdaw.comX+2*Y;否则执行SUM←2*X+Y解答:finsummacrox,y,sum;movbx,xmoval,2ifxgtymulyaddbx,axmovdx,summovdx,bxifxltywww.khdaw.commovbx,xmulxmovdx,summovdx,bxendmaaa48.试编写一段程序完成以下功能:如变元X=’VT55’,则汇编MOVTERMINAL,0;否则汇编MOVTERMINAL,1。解答:premacrox,arg,terminalmovargifidnx,argmovterminal,0ifdifx,argmovterminal,1endm49.对于DOS功能调用,所有的功能调用都需要在AH寄存器中存放功能码,而其中有一些功能需要在DX中放一个值。试定义宏指令DOS21,要求只有在程序中定义了缓冲区时,汇编为:MOVAH,DOSFUNCMOVDX,OFFSETBUFFINT21H否则,无MOVDX,OFFSETBUFF指令。并展开以下宏调用:DOS2101DOS210AH,IPFIELD解答:DOS21MACRODOSFUNC,BUFFMOVAH,DOSFUNCIFB〈BUFF〉INT21HELSEwww.khdaw.com 课后答案网www.khdaw.comMOVDX,OFFSETBUFF宏展开:DOS2101MOVAH,0HINT21HDOS210AH,IPFIEIDMOVAH,0AHMOVDX,IPFIELDINT21H50.编写一段程序,使汇编程序根据SIGN中的内容分别产生不同的www.khdaw.com指令。如果(SIGN)=0,则用字节变量DIVD中的无符号数除以字节变量SCALE;如果(SIGN)=1,则用字节变量DIVD中的带符号数除以字节变量SCALE,结果都存放在字节变量RESULT中。解答:MOVAL,DIVDIFESIGNMOVAH,0DIVSCALEELSECBWIDIVSCALEENDIFMOVRESULT,AL第六章输入输出处理方法习题1.如果8251A设定为异步通信方式,发送器时钟输入端和接收器时钟输入端都连接到频率为19.2KHZ的输入信号,波特率因子为16,则波特率为--()。(A)1200(B)2400(C)9600(D)19200答:A2.试分析,在数据通信中,比特率与波特率分别代表的含义?答:比特率指数据通信中信号频率每秒钟变化的次数;波特率指数据通信过程中每秒种传送的位数(bit/s),故1波特=1www.khdaw.com 课后答案网www.khdaw.com位/秒。3.8255A工作在方式1时,端口A和端口B作为数据输入/输出使用,而端口C的各位分别作为端口A和端口B的控制信息和状态信息。其中作为端口A和端口B的中断请求信号的分别是端口C的()。(A)PC4和PC2(B)PC5和PC1(C)PC6和PC7(D)PC3和PC0答:D4.在DMA传送过程中完成数据传送功能是由()。(A)CPU执行从存储器读出的指令(B)CPU直接控制外部设备与存储器(C)DMAC执行从存储器读出的指令www.khdaw.com(D)外部设备中的控制部件直接控制(E)DMAC的硬件直接控制答:E5.DAC0832是一个分辨率为(1),输入具有(2)功能的D/A转换器。(A)8位(B)10位(C)12位(D)单缓冲(E)双缓冲(F)无缓冲答:AE6.在IBMPC/XT微机中8253-5定时器/计数器的三个通道的工作方式分别为:通道0工作在(1);通道1工作在(2);通道2工作在(3)。(A)方式0(B)方式1(C)方式2(D)方式3(E)方式4(F)方式5答:DCD7.试分析:8251A能不能同时实现发送数据和接受数据的功能?答:8251A是可编程控制的串行接口芯片,对其方式字、命令字及状态字初始化后,规定其通信方工(同步/异步)及数据格式等,命令字来控制发/收,状态字控制何时可以收/发。其实现的是半双工通信方式,不能同时实现发送和接受数据的功能。8.当D/A转换器与CPU相连时,如果CPU的数据总线的位数小于D/A转换器的位数,这时需要采用什么结构?答:当CPU的数据总线的位数小于D/A转换器的位数时,即使采用的D/A转换器内部带有数据缓冲器,也要采用外加三态缓冲器或数据寄存器与CPU相联的结构,并且是两级缓冲,以消除由于两次传送数据而产生的尖峰。9.ADC0809与CPU相连接时,其模拟输入通道的地址由CPU提供。为了确保它对输入信号的可靠转换,需要在它们之间加上什么东西?答:为了确保对输入信号的可靠转换,需在ADC0809的ADDA~ADDCwww.khdaw.com 课后答案网www.khdaw.com和CPU之间加一级地址锁存器或三态锁存器。10.试分析:在异步串行通信工作状态下,通信双方是否需要同步?答:需要同步。异步串行传送是指传送的每一个字符是随机出现在数据流中的,即是把每一个字符看作一个独立的传送单位,字符之间的间隔是随机的、任意的。但是,在一个字符内部的各个二进制位是同步传送的。收发双方对字符的同步是通过在字符格式中设置起始位和停止位来实现的11.简述8086CPU对中断的响应和处理过程。答:8086对各类中断的响应不完全相同,主要区别在于如何获得中断类型码。www.khdaw.comA.可屏蔽中断的响应过程。首先必须满足中断允许标志IF置1,当没有内部中断,非屏蔽中断(NMI=0)和总线请求(HOLD=0)时,外设向中断控制器8259A发出中断请求,经8259A处理,得到相应的中断类型码,并向CPU申请中断(INTR=1)。⑴等待当前指令结束,CPU发出中断响应信号。⑵8259A连续(两个总周期)接收到两个INTA的负脉冲的中断响应信号,则通过数据总线将中断类型码送CPU,CPU把中断类型码乘4作为中断矢量表的地址指针。⑶CPU保护断点,将状态标志字PSW及当前的CS和IP内容压栈。⑷清IF和TF标志为0。⑸查中断矢量表,取中断处理程序首地址,将其分别置入IP和CS中,程序转入执行中断处理程序。B.非屏蔽中断的响应过程:非屏蔽中断请求在NMI加入,等待当前指令执行结束,CPU优先响应NMI中断请求,其中断类型码由硬件决定类型为2,无须从外部引入,其余响应过程与可屏蔽中断相同。C.内部中断响应操作:内部中断响应的共同点是:⑴中断类型码由指令码给定或硬件决定,无须外部逻辑输入;⑵无INTA信号响应周期;⑶不受IF控制;⑷除单步中断外,其它内部中断响应优先于外部中断,响应过程与非屏蔽中断类似。12.8086可引入哪些中断,它们是如何引入的?答:8086具有256种不同中断类型的能力。中断源可来自CPU内部或外部设备,可由硬件或软件产生。A.非屏蔽中断:8086的两条外部中断线是非屏蔽中断NMI和可屏www.khdaw.com 课后答案网www.khdaw.com蔽中断INTR。NMI是边缘触发方式,要求高电平有效。一般用在如电源断电等紧急事件中,优先权较高,请求信号不受标志位IF的影响。NMI中断类型码规定为2。B.INTR可屏蔽中断请求是高电平有效的另一外部硬件中断源,高电平保持时间应维持到当前指令结束。在8086中它不自中断控制器8259A,其外部电路所产生的中断的优先级别由8259A管理产生。CPU只根据标志位IF的状态决定是否响应INTR。C.内部中断:8086的内部中断产生的过程完全与硬件电路无关,是CPU根据软件中某条指令或软件对PSW中的标志设置而产生的。内部中断可分为两大类型:一类是内部已硬件设置好的类型0~类www.khdaw.com型4,它们依次为除法出错、单步中断、NMI、断点中断和溢出中断;另一类是8086的中断系统中有一条两字节的中断指令INTn。n即为中断类型码,CPU根据中断类型码即可找到中断服务程序入口。13.中断入口地址表的功能是什么?已知中断类型码分别为84H和FAH,它们的中断入口在中断入口地址表的什么位置上?答:中断入口地址表又称中断矢量表,它是中断矢量类型码与该中断类型相对应的中断服务程序入口之间的连接表,它设置在系统RAM最底端1024个单元内。中断矢量表共有256种中断类型码,每个类型码占用4个字节。其中低两个字节为中断服务程序入口地址的偏移地址,置入IP;高两位字节为服务程序的段基址置入CS。于是可通过这4个字节的值即可找到该中断类型的中断服务程序入口。中断类型码84H中断入口在中断矢量表的210H中断类型码FAH中断入口在中断矢量表的368H14.为什么在主程序和中断服务程序中都要安排开中断指令?如果开中断指令安排在中断服务程序的末尾,那么将产生什么后果。如果要实现中断嵌套,则开中断指令应如何设置?答:开中断指明CPU允许中断,主程序中在开中断之前要屏蔽本级和低级中断,预防干扰,而后开中断允许处理高级中断请求。在中断处理之后也要开中断,允许任何中断请求。如果没有开中断,更高级中断请求无法响应。在中断服务期间,把该中断的断点保存后在开中断,表示响应更高级中断请求,然后进入中断服务程序,执行中断服务程序,在恢复断点之前关中断,之后又开中断,又可响应更高级中断。15.简述中断控制器8259A的内部结构和主要功能。答:8259芯片内部结构包括八个部分:1、数据总线缓冲器:是一个双向八位三态缓冲器,由它构成8259与CPU之间的数据接口,是8259与CPU交换数据的必经之路。2、读/写控制电路:用来接收来www.khdaw.com 课后答案网www.khdaw.com自CPU的读/写控制命令和片选控制信息。3、级联缓冲/比较器:在多片8259级联使用,构成主从关系。4、中断请求寄存器(IRR):是一个八位寄存器,用来存放由外部输入的中断请求信号IR0-IR7。5、中断服务寄存器(ISR):是一个八位寄存器,用来记录正在处理的中断请求。6、中断屏蔽寄存器(IMR):是一个八位寄存器,用来存放各级中断请求的屏蔽信息。7、优先权判别器(PR)用来识别各中断请求的优先级别。8、控制电路:是8259A内部的控制器,根据中断请求寄存器IRR的置位情况和优先权判别器PR与判定结果向8259A内部其他部件发控制信号,并向CPU发中断请求信号INT和接收中断响应信号INTA控制8259A进入中断服务状态。www.khdaw.com16.8259A对中断优先权的管理方式有哪几种?各是什么含义?答:①完全嵌套方式:ISR寄存器中某位置“1”,表示CPU正在处理这一级中断请求,8259A允许比它级别高的中断请求进入,禁止与它同级或低级中段请求进入。IR引入的中断请求有固定的中断级别,R0最低,R7最高。②自动循环方式:IRN–IR0优先级别不固定。每当任何一级中断被处理完,它的优先级别就被改变为最低,而将最高级赋给比它低一级的中断请求。③中断屏蔽方式:由CPU在任何时候都可安排一条清除中断指令。1)普通屏蔽方式,将IMR中某一位或某几位置“1”,可将相应级的中断请求屏蔽掉。2)特殊屏蔽方式,当CPU正在处理某级中断时,要求仅对本级中断进行屏蔽,而允许其他优先比它高或低的中断进入系统。17.某系统中设置三片8259A级联使用,一片为主8259A;两片为从8259A;它们分别接入主8259A的IR2和IR6端。若已知当前主8259A和从8259A的IR3上各接有一个外部中断源,它们的中断类型码分别为A0H,B0H和C0H,已知它们的中断入口均在同一段中,其段基址为2050H,偏移地址分别为11A0H,22B0H和33C0H,所有中断都采用电平触发方式、完全嵌套、普通EOI结束,请(1)画出它们的硬件连接图;(2)编写全部初始化程序。解答:初始化程序:START:MOVAL,19HMOVDX,偏移地址(主)OUTDX,ALMOVAL,0A0HMOVDX,奇地址(主)OUTDX,ALwww.khdaw.com 课后答案网www.khdaw.comMOVAL,44HOUTDX,ALMOVAL,11HOUTDX,ALMOVAL,11HOUTDX,ALMOVAL,0B3HOUTDX,ALMOVAL,22HMOVDX,偶地址(主)www.khdaw.comOUTDX,ALMOVAL,19HMOVDX,偶地址(从1)OUTDX,ALMOVAL,0B0HMOVDX,奇地址(从1)OUTDX,ALMOVAL,02HOUTDX,ALMOVAL,11HOUTDX,ALMOVAL,0F7HOUTDX,ALMOVDX,偶地址(从1)MOVAL,22HOUTDX,AL从2:MOVAL,19HMOVDX,偶地址(从2)OUTDX,ALMOVAL,0C0HMOVDX,奇地址(从2)OUTDX,ALMOVAL,06HOUTDX,ALMOVAL,11HOUTDX,ALMOVAL,0F7HOUTDX,ALwww.khdaw.com 课后答案网www.khdaw.comMOVDX,偶地址(主)MOVAL,22HOUTDX,ALSTIHH:HLTJMP11H18.可编程计数/定时器芯片8253有几个通道?各采用几种操作方式?简述这些操作方式的主要特点。答:有0,1,2三个通道,各通道有六种工作方式,以完成定时,计数,脉冲发生器等多种功能。www.khdaw.com(1)工作方式0:计数结束中断方式(2)工作方式1:可编程单脉冲发生器(3)工作方式2:速率波发生器(4)工作方式3:方波发生器(5)工作方式4:软件触发方式(6)工作方式5:硬件触发方式19.某系统中8253芯片的通道0~通道2和控制字端口号分别为FFF0H~FFF2H,定义通道0工作在方式2,CLK0=5MHz,要求输出OUT0=lkHz方波;定义通道l工作在方式4,用OUT0作计数脉冲,计数值为1000,计数器计到0,向CPU发中断请求,CPU响应这一中断后继续写入计数值1000,重新开始计数,保持每1秒钟向CPU发出一次中断请求,请编写初始化程序,并画出硬件连接图。解答:STT:MOVDX,0FF0HMOVAL,34HOUTDX,ALMOVDX,通道0端口地址MOVAX,1388HOUTDX,ALMOVAL,AHOUTDX,ALMOVDX,0FFF1HMOVAL,78HOUTDX,ALMOVDX,通道1端口地址MOVAX,2710HOUTDX,ALwww.khdaw.com 课后答案网www.khdaw.comMOVAL,AHOUTDX,ALMOVDX,0FFF2HMOVAL,B1HOUTDX,ALMOVDX,通道2端口地址MOVAX,1000HOUTDL,ALMOVAL,AHOUTDX,ALwww.khdaw.com对8259A初始化(略)HH:HLTJMPHH20.什么叫DMA传送方式?DMA控制器8257的主要功能是什么?答:DMA传送方式就是用DMA控制器来接管CPU对总线的控制权。在存储器与局速外设之间建立直接进行数据块传送与高速通路。主要功能有三个(1)DMA读操作—读存储器送外设(2)DMA写操作—对外设写存储器(3)DMA校验操作—通道不进行数据传送操作,只是完成校验操作。21.某8086系统中使用8257完成从存储器到外设端口的数据传送任务,若已知通道0的地址寄存器、终点计数器、方式寄存器端口地址分别为置EEE0H,EEElH和EEE8H,要求通过通道0将存储器中偏移地址为1000H~10FFH的内容传送到显示器输出,请编写初始化程序。解答:ST57:MOVDX,0EEE8HMOVAL,41HOUTDX,ALMOVDX,0EEE0HMOVAX,1000HOUTDX,ALMOVAL,AHOUTDX,ALMOVDX,0EEE1HMOVAL,0FFHOUTDX,ALHLT22.某8086系统中使用8257完成从存储器到存储器的数据传送,已www.khdaw.com 课后答案网www.khdaw.com知源数据块首地址的偏移地址值为1000H,目标数据块首地址的偏移地址值为l050H,数据块长度为100字节。请编写初始化程序,并画出硬件连接图。解答:STS7:MOVDX,方式寄存器端口MOVAL,41HOUTDX,ALMOVDX,通道0地址寄存器端口MOVAX,1000HOUTDX,ALwww.khdaw.comMOVAL,AHOUTDX,ALMOVDX,方式寄存器端口MOVAL,42HOUTDX,ALMOVDX,通道1地址寄存器端口MOVAX,1050HINDX,ALMOVAL,AHINDX,ALMOVDX,通道0终点计数器端口MOVAL,64HOUTDX,ALHLT23.编一系统初始化程序,由8259A的IR0~IR4共五个中断源,中断类型码为4BH,4CH,4DH,4EH,4FH。8259A端口地址为80H、81H。允许它们以完全嵌套方式工作。解答:STT:MOVAL,11HMOVDX,80HOUTDX,ALMOVAL,4BHMOVDX,81HOUTDX,ALMOVAL,01HOUTDX,ALMOVAL,0D0HOUTDX,ALwww.khdaw.com 课后答案网www.khdaw.comMOVAL,20HMOVDX,80HOUTDX,ALHLT24.用8255和8253编程,使扬声器发出600Hz的可听频率,击任一键停止。(其中主时钟为1.9318MHz,一个时钟周期为888.2229×10—9秒。)解答:STACKSEGMENTPARASTACK’STACK’DB256DUP(0)www.khdaw.comSTACKENDSDATASEGMENTPARAPUBLIC’DATA’FREGDW1989;600周方波计数值DATAENDSCODESEGMENTPARTPUBLIC’CODE’STARTPROCFARASSUMECS:CODE,DS:DATAPUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXINAL,61HORAL,3OUT61H,ALMOVAL,0B6HOUT43H,ALMOVBX,FREGMOVAL,BLOUT42H,ALMOVAL,BHOUT42H,ALMOVAH,0INT16HINAL,61HANDAL,0FCHOUT61H,ALRETwww.khdaw.com 课后答案网www.khdaw.comSTARTENDPCODEENDSENDSTART25.用8253产生一个可编程采样速率的A/D子系统,要求通过8253的三个计数器,计数器0工作在方式2、计数器1工作在方式l,计数器2工作在方式3。设它们的三个初始计数值分别设为X,Y和Z(X,Y,Z小于256)。时钟频率设为F,用OUT0产生脉冲作为ADC的启动转换信号。GATE1和GATE2引线输入一个由低电平到高电平的跳变启动信号,作为数模转换器在YZ/F秒时间内以每秒F/X个样本速率进行量化输入操作。设8253端口地址为0040H,0042H,0044H,0046H,www.khdaw.com写出8253的初始化程序。解答:MOVAL,14HOUT46H,AL;设置计数器0为方式2MOVAL,XOUT40H,AL;置计数器0初值MOVAL,73HOUT46H,AL;设置计数器1为方式1MOVAX,YOUT42H,ALMOVAL,AHOUT42H,ALMOVAL,96HOUT46H,AL;置计数器2为方式3MOVAL,ZOUT44H,AL26.设8253控制端口地址为203H,定时器0地址为200H,定时器l地址为201H,编程序将定时器0设为方式3(方波)、定时器l为方式2(分频),定时器0的输出脉冲作为定时器l的时钟输入,CLK0连接总线时钟4.77MHz,定时器1输出OUT1约为40Hz。解答:TIM-CTLEQU203H;控制口地址TIMER0EQU200H;计数器/定时器0口地址TIMER1EQU201H;计数器/定时器1口地址MODE03EQU36H;方式字,定时器0工作于方式3MODE12EQU74H;方式字,定时器1工作于方式2DATASEGMENTMESSDB’8253ATIMER0INMODE3!COUNT=2000H’,0AH,0DHwww.khdaw.com 课后答案网www.khdaw.comDB’8253ATIMER1INMODE2!COUNT=0FH’,0AH,0DH,’$’DATAENDSCODESEGMENTMAINPROCFARASSUMECS:CODE,DS:DATASTART:PUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXwww.khdaw.comCLI;关中断MOVDX,TIM-CTLMOVAL,MODE03;设置定时器0,工作于方式3OUTDX,ALMOVDX,TIMER0MOVAL,00;定时器0置初值低位为00HOUTDX,ALMOVAL,20H;定时器0置初值,高位为20HOUTDX,ALMOVDX,TIM-CTLMOVAL,MODE12;定时器1,工作于方式2OUTDX,ALMOVDX,TIMER1;定时器1置初值低位为0FHMOVAL,0FHOUTDX,ALMOVAL,00;定时器置初值高位为00HOUTDX,ALSTI;开中断MOVDX,OFFSETMESS;显示提示信息MOVAH,09INT21HRETMAINENDPCODEENDSSTARTEND27.编一初始化程序,使8255A的PC5端输出一个负跳变。如果要求PC5端输出一个负脉冲则初始化程序又是什么情况?解答:www.khdaw.com 课后答案网www.khdaw.com初始化程序:MOVAL,0BH;PC5置“1”控制字→ALMOVDX,××××××11B;控制口地址→DXOUTDX,AL;置“1”控制字→控制寄存器MOVAL,0AH;PC5置“0”控制字→ALOUTDX,AL;置“0”控制字→控制寄存器如果要求PC5输入一个负脉冲则再加两条指令MOVAL,0BHOUTDX,AL28.设8251A的控制和状态端口地址为52H,数据输入/输出口地址www.khdaw.com为50H(输出端口未用),输入50个字符,将字符放在BUFFER所指的内存缓冲区中。请写出这段的程序。解答:MOVAL,0FAHOUT52H,AL;设置模式因子,异步方式,波特新因子为16,用7个数据位,2个停止位,偶校验MOVAL,35HOUT52H,A2;设置控制字,使发送器和接收器启动,并清除出错指示位MOVDI,0;变址寄存器初始化MOVCX,50;共50个字符BEGIN:INAL,52HTESTAL,02H读取状态字,测试RXRDY位,是否为1,如为0表示未收到字符,故继续读取状态并测试JZBEGININAL,50;读取字符MOVDX,OFFSETBUFFERMOV[DX+DI],AL;将字符送入缓冲区INCDI;修改缓冲区指针INAL,52H;读取状态字TESTAL,38HJNEERROR;测试有无帧格式错误,奇/偶校验错误和超越错误,如有则转出错处理程序。LOOPBEGIN;如没有错再接收下一个字符。JMPEXIT;如输入满50个字符,结束ERROR:CALLERR-OUT;调用出错处理程序EXIT:…29.设状态端口地址为86H,数据端口地址为87H,外部输入信息准www.khdaw.com 课后答案网www.khdaw.com备好状态标志为D7=1.请用查询方式写出读入外部信息的程序段。解答:POLL:INAL,86H;从状态端口输入状态信息TESTAL,80H;检查READY是否是1JEPOLL;为准备好,循环INAL,87H;准备好,从数据端口输入数据30.设状态端口地址为76H,数据端口地址为75H,外设是否准备好信息由D7位传送,D7=l为准备好,D7=0为未准备好(忙),请用查询方式写出CPU向外部传送数据的程序段。解答:www.khdaw.comPOLL:INAL,76H;从状态端口输入状态信息TESTAL,80H;检查忙标志位JNEPOLL;忙等待MOVAL,DATA;从缓冲区取数据OUT75H,AL;从数据端口输出31.什么是A/D、D/A转换器?答:把模拟量信号转换成数字量的器件为模/数转换器,简称为A/D转换器。把数字量信号转换成模拟量的器件为数/模转换器,简称为D/A转换器。32.A/D和D/A转换器在微型计算机应用中起什么作用?答:微型计算机只能对二进制数字形式表示的信息进行运算和处理,其运算和处理的接果也是数字量,但用微机进行自动测量、监控等系统中遇到的变量大部分是模拟量,这些模拟量必须转变成计算机能够接收的数字量,这个过程为模/数转换,完成这个转换的装置为模/数转换器(ADC)。反之计算机运算、处理的结果也不能直接去控制执行部件,因为各种执行部件要求的控制信号一般也是模拟量,因此需要将计算机输出的数字量控制信号转变成执行部件所需的模拟量,这个转换过程为数/模转换,完成这个转换的装置为数/模转换器(ADC)。33.D/A转换器的主要参数有哪几种?参数反映了D/A转换器什么性能?答:D/A转换器的主要参数有:1)分辨率:最小输入电压与最大输出电压之比。也可用输入数字量的位数来表示。2)转换精度:①当满刻度数字量输入时,模拟量输出的实际值与理论值之差(绝对精度)。②在转换范围内,对应于任一数字量输入,其模拟量输出的实际值与理论之字差。3)建立时间:输入数字量为满刻度时(各位全1),从输入www.khdaw.com 课后答案网www.khdaw.com加上到输出模拟量达到满刻度值或满刻度值的某一百分比(如90%)所需的时间。若输出形式是电流,其D/A转换器的建立时间很短;若输出形式是电压,其D/A转换器的主要建立时间是输出运算放大器所需要的时间。34.A/D转换器的主要参数有哪几种?参数反映了A/D转换器什么性能?答:A/D转换器的主要参数有:1)分辨率:转换器对输入电压微小变化响应能力的量度。由于分辨率与转换器的位数有直接关系,所以也常以A/D转换位数表示分辨率。www.khdaw.com2)精度:A/D转换器的精度是指数字量所对应的模拟输入量的实际值与理论值之间的差值(绝对精度)。在整个转换范围内,任一个数所对应的实际模拟输入电压与理论输入电压的差(相对精度)。3)转换时间:完成一次A/D转换所需要的时间,称为A/D转换电路的转换时间。35.分辨率和精度有什么区别?答:转换精度和分辨率是两个根本不同的概念。转换精度取决于构成转换器的各个部件的误差和稳定性,而分辨率取决于转换器的位数。36.DAC0832有哪几种工作方式?每种工作方式适用于什么场合?每种方式用什么方法产生的?答:三种工作方式:1)单缓冲方式:此方式只适用于只有一路模拟量输出或几路模拟量非同步输出的情况。采用的方法是:控制输入寄存器和DAC寄存器同时接收数据,或者只用输入寄存器而把DAC寄存器接成直通方式。2)双缓冲方式:此方式适用于多个DAC0832同时输出的情况。采用的方法是:先分别使这些DAC0832的输入寄存器接收数据,再控制这些DAC0832同时传送数据到DAC寄存器以实现多个D/A转换同步输出。3)直通方式:此方式适用于连续反馈控制线路中,方法是数据不通过缓冲器,即WR1、WR2、XFER、CS均接地,ILE接高电平。此时必须通过I/O接口与CPU连接,以匹配CPU与D/A的连接。37.ADC把模拟量信号转换为数字量信号,转换步骤是什么?转换过程用到什么电路?答:转换步骤分为四步:即采样、保持、量化和编码。采样和保持在采样保持电路中进行量www.khdaw.com 课后答案网www.khdaw.com化和编码在ADC中进行。38.ADC与微处理器接口的基本任务是什么?答:ADC与微处理器接口的基本任务是:向ADC转发启动转换信号;向CP提供转换结束信号,把转换好的数据送入微处理器.39.ADC中的转换结束信号(EOC)起什么作用?答:ADC中的EOC信号的作用是当ADC转换完毕时,EOC为“1”。所以EOC可以作中断请求信号,EOC可以作为被查询状态信号。40.如果0809与微机接口采用中断方式,EOC应如何与微处理器连接?程序又有什么改进?答:连接方案:可采用直接与CPUINTR脚连接,或通过8259A接www.khdaw.comCPU。设ADC0809的端口号为PORTAD,则在指令OUTPORTAD,AL执行后,A/D转换器开始转换,转换结束时EOC发一个高电平为转换结束,此信号产生中断请求,CPU响应中断后,去执行中断处理程序,去转换结果INAL,PORTAD,此时M/IO,RD有效,CPU获得转换结果。www.khdaw.com'

您可能关注的文档