首页 微机原理与接口答案

微机原理与接口答案

举报
开通vip

微机原理与接口答案微机原理与接口答案 《微型计算机原理及应用》 课程辅导材料,习题解答, 马义德 张在峰 徐光柱 袁敏 李柏年编 兰州大学信息科学与工程学院 目 录 第一章 微型计算机发展概 述..........................……..................…...................................................................1 第二章 8086/8088 16位微处理器..........…......................

微机原理与接口答案
微机原理与接口答案 《微型计算机原理及应用》 课程辅导材料,习题解答, 马义德 张在峰 徐光柱 袁敏 李柏年编 兰州大学信息科学与工程学院 目 录 第一章 微型计算机发展概 述..........................……..................…...................................................................1 第二章 8086/8088 16位微处理器..........…....................….............................................……..…2 第三章 存储器技术...............................……………...................................................................….6 第四章 指令与寻址方 式.....................................………..................................................................................10 第五章 汇编语言程序设 计................….........………................…........................................................…....17 第六章 输入输出处理方 法.....................………........................................................................................….41 第七章 微型计算机综合应用与发 展......……………................................................................................41 第一章 微型计算机的发展概述习题解答 1( 从第一代计算机第四代计算机体系结构都是相同的,都是由运算器、控制器、存储器以 及输入输出组成的、这种体系结构称为什么体系结构, 答:冯`诺依曼体系结构。 2( 一个完整的计算机系统通常包括系统软件和应用软件、硬件系统和软件系统、计算机及 其外部设备、系统硬件和系统软件这四种组合中的哪一种, 答:硬件系统和软件系统。 3( 通常我们所说的32位机,指的是这种计算机CPU是什么样的, 答:总线的数据宽度为32位。 4( 若某台微型计算机的型号是486/25,则其中25 的含义是什么, 答:25的含义是运算速度是25MB/s。 5( 操作系统是计算机发展到第几代出现的, 答:操作系统是计算机发展到第三代期间出现的。 6( 决定微机性能的主要是CPU、总线、I/O接口电路的处理速度、价格、耗电量还是质量, 答:CPU、总线和I/O接口电路的处理速度。 7( 现代计算机之所以能自动地连续进行数据处理,主要是它有什么功能, 答:它有程序计数器和指令寄存器。 8( 微机的主要性能指标有哪些, 答:主要有CPU的处理速度,总线的数据宽度,内存数据宽度,带外设的能力等。 9( 有些高级语言程序在计算机中执行时,采用的是解释方式。源程序由哪一种程序边 翻译 阿房宫赋翻译下载德汉翻译pdf阿房宫赋翻译下载阿房宫赋翻译下载翻译理论.doc 边执行, 答:解释程序。 10(在计算机中为什么要使用局部总线,什么是PCI总线,它和AGP总线有什么区别, 答:局部总线是在ISA总线和CPU总线之间增加了一级总线,这样可将一些高速外设从ISA总线上卸下来,而通过局部总线直接挂到CPU总线上,使之与高速的CPU相匹配。 PCI总线时钟为33MHz,总线数据宽度为32位,并可扩展为64位,具有高速的数据通道,是一种局部总线。 AGP总线的时钟为66MHz,传输速率也比PCI快,为264 MB/s。目前,AGP总线时钟发展到4X66MHZ。 第二章 8086/8088 16位微处理器习题解答 1( 试说明8086/8088CPU中有哪些寄存器,各有哪些用途, 答:寄存器组有(1)数据寄存器,含AX、BX、CX、DX四个通用寄存器,用来暂时存放计算过程中所遇到的操作数,结果和其它信息。(2)指针及变址寄存器,含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溢出标志,在运算过程中,如操作数超出了机器能 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示的范围则置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系列违纪在存储器中寻找存储单元时,逻辑地址由哪两个部分组成的, 答:由段地址和偏移地址两部分构成。 5(设IBM PC微机内存中某个单元的物理地址是12345H,试完成下列不同的逻辑地址表示: (1) 1234H:___H (2) ____H:0345H 答:(1)1234H:05H (2) 1200H:0345H 6(假设某程序执行过程中,(SS)=0950H,(SP)=64H,试问该用户程序的堆栈底部物理地址是多少, 答:(SS)*10H+(SP)=09564H 7(设堆栈段寄存器(SS)=0E4BH,程序中设堆栈长度为200H个字节。试计算出堆栈底部字单元物理地址,堆栈指针SP初始值(即堆栈中没有数据时)和SP初始值指向的物理地址。 答:物理地址为:3E4B0H, SP的初始值为200H,指向的物理地址为:3E6B1H.。 8(设某用户程序(SS)=0925H,SP=30H,(AX)=1234H,(DX)=5678H,问堆栈的地址范围是多少,如现有两条进展指令: PUSH AX PUSH DS 试问两指令执行后,(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与存储器和外设之间的信息交换。 12(8086系统中的物理地址是如何的得到的,假如CS=2000H,IP=2100H,其物理地址是多少, 答:8086系统的物理地址是将段地址乘10H,加上偏移地址。 2000H*10H+2100H=22100H (物理地址) 13 什么叫总线周期,一个总线周期包括多少时钟周期,什么情况下要插入T等待周期,W插入多少个T取决于什么因素, W 答:CPU把总线接口部件BIU完成一次访问存储器或外设操作所需要的时间称为一个总线周期,它包括了四个时钟周期。 当访问存储器或外设时,存储器或外设不能及时配合CPU传输数据时,存储器或外设通过“READY”信号在T之前向CPU发出一个“数据未准备好”信号,CPU会在T之前插33入一个或多个等待时间周期。当存储器或外设准备好数据,通过“READY”发“准备好”信号,CPU接受此信号后,会自动脱离 T状态进入T状态。因此,插入多少个T由“READY”W4W信号决定。 14 什么是最大模式,什么是最小模式,用什么 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 将8086/8088置于最大模式和最小模式, 答:最小模式,即系统中只有一个微处理器,所有的总线控制信号都直接由8086/8088,因此,系统总线控制电路被减到最小。 最大模式,即系统里包括两个或多个微处理器,主处理器就是8086/8088,其它均为协助主处理器工作的协处理器。它主要用于中等规模或大型的8086/8088系统中。 将8086/8088的第33脚接地时,系统处于最大模式,接,5V时,为最小模式 15 什么是地址锁存器,8086/8088系统中为什么要用地址锁存器,锁存的是什么信息, 答:地址锁存器就是一个暂存器,它根据控制信号的状态,将总线上地址代码暂存起来。8086/8088数据和地址总线采用分时复用操作方法,即用同一总线既传输数据又传输地址。当微处理器与存储器交换信号时,首先由CPU发出存储器地址,同时发出允许锁存信号ALE给锁存器,当锁存器接到该信号后将地址/数据总线上的地址锁存在总线上,随后才能传输数据。 16 8086/8088系统中的8286是什么器件,起什么作用, 答:8286为总线驱动器(收发器,双向数据缓冲器),当一个系统中所含外设接口较多时,用来增强数据总线的驱动能力。 17 8086/8088系统用的时钟发生器产生哪些信号, 答:时钟发生器8284A产生恒定的时钟信号(CLK),复位信号(RESET),准备就绪信号(READY)。 18 8086/8088的执行部件EU由多少个通用寄存器,多少个专用寄存器,几个标志寄存器和什么组成, 答:执行部件由以下几部分组成:1、四个通用寄存器 AX BX CX DX;2、四个专用寄存器,即基数指针寄存器BP,堆栈指针寄存器SP,源变址寄存器SI,目的变址寄存器DI;3一个标志寄存器FR;4算术逻辑部件ALU。 19 8086/8088的指令队列长度分别为多少个字节, 答:8086的指针队列为6个字节,8088的指针队列有4个字节。 20 8086与8088的16位寄存器中,有多少个寄存器可拆分为8位寄存器使用。它们分别是什么,它们又被统称为什么, 答:在8086与8088的16位寄存器中,有四个寄存器可拆分为八位寄存器使用,它们分别是AX,BX,CX,DX。统称为通用寄存器。 21 PU从主存取出一条指令并执行该指令的时间称( ),它通常用若干个( )来 表示,而后者又包括若干个( )。 ?指令周期 ?机器周期 ?时钟周期 答:1,2,3 22 计算机时钟脉冲的频率称为什么,,其倒数又称为什么, 答:计算机的时钟脉冲频率称为时钟频率,即主频。其倒数为时钟周期。 22 计算机主频为8MHz,每个机器周期平均含两个时钟周期,每条指令平均有2.5个机器 周期,则该机器的平均指令执行速度为多少MIPS, -6-6答:该机器执行一条指令所用时间为:1/8*10*2*2.5=5/8*10t;平均指令执行速度为: 1/ (5/8)=1.6MIPS。 24 8086/8088的存储器可以寻址1MB的空间,在对I/O进行读写操作时,20位地址中只有哪些位是有效的,这样,I/O地址的寻址空间为多大, 答:在对I/O进行读写操作时,20位地址中只有A,A有效,I/O地址的寻址空间为015162B。 25 指令队列的作用是什么, 答:指令队列存放内存中取下的将被执行的下一条或下几条指令,使CPU执行完一条指令就可立即执行下一条,提高CPU的效率。 26 8086CPU可访问的存储空间为1MB,实际上分为奇数存储体和偶数存储体两部分,对奇数存储体的选择信号是什么,对偶数存储体的选择信号是什么,对每个存储体单元的选择信号是什么, 答:奇数存储体的选择信号为BHE,偶数存储体的选择信号为A。对每个存储体内存储0 单元的选择信号是READY。 27 8086有两种工作方式,即最小模式和最大模式,它由什么信号决定,最小模式的特点是什么,最大模式的特点是什么, 答:8086的两种工作模式由信号决定。当接入,5V时,系统处于最小模式,只有一个微处理器,总线控制逻辑部件被减到最小。当接地时,系统处于最大模式,实现多处理器控制系统,主要应用于大中型系统。 28 当=0,=0,=1时,CPU完成的操作是什么, 答:CPU完成一个对I/O设备端口的读操作。 29 8088与8086在软件上是否完全兼容, 答:8086/8088内部都采用16位字进行操作及存储器寻址。因此两者软件完全兼容。 第三章 存储器技术习题解答 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)个。 10 某计算机的主存为3KB,则内存地址寄存器需多少位就足够了, 答:主存为3KB,则地址线有12条,所以内存地址寄存器需12位。 11 若256KB的SRAM具有8条数据线,则它具有多少条地址线? 答:具有18条地址线。 12 计算机的内存可采用ROM、RAM、磁盘中的哪几种,EPROM指的又是什么, 主存和CPU之间增加高速缓存的目的是什么,采用虚拟存储器的目的是什么, 答:可采用ROM和RAM。EPROM指可编程并可擦除的ROM,兼有ROM和RAM的功能。由于主存储器的存/取时间比CPU慢一个数量级,从而严重影响了微型机的速度,而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,试画连接图。 解答:采用全地址译码连接图如下: 15 试利用6264芯片,在8088系统总线上实现00000H~03FFFH的内存区域,试画连接电路图。 解答:采 用全地 址译码。 16 叙述EPROM的编程过程,说明EEPROM的编程过程。 答: PROM的编程有两种方式,即标准编程和灵巧编程两种方式。标准编程的过程为:使Vcc为+5v ,Vpp加上+21v 。而后,加上要编程的单元地址,数据线加上要写入的数据,使CE保持低电平,OE为高电平。当上述信号稳定后,在PGM端加上50?5ms的负脉冲。这样就将一个字节的数据写到了相应的地址单元中。重复上述过程,即可将要写入的数据逐一写入相应的存储单元中。灵巧编程方式要比标准方式快5倍左右。当加上 Vcc= 5v, Vpp=21v 后,对一个写入地址,用1ms编程脉冲进行编程,接着进行校验,如不成功,再加1 ms编程脉冲。最多可进行15次,若15次仍不能将数据正确写入,则认为芯片本身已损坏。若某一单元用X次1 编程脉冲已正确写入,校验到这种情况后,立即对该单元加入4倍 X的编程覆盖脉冲,则认为该单元编程已完成。重复上述过程,将所有要写入的单元编程。将数据写入EEPROM有两种方式,即字节方式和自动页写入。在对EEPROM编程时,可以在线操作。 17 有2片6116,现欲将它们接到8088系统中去,其地址范围为40000H到40FFFH, 试画连接电路图。利用写入某数据并读出比较,若有错,则在DL中写入01H;若每个单元均对,则在DL写入EEH,试编写此检测程序。 解答:连接电路图见下一页。 18 若用全地址译码将EPROM 2764(128或256)接在首地址为A0000H的内存区,试画出电路图。 解答:电路图如下: 19 第15题 中,若8088 的时钟频率为5MHz,6264芯片的读写时间均200 ns,试粗 略估计该芯片能否直接使用。 答:8088的时钟频率为5MHZ,则读写时间为200ns,与6264芯片的读写时间相同,若该芯片直接使用,容易出错。 17 连接电路图如下: 第四章 指令与寻址方式习题解答 1(试分别说明下列各指令中源操作数和目的操作数使用的寻址方式: (,) AND AX,0FFH (,) AND BL,[OFFH] (,) MOV DS,AX (,) CMP [SI],CX (,) MOV DS:[0FFH],CL (,) SUB [BP][SI],AH (,) ADC AX,0ABH[BX] (,) OR DX,-35[BX][DI] (,) PUSH DS (,,) CMC 答: 目的操作数 源操作数 (1)寄存器直接寻址 立即数寻址 (2)寄存器直接寻址 直接寻址 (3)寄存器直接寻址 寄存器直接寻址 (4)寄存器间接寻址 寄存器直接寻址 (5)直接寻址 寄存器直接寻址 (6)基址变址寻址 寄存器直接寻址 (7)寄存器直接寻址 寄存器相对寻址 (8)寄存器直接寻址 基址变址相对寻址 (9)无 寄存器直接寻址 (10)隐含寻址 2(试分别指出下列各指令语句的语法是否有错,如有错,指明是什么错误。 (,) MOV [BX][BP],AX (,) TEST [BP],BL (,) ADD SI,ABH (,) AND DH,DL (,) CMP CL,1234H (,) SHR [BX][DI],3 (,) NOT CX,AX (,) LEA DS,35[SI] (,) INC CX,1 (,,) PUSH 45[DI] 答:(1)应将BP,BX其中之一该为SI或DI (2)正确 (3)ABH改为0ABH (4) (5)是字操作,CL改为CX (6)移位数大于1时,应用CL (7)NOT指令只有一个操作数 (8)LEA指令的源操作数应为一内存单元地址 (9)此指令不用指出1 (10)45改为45H 3(下面两条指令执行后,标志寄存器中CF,AF,ZF,SF和OF分别是什么状态? MOV DL,86 ADD DL,0AAH 答: 0101,0110 + 1010,1010 = 1,0000,0000 CF=1 AF=1 ZF=1 SF=1 OF=1 4(在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。下列各指令或程序段分别执行后的结果如何? (,) MOV CL,20H[BX][SI] (,) MOV [BP][DI],CX (,) LEA BX,20H[BX][SI] MOV AX,2[BX] (,) LDS SI,[BX][DI] MOV [SI],BX (,) XCHG CX,32H[BX] XCHG 20H[BX][SI],AX 答(1) (CX)=56F6H; (2) (09226H)=5678H; (3) (AX)=1E40H; (4) (1E4F6H)=0024H; (5) (09226H)=1234H,(AX)=5678H. 6(已知(SS),09l 5H,(DS),0930H,(SI),0A0H,(DI),1C0H,(BX),80H,(BP),470H。 现有一指令“MOV AX,OPRD”,如源操作数的物理地址为095C0H,试用四种不同寻址方式 改写此指令(要求上述每个已知条件至少要使用一次)。 答:(1)MOV AX,[BP] (2)MOV AX,[BP+DI+80H] (3)MOV AX,[DI+0100H] MOV AX,[SI+0220H] (4)MOV AX,[02C0H] 7(试按下列要求分别编制程序段: (,) 把标志寄存器中符号位SF置‘1’。 (,) 寄存器AL中高低四位互换。 (,) 由寄存器AX,BX组成一个32位带符号数(AX中存放高十六位),试求这个 数的负数。 (,) 现有三个字节存储单元A,B,C。在不使用ADD和ADC指令的情况下, 实现(A)+(B)=>C。 (,) 用一条指令把CX中的整数转变为奇数(如原来已是奇数,则CX中数据不变, 如原来是偶数,则(CX)+1形成奇数)。 答:(1)MOV AH, 80H SAHF (2 ) MOV BL, 0FH AND BL, AL SAL 4 SHR 4 XOR AL, BL (3 ) MOV DX, 7FH SUB AX, DX MOV DX, 0FFH SUB DX, BX MOV BX, DX (4 ) MOV AH, FFH MOV BL, [B] SUB AH, BL MOV BH, [A] SUB BH, AH MOV [C], BH (5 ) MOV AX, CX NOT AX TEST 01H JNZ NEXT HLT NEXT: INC CX HLT 8(试给出下列各指令的机器目标代码: (,) MOV BL,12H[SI] (,) MOV 12H[SI],BL (,) SAL DX,1 (,) ADD 0ABH[BP][DI],1234H 答: (1) 10001010,11011111=8ADF; (2) 10001000,01011100=885C; (3) 11010001,11100010=D1E2; (4) 10000001,10000001=8181. 9(执行下列指令后: STR1 DW ‘AB’ STR2 DB 16DUP(?) CNT EQU $-STR1 MOV CX,CNT MOV AX,STR1 HLT 寄存器CL的值是多少,寄存器AX的值是多少, 答:寄存器CL的值为12H,寄存器AX的值为4241H。 10(JMP FAR PTR ABCD(ABCD是符号地址)的转移方式是什么, 答:JMP FAT PTR ABCD 的转移方式是段间直接转移. 11(MOV AX,ES:[BX][SI]的源操作数的物理地址是多少(用CS、DS、ES、SS、BX、SI表示 出即可), 答 :MOV AX,ES:[BX] [SI]的源操作数的物理地址是[ES]×10H+[BX]+[SI]. 12(运算型指令的寻址和转移型指令的寻址,其不同点在什么地方, 答:运算型指令的寻址包括立即数寻址。寄存器寻址,直接寻址,寄存器间接寻址,寄存器相对寻址和基址加变址寻址方式。这些寻址方式中,CS,IP寄存器的内容不会发生变化。 转移型指令的寻址方式包括段内直接寻址,段内间接寻址,段间直接寻址,段间间接寻址。在后三种寻址方式中,CS,IP寄存器的内容发生改变。 13(如果TABLE为数据段中0032单元的符号名,其中存放的内容为1234H,当执行指令”MOV AX,TABLE”和”LEA AX,TABLE”后,(AX)中的内容分别为多少, 答:执行MOV AX , TABLE后(AX)=1234H 执行LEA AX, TABLE 后 (AX)=0032. 14.当指令”SUB AX,BX”执行后,CF=1,说明最高有效位发生了什么现象,对无符号 数来说,操作结果发生了什么现象, 答:执行指令SUB AX,BX后,CF=1,说明最高位发生了借位对无符号来说,操作结果发生了溢出。 15.在1000H单元中有一条二字节指令JMP SHORT LAB,如果其中的偏移量分别为 30H、6CH、0B8H,则转向地址LAB的值分别为多少, 答:转向地址LAB的值分别为: 1000×10H+2H+30H=10032H 1000×10H+2H+6CH=1006EH 1000×10H+2H+B8H=100BAH 16(下面两个语句的区别在什么地方: X1 EQU 1000H X2=1000H 答:“EQU”和“=”都可以作为赋值语句,但二者的区别是EQU伪操作中的表达式是不许重复定义的,而“=”伪操作则许重复定义。 17.调用指令CALL可进行哪四种调用, 答:调用指令CALL可进行段内直接调用,段内间接调用。段间直接调用。段间间接调用。 18.(AL)=9AH,(BL)=0BCH,当分别进行下列指令运算后,请写出标志位ZF、PF、CF、 SF的内容:( P50) 80 (1) ADD AL,BL (2) SUB AL,BL (3) AND AL,BL (4) OR AL,BL (5) XOR AL,BL 答:(1)ADD AL,BL 1 0 0 1 1 0 1 0 +)1 0 1 1 1 1 0 0 1,0 1 0 1 0 1 1 0 ?ZF=0,PF=1 CF=1 SF=0 (2)SUB AL,BL 1 0 0 1 1 0 1 0 1 0 0 1 1 0 1 0 —)1 0 1 1 1 1 0 0 —〉 +)0 1 0 0 0 1 0 0 1 1 0 1 1 1 1 0 ? ZF=0 PF=1 CF=1 SF=1 (3)AND AL,BL 1 0 0 1 1 0 1 0 AND)1 0 1 1 1 1 0 0 ? ZF=0 PF=0 CF=0 SF=0 1 0 0 1 1 0 0 0 (4)OR AL,BL 1 0 0 1 1 0 1 0 OR)1 0 1 1 1 1 0 0 ? ZF=0 PF=1 CF=0 SF=0 1 0 1 1 1 1 1 0 (5)XOR AL,BL 1 0 0 1 1 0 1 0 XOR)1 0 1 1 1 1 0 0 ? ZF=0 PF=0 CF=0 SF=0 0 0 1 0 0 1 1 0 19.若(SP)=2800H,试用两种方法实现(SP)=27FEH( 答:方法一:执行一次PUSH指令 PUSH CX 方法二:执行一次PUSHF指令 20.试简述LES REG,SRC所完成的操作, 答:LES REG,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+2 23.试编写汇编程序段完成以下功能:将1000个字符的字符串从内存的BUFFER1搬 移到内存的BUFFER2中去。 解答 LEA SI,BUFFER1 LEA DI,BUFFER2 MOV CX,1000 CLD REP MOVSb 24.试编写汇编程序段完成以下功能:将数据段中100个字的数据块BLOCK1搬移到 同一个数据段的BLOCK2中去。 解答: LEA SI,BLOCK1 LEA DI,BLOCK2 MOV CX,100 CLD REP MOVSW 25.试编写汇编程序段完成以下功能:比较DEST和SOURCE中的500个字节,找出 第一个不相同的字节,如果找到,则将SOURCE中的这个数送AL中。 解答: CLD LEA DI,DEST LEA SI,SOURCE MOV CX,500 REPE CMPB JCXZ NEXT DEC SI MOV AL,BYTE PTR[SI] NEXT:HLT 26.试编写汇编程序段完成以下功能:求最大值,若自BLOCK开始的内存缓冲区中, 有100个带符号的数,希望找到其中最大的一个值,并将它放到MAX单元中。 解答:MOV BX,OFFSET BLOCK MOV AX,[BX] MOV CX,100 ADD BX,2 F0:CMP AX,[BX] JGE F1 MOV AX,BX F1:ADD BX,2 JCXZ NEXT JMP F0 MOV MAX,AX NEXT:HLT 27.假定(SS)=2000H,(SP)=0100H,(AX)=2107H,执行指令PUSH AX后,存放数据 21H的物理地址是多少, 解答: 07H 21H <—原栈顶20100 存放数据21H的物理地址是200FFH 第五章 汇编语言程序设计习题解答 1( 指出下列指令的错误: (1)MOV AH,BX (2)MOV [BX],[SI] (3)MOV AX,[SI][DI] (4)MOV MYDAT[BX][SI],ES:AX (5)MOV BYTE PTR[BX],1000 (6)MOV BX,OFFSET MYDAT[SI] (7)MOV CS,AX 答:(1)MOV AH,BX AH 为八位,BX为16位 (2)MOV [BX],[SI] 两个操作数不能都是存储单元 (3)MOV AX,[SI][DI] 一个操作数中不能用两个变址寄存器 (4)MOV MYDAT [BX][SI],E8:AX ES ES 后应为一个变址寄存器,表示偏移量 (5)MOV BYTE PTR[BX],1000 BYTE 说明时BX进行字节操作。 而1000为字 (6)MOV BX,OFFSET MYDAT [SI] OFFSET 为取某个地址的偏移量,故后面不应用[SI],而应是一个符号地址。 (7)MOV 是数据寻址,不应用程序段寄存器CS. 2(下面哪些指令是非法的?(假设OPl,OP2是已经用DB定义的变量) (1)CMP l5,BX (2)CMP OPl,25 (3)CMP OPl,OP2 (4)CMP AX,OPl 答:(1) CMP 15,BX 非法,两个操作数不能一个为字,一个为字节 (2)CMP OP1,25 正确 (3)CMP OP1,OP2 正确 (4)CMP AX,OP1 非法,两操作数不能一个为字,一个为字节 3(假设下列指令中的所有标识符均为类型属性为字的变量,请指出下列指令中哪些是非法 的?它们的错误是什么? (1)MOV BP,AL (2)MOV WORD_OP[BX+4*3][DI],SP (3)MOV WORD_OPl,WORD_OP2 (4)MOV AX,WORD_OPl[DX] (5)MOV SAVE_WORD,DS (6)MOV SP,SS:DATA_WORD[BX][SI] (7)MOV [BX][SI],2 (8)MOV AX,WORD_ OPl+WORD_OP2 (9)MOV AX,WORD_ OPl-WORD_OP2+100 (10)MOV WORD_ OPl,WORD_ OPl-WORD_OP2 答:(1)MOV BP,AL 非法,BP为16位 AL为八位 (2)MOV WORD_OP[BX+4*3][DI] ,SP 正确 (3)MOV WORD_OP1 ,WORD_OP2 非法,两个操作数不能都是变量 (4)MOV AX , WORD_OP1[DX] 非法,[DX]应改为[BX],[BP],[SI]或[DI],则为寄存器相对寻址。 (5)MOV SAVE_WORD ,DS 非法,未指明数据段地址DS的偏移量 (6)MOV SP,SS:DATA_WORD[BX][SI] 非法,SS与[BX],[SI]不匹配,SS的偏移量用SP (7)MOV [BX][SI] ,2 正确 (8) MOV AX,WORD_OP1+WORD_OP2 正确 (9) MOV AX, WORD_OP1—WORD_OP2+100 正确 (10)MOV WORD_OP1,WORD_OP1—WORD_OP2 非法 4(假设VAR1和VAR2为字变量,LAB为标号,试指出下列指令的错误之处: (1)ADD VAR1,VAR2 (2)SUB AL,VAR1 (3)JMP LAB[SI] (4)JNZ VARl (5)JMP NEAR LAB 答:(1) ADD VAR1,VAR2 ADD指令中,目的操作数必须是寄存器或存储单元。 (2)SUB AL,VAR1 AL为8位的,而VAR为字变量16位 (3)JMP LAB [SI] 格式不对,LAB处应为一偏移量,而不是标号。 (4)JNZ VAR1 JNZ 为非零转移,应转移到某个程序段,故后面应为一个标号。 (5)JMP NEAR LAB 段内直接转移,格式应为 JMP NEAR PTR LAB 5(画图说明下列语句所分配的存储空间及初始化的数据值。 BYTE-VAR DB ‘BYTE’,12,-12H,3DUP(0,,,2DUP(1,2),,) WORD-VAR DW 5DUP(0,1,2),?,-5,’BY’,’TE’, 256H 解答:(1)BYTE-VAR (2)WORD-VAR 42 59 54 45 OC F4H 0 - 1 2 1 2 - 0 - 1 2 1 2 - 0 - 1 2 1 2 - ? 00 00 01 00 02 00 ? ? B 00 00 01 00 02 00 Y - T - E FB 12 FF -12H 59 42 45 54 56 02 ? 6(试列出各种方法,使汇编程序把5150H存入一个存储器字中。 解答:(1) DW 5150H;(2)DB 50H,51H;(3)DB ‘PQ’ 7(请设置一个数据段DATASG,其中定义以下字符变量或数据变量。 FLD1B为字符串变量:‘personal computer’; FLD2B为十进制数字节变量:32; FLD3B为十六进制数字节变量:20; FLD4B为二进制数字节变量:01011001; FLD5B为数字的ASCII字符字节变量:32654; FLD6B为10个零的字节变量; FLD7B为零件名(ASCII码)及其数量(十进制数)的 表格 关于规范使用各类表格的通知入职表格免费下载关于主播时间做一个表格详细英语字母大小写表格下载简历表格模板下载 : PART1 20 PART2 50 PART3 14 FLD1W为十六进制数字变量:FFF0; FLD2W为二进制数字变量:01011001; FLD3W为(7)中零件表的地址变量; FLD4W为包括5个十进制数的字变量:5,6,7,8,9; FLD5W为5个零的字变量; FLD6W为本段中字数据变量和字节数据变量之间的地址差。 解答: DATASG SEGMENT FLD1B DB ‘personal computer’ FLD2B DB 32D FLD3B DB 14H FLD4B DB 01011001B FLD5B DB 32654 FLD6B DB 10DUP(0) FLD7B DB ‘PART1’,20D,‘PART2’,50D,‘PART3’,14D FLD1W DW 0FFFOH FLD2W DW 01011001B FLD3W DW [FLD7B] FLD4W DW 5,6,7,8,9 FLD5W DW 5DUP(0) FLD6W DW FLD1W-FLD1B DATASG ENDS 8(假设程序中的数据定义如下: PARTNO DW , PNAME DB 16 DUP(,) COUNT DD , PLENTH EQU $-PARTNIO 问PLENTH的值为多少,它表示什么意义, 解答:PLENTH代表着PARTNO至PLENTH的地址差,也即三段数据的字节数PLENTH=22。 9(有符号定义语句如下: BUFF DB 1,2,3,‘123’ EBUFF DB 0 L EQU EBUFF-BUFF 问L的值为多少, 解答:L=6 10(假设程序中的数据定义如下: LNAME DB 30 DUP(,) ADDRESS DB 30 DUP(,) CITY DB 15 DUP(,) CODE-LIST DB 1,7,8,3,2 (1)用一条MOVE指令将LNAME的偏移地址放入AX。 (2)用一条指令将CODE-LIST的头两个字节的内容放入SI。 (3)写一条伪操作使CODE-LENGTH的值等于CODE-LIST域的实际长度。 解答:(1)MOVE AX,0FFSET LNAME;(2)MOVE SI,0701H; (3)DE-LENGTH EQU LENGTH CODE-LIST。 11(试写出一个完整的数据段DATA_SEG,它把整数5赋与一个字节,并把整数-1,0,2,5 和4放在10字数组DATA_LIST的头5个单元中。然后写出完整的代码段,其功能为:把DATA- _LIST中头5个数中的最大值和最小值分别存入MAX和MIN单元中。 解答:DATA_SEG SEGMENT LENGTH DB 5 DATA_LIST DW –1,0,2,5,4,5DUP(?) MAX DW ? MIN DW ? DATA_SEG ENDS CODE_SEG SEGMENT ASSUME CS:CODE_SEG,DS:DATA_SEG START:MOV AX,DATA_SEG MOV DS,AX MOV SI,OFFSET DATA_LIST MOV AX,[SI] MOV BX,[SI] MOV CX,LENGTH XOR AX,AX XOR BX,BX CLC AGAIN:CMP AX,[SI] JG NEXT1 MOV AX,[SI] NEXT1:CMP BX,[SI] JNG NEXT2 MOV BX,[SI] NEXT2:JNZ AGAIN MOV MAX,AX MOV MIN,BX CODE ENDS END START 12(给出等值语句如下: ALPHA EQU 100 BETA EQU 25 GAMMA EQU 2 下列表达式的值是多少, (1)ALPHA*100+BETA (2)ALPHA MOD GAMMA+BETA (3)(ALPHA+2)*BETA-2 (4)(BETA/3)MOD5 (5)(ALPHA+3)*(BETA MOD GAMMA) (6)ALPHA GE GAMMA (7)BETA AND 7 (8)GAMMA OR 3 解答: (1)=10025;(2)=19;(3)=2548;(4)=3;(5)=103;(6)=0;(7)=01H;(8) =03H。 13(对于下面的数据定义,三条指令分别汇编成什么, TABLEA DW 10 DUP(,) TABLEB DB 10 DUP(,) TABLEC DB ‘1234’ ? ? MOVE AX,LENGTH TABLEA MOVE BL,LENGTH TABLEB MOVE CL,LENGTH TABLEC 解答: MOVE AX,10 MOVE BL,10 MOVE CL,1 14(对于下面的数据定义,各条MOVE指令单独执行后,有关寄存器的内容是什么, FLDB DB TABLEA DW 20DUP(,) TABLEB DB ‘ABCD’ MOVE AX,TYPE FLDB MOVE AX,TYPE TABLEA MOVE CX,LENGTH TABLEA MOVE DX,SIZE TABLEA MOVE CX,LENGTH TABLEB 解答: AX=0001H AX=0002H CX=0014H DX=0028H CX=0001H。 15(指出下列伪操作表达方式的错误,并改正之。 (1)DATA_SEG SEG (2)SEGMENT ‘CODE’ (3)MYDATA SEGMENT,DATA ? ENDS (4)MAIN_PROC PROC FAR ? END MAIN_PROC MAIN_PROC ENDP 答:(1) DATA-SEG SEGMENT (2) CODE SEGMENT PARA 'CODE' (3) /DATA错。定义数据段应在代码段中用ASSUME。ENDS缺少‘MYDATA’。 (4) 多余END,MAIN-PROC应删除。 16(按下面的要求写出程序的框架 (1)数据段的位置从0E000H开始,数据段中定义—个l00字节的数组,其类型属性既是 字 又是字节; (2)堆栈段从小段开始,段组名为STACK, (3)代码段中指定段寄存器,指定主程序从1000H开始,给有关段寄存器赋值; (4)程序结束。 答: DATA-SEG SEGMENT ORG 0E000H BYTE-ARRAY LABLE BYTE WORD-ARRAY DW 50 DUP(?) DATA-SEG ENDS STACK-SEG SEGMENT PARA 'STACK' STACK-SEG ENDS CODE-SEG SEGMENT ASSUME CS:CODE-SEG,DS:DATA-SEG,SS:STACK-SEG ORG 1000H START: MOV AX ,DATA-SEG MOV DS ,AX MOV AX ,STACK-SEG MOV SS ,AX . . CODE-SEG ENDS END START 17(假设在数据段X_SEG、附加段Y_SEG和堆栈段Z_SEG中分别定义了字变量X,Y和Z。试 编制一完整的程序计算 X,X+Y+Z 答: X-SEG SEGMENT X DW ? X-SEG ENDS Z-SEG SEGMENT Z DW ? Z-SEG EMDS Y-SEG SEGMENT Y DW ? Y-SEG ENDS CODE SEGMENT MAIN PROC FAR ASSUME ES:Y-SEG,CS:CODE,DS:X-SEG,SS:Z-SEG START PUSH DS SUB AX AX PUSH AX MOV AX ,Y_SEG MOV ES ,AX MOV AX,Z_SEG MOV SS,AX MOV AX,X_SEG MOV DS,AX MOV AX,DS:X MOV BX,ES:Y ADD AX BX JO OVERFLOW MOV BX ,SS:Z ADD AX,BX JO OVERFLOW MOV DS:X,AX OVERFLOW :RET MAIN ENDP CODE ENDS END START 18(写一个完整的程序放在代码段C_SEG中,要求把数据段D_SEG中的AUGEND和附加段 E_SEG中的ADDEND相加,并把结果存放在D_SEG段中的SUM中。其中AUGEND、ADDEND和SUM 均为双精度数,AUGEND赋值为99251,ADDEND赋值为-15962。 解答:TITLE SUM D_SEG SEGMENT AUGW LABEL WORD AUGEND DD 99251 SUM DW 2 DUPL (?) D_SEG ENDS E_SEG SEGMENT ADDW LABEL WORD ADDEND DD -15962 E_SEG ENDS C_SEG SEGMENT ASSUME DS :D_SEG ,ES:E_SEG ,CS:C-SEG MAIN PROC FAR START :PUSH DS MOVE AX,0 PUSH AX MOV AX,D_SEG MOV DS ,AX MOV AX,E_SEG MOV ES,AX ADDT :MOV AX,AUGW MOV BX,AUGW+2 ADD AX, ES : ADDW ADC BX, ES: ADDW+2 MOV SUM ,AX MOV SUM+2,BX RET MAIN ENDP C_SEG ENDS END START 19(读下面程序段,请问:在什么情况下,本段程序的执行结果是AH,0, BEGIN: IN AL,5FH TEST AL,80H JZ BRCHl MOV AH,0 JMP STOP BRCHl: MOV AH,0FFH STOP: HLT 解答:AL中的最高位为1时。 20(读程序: START: IN AL,20H MOV BL,AL IN AL,30H MOV CL,AL MOV AX,0 ADLOP: ADD AL,BL ADC AH,0 DEC CL JNZ ADLOP HLT 请问: (1)本程序实现什么功能? (2)结果在哪里? 解答:完成20H*30H,结果在AX中。 21(请编一程序段完成AX*l0的任务(要求不准用乘法指令做)。 解答: MOV BX,AX MOV CL 2 SHL AX, CL ADD AX,BX SHL AX ,1 22(编程序使: (1)AX寄存器低4位清零。 (2)BX寄存器低4位置“1”。 (3)CX寄存器低4位变反。 (4)用TEST指令测试DL寄存器位3、位6是否同时为0,若是,将0送DL;否则l送DH。 解答 :1,AND AX ,0FFF0H 2,OR BX ,000FH 3,XOR CX ,000FH 4,TEST DL ,48H JZ LOOP MOV DH,1 HLT LOOP :MOV DL ,0 HLT 23(编一程序段,完成符号函数(-128?x?127): 1 (x.>0) y= 0 (x=0) -1 (x<0) 假设x的值存放在DATAl中,y的值存放在DATA2中。 解答: START :MOV AL ,DATA1 AND AL,AL JGE BIGR MOV AL,0FFH MOV DATA2.AL HLT BIGR:JE EQUL MOV AL,1 MOV DATA2,AL HLT EQUL:MOV DATA2,AL HLT 24(设AX寄存器中有一个16位二进制数,编一程序,统计AX中“l”的个数,统计结果 送CX中。 解答: START :MOV CX ,0 LOOP: SUB AX,0 JZ STP SAL AX,1 JNC NOD INC CX NOD:JMP LOOP STP:HLT 25(编一子程序利用XLAT指令把十六进制数转换成ASCII码。假设ASCII码 存放在以 DAT1为首地址的数据区中,对应的16进制数放在以DAT2为首地址的数据区中, 转换结果送以DAT3为首地址的数据区中。 解答:MAIN :PUSH BX PUSH SI PUSH DI PUSH CX PUSH AL PUSH DS START:MOV BX,DATA1 MOV SI ,DATA2 MOV DI DATA3 MOV CX ,16 NEST:LODSB XLAT DATA1 STOSB LOOP NEST POP DS POP AL POP CX POP DI POP SI POP BX RET 26.(略) 27(试分三种情况说明:当NUM字节单元中数据是什么情况时,TEMP字节单元分别是多少, NUM DB XX TEMP DB ? ? ? MOV AL,NUM TEST AL,99H JNE RES AND AL,99H JMP END0 RES: JS NE INC AL JMP END0 NE: DEC AL END0: MOV TEMP,AL ? 答:NUM字节单元中的数据是一个八位2进制数。当其第1、4、5、8位均为0时,将此数 装入temp单元,若不满足此条件,则又分为两种情况,其最高位为1时(负数),将此数 减1装入temp单元;其最高位为0时(正数),将此数加1装入temp单元。 28(试编制一程序,把CHAR1中各小写字母分别转换为对应的大写字母,并存放在 CHAR2 各字节单元中 : CHAR1 DB ‘capitalize’ CHAR2 DB $-CHAR1 DUP(?) 解答:MOV CX ,0AH MOV SI ,0 MOV AX , 1AH LOOP1: ADD AX ,CHAR1[SI] MOV CHAR2[SI], AX INC SI LOOP LOOP1 29(试编制一程序,把DA_BYl字节单元中数据分解成三个八进制数,其高位八进制数存放 在DA-BY2字节单元中,最低位存放在DA_ BY2+2字节单元中。 DA_BY1 DB 6BH DA_BY2 DB 3 DUP(0) 解答 : MOV AL ,DA-BY1+1 SHR AL ,2 MOV DA-BY2 ,AL MOV AL ,DA-BY1 AND AL ,07H ; (0,111) MOV DA-BY2+2,AL 30(试编制一程序,找出DA数据区中带符号的最大数和最小数。 解答: MOV CX , LENGTH MOV BX ,0000H MOV DX ,0000H MOV SI ,0000H LOOP1: MOV AX , ADDRESS[SI] CMP AX ,80H JGE W1 CMP AX ,BX JG W2 INC SI LOOP LOOP1 HLT W1: CMP AX ,DX JGE W3 JMP LOOP1 W3: MOV DX ,AX JMP LOOP1 W2: MOV BX ,AX JMP LOOP1 31(试编制一程序,统计出某数组中相邻两数间符号变化的次数。 解答:MOV CX ,LENGTH MOV SI ,0 MOV AX ,ADDRESS[SI] AND AX ,80H INC SI MOV BX ,ADDRESS[SI] AND BX ,80H SUB BX ,AX NEG BX CMP BX ,80H JG W1 LOOP LOOP1 HLT W1 INC DX JMP LOOP1 HLT 32(设某数据段已有N个学生的某科成绩(百分制),并按学号的次序存放在以STUD为首址各字单元的低字节中。现在要求按成绩的高低记入名次,并把名次填入成绩所在字单元的高字节中,各字单元的信息格式为: 15 8 7 0 名 次 成 绩 成绩相同者,名次相同。试编制一程序实现上述要求(不要排序)。 ’ 解答:START: MOV BX , OFFSET STUD MOV DX ,OFFSET STUD ; BX ,DX中放置成绩表的偏移地址 MOV CX , N—1 ;CX中放置的是要比较的次数 MOV SI , 0 ;名次放在SI中 LOOP1: MOV AL,[DX] LOOP2: MOV BX , [BX+2] ;取下一个同学的成绩 CMP AL , [BX] JA NEXT ;如果比下一个同学成绩高则到NEXT即使名次加一 DEC CX ;否则计数值减一 JNE LOOP2 ;计数不为零再循环取下一个同学成绩 MOV [DX+1] ,SI HLT NEXT: ADD SI , 1 ;名次加一 DEC CX JNE LOOP2 MOV [DX+1],SI ;如果计数为零比较完毕,最后将名次放到与成绩相连的单元中去 MOV DX , [DX+2] ;取下一个成绩去和其他N—1个数比较 LOOP LOOP1 HLT END START 33(试编制程序,分别对NUM中各数统计出有多少个20,余下有多少个5,再余下有多少个2,再余下有多少个1。统计的各数分别存放在NUM20,NUM5,NUM2,NUM1的对应位置中,程序要求用主程序子程序形式编制,而且用两种参量传递方法分别编制主程序和子程序。数据段如下: DATA SEGMENT NUM DW 0133H,0D5FH,1234H COUNT EQU ($-NUM)/TYPE NUM NUM20 DB COUNT DUP(0) NUM5 DB COUNT DUP (0) NUM2 DB COUNT DUP (0) NUM1 DB COUNT DUP (0) DATA ENDS 解答:DADA SEGMENT NUM DW 0133H , 0D5FH,1234H COUNT EQU ($-NUM)/TYPE NUM NUM20 DB COUNT DUP (0) NUM5 DB COUNT DUP(0) NUM2 DB COUNT DUP(0) NUM1 DB COUNT DUP(0) CMPNUM DB 20,5,2,1 DATA ENDS CODE SEGENT ASSUME DS:DATA ASSUME CS:CODE MAIN PROC FAR START: MOV AX,DATA MOV DS ,AX MOV DX ,OFFSET NUM20 MOV CX ,COUNT MOV BX ,OFFSET CMPNUM MOV SI ,0 MOV DI , 0 CALL CMPDATA CMPDATA PROC NEAR PUSH AX PUSH DX LOOP: MOV DX , [DI] LOOP1: MOV AX, [SI] CMP AX ,DX JE NEXT INE SI LOOP LOOP1 JMP AGAIN NEXT: ADD [BX][SI] ,1 INC SI LOOP LOOP1 AGAIN: MOV CX ,4 ADD DI , COUNT LOOP LOOP HLT PUSH DX PUSH AX CMPDADT ENDP MAIN ENDP CODE ENDS END START 34(已知两个正整数BE1(1~14)和BE2(0~14),但是,BEl+BE2,15。试编制一程序,把DA_WORD 字单元的内容从第BE1位开始,自左至右的BE2个位清零,其余各位保持不变。处理的数据 放在RESU单元中。 解答: MOV BL ,BE1 MOV CX ,BE2 MOV DX ,0 LOOP: MOV AX ,1 SAL AX, BL ADD DX,AX DEC BX DEC CX JNZ LOOP ;此循环的目的是保证DX中的16位数的DE1位到其后BE2个位全部 为一 NOT DX ;将DX中的数取反,保证BE1位到BE2位个数全为零,其他为1 MOV BX, OFFSET DA-WORD AND [BX] , DX 35(编写一条宏指令CLRB,完成用空格符将一字符区中的字符取代的工作。字符区首地址 及其长度为变元。 解答: CLRB MACRO n , cblock MOV CX , n ;长度为n MOV AL , ‘ ’ ;把空格送到AL中 LEA DI, cblock ;DI中放字符区首地址 REP STOSB ;重复操作直到CX=0 ENDM 36(某工厂计算周工资的方法是每小时的工资率RATE乘以工作时间HOUR,另外每工作满十 小时加奖金3元,工资总数存放在WAG中,请将月工资的计算编写成一条宏指令WAGES,并 展开宏调用: WAGES R1,42 解答:宏定义: WAGES MACRO RATE,HOUR MOV AL,HOUR MUL RATE MOV BX,AX MOV AX,HOUR DIV 10 MUL 3 ADD BX,AX MOV WAG,BX ENDM 宏调用: WAGES R1,42 宏展开: MOV AL,42 MUL R1 MOV BX,AX MOV AX,42 DIV 10 MUL 3 ADD BX,AX MOV WAG,BX 37(给定宏定义如下: DIF MACRO AX, Y MOV AX, X SUB AX, Y ENDM ABSDIF MACRO V1,V2,V3 LOCAL CONT PUSH AX DIF V1,V2 CMP AX,0 JGE CONT NEG AX CONT: MOV V3,AX POP AX ENDM 试展开以下调用,并判定调用是否有效。 (1)ABSDIF Pl,P2,DISTANCE (2)ABSDIF [BX],[SI],X[D1],CX (3)ABSDIF [BX][S1],X[BX][S1],240H (4)ABSDIF AX,AX,AX 解答:(1)宏展开: + PUSH P1 + MOV P1 , X + SUB P1 ,P2 + CMP P1,0 + JGE ,,0000 + NEG P1 +,,0000: MOV DISTANCE ,P1 + POP P1 调用有效 (2)宏展开: + PUSH [BX] + MOV [BX], X + SUB [BX], [SI] + CMP [BX], 0 + JGE ,,0000 + NEG [BX] +,,0000 MOV X[DI] , [BX] + POP [BX] (3)宏展开: + PUSH [BX][SI] + MOV [BX][SI] , X + SUB [BX][SI],X[BX][SI] + CMP [BX][SI] ,0 + JGE ,,0000 + NEG [BX][SI] +,,0000: MOV 240H [BX][SI] POP [BX][SI] (4)宏展开: + PUSH AX + MOV AX , X + SUB AX ,AX + CMP AX ,0 + JGE ,,0000 + NEG AX ,,0000: MOV AX AX POP AX 调用有效 38(试编制宏定义,要求把存储器中的一个用EOT字符结尾的字符串传送到另一个存储区去。 解答: SEND MACRO SCHARS,DCHARS LOCAL NEXT,EXIT PUSH AX PUSH SI MOV SI,0 NEXT:MOV AX,SCHARS[SI] MOV DCHARS[SI],AL CMP AL,24H JZ EXIT INC SI JMP NEXT EXIT: ENDM 39(宏指令BIN_SUB完成多个字节数据连减的功能: RESULT ?(A-B-C-D-„) 要相减的字节数据顺序存放在首地址为OPERAND的数据区中,减数的个数存放在COUNT单元 中,最后结果存入RESULT单元。请编写此宏指令。 解答: BIN-SUB MARCO OPERAND , COUNT , RESULT MOV AX OPERAND+1 LOOP 1: CMP COUNT ,0 JNG EXIT MOV BX OPERAND+2 SUB AX ,BX DEC COUNT INC OPERAND LOOP LOOP1 EXIT: MOV RESULT AX ENDM 40(请用宏指令定义一个可显示字符串GOOD:’GOOD STUDENTS:CLASSX NAME’,其中X和 NAME在宏调用时给出。 解答: MSGGEN MACRO LAB ,X, NAME LAB DB `GOOD:‘GOOD STUDENTS:CLASS&X &NAME’` LOOP PRINTIT PRINTIT: MOV DL LAB+1 ;将ASCII代码串放入DL MOV AH ,2 INT 21H DEC LAB ENDM 缺41 42(定义宏指令并展开宏调用。宏指令JOE把一串信息’MESSAGE NO.K’存入数据存储区 XK中。 宏调用为: I=0 JOE TEXT,I ? JOE TEXT,I JOE TEXT,I 解答:joe macro a,j ; macro a,%j; j=j+1 endm mary macro x,k; x&k db message no, &k; endm i=o joe text ,i + text0 db'message no.o' joe text , i + text1 db 'message no.1' joe text, i +text db 'message no.2' 43(大多数DOS功能调用都需要在AH寄存器中存放不同的功能码。请将这种功能调用定义 成宏指令DOS21。再定义宏指令DISP完成显示字符的功能,其中可使用已定义的DOS21。然 后展开宏调用DISP ’*’ 。 解答:DOS21 MACRO NUM MOV AH,NUM INT 21H EDM DISP ‘MACRO ZIFU’ MOV DI,‘ZIFU’ DOS21 02H ENDM 宏调用: DISP ‘*’ 宏展开: MOV DL,‘*’ MOV AH,02H INT 21H 44(宏指令STORE定义如下: STORE MACRO X, N MOV X+I,I I,I+1 IF I - N STORE X,N ENDIF ENDM 试展开下列调用: I,0 STORE TAB,7 解答:I=0 store tab ,7 mov tab,0 I=1 store tab,7 +mov tab+1,1 I=2 store tab,7 + mov tab+2,2 I=3 store tab+3,3 + mov tab+3,3 I=4 store tab,7 + mov tab+4,4 I=5 store tab,5 + mov tab+5,5 I=6 store tab,7 + mov tab+6,6 45(试编写非递归的宏指令,使其完成的工作与44题的STORE相同。 解答:store macro k mov tab+k,k endm hongdiaoyong i=o rept 7 store %i i=i+1 endm 46(试编写一段程序完成以下功能,如给定名为X的字符串长度大于5时,下列指令将汇编 10次。 ADD AX, AX 解答:rept macro x,r mov ax,oper1 if x gt 5 r=0 rept 10 r=r+1 add ax ,ax endm 47(定义宏指令FINSUM:比较两个数X和Y,若X,Y则执行SUM?X+2*Y;否则执行SUM? 2*X+Y 解答: finsum macro x,y,sum; mov bx ,x mov al,2 if x gt y mul y add bx,ax mov dx, sum mov dx, bx if x lt y mov bx, x mul x mov dx,sum mov dx,bx endmaaa 48(试编写一段程序完成以下功能:如变元X=’VT55’,则汇编MOV TERMINAL,0;否则 汇编 MOV TERMINAL,1。 解答:pre macro x,arg,terminal mov arg ifidn x,arg mov terminal,0 ifdif x,arg mov terminal ,1 endm 49(对于DOS功能调用,所有的功能调用都需要在AH寄存器中存放功能码,而其中有一些 功能需要在DX中放一个值。试定义宏指令DOS21,要求只有在程序中定义了缓冲区时,汇 编为: MOV AH,DOSFUNC MOV DX,OFFSET BUFF INT 21H 否则,无MOV DX,OFFSET BUFF指令。并展开以下宏调用: DOS21 01 DOS21 0AH, IPFIELD 解答: DOS21 MACRO DOSFUNC,BUFF MOV AH,DOSFUNC IF B〈BUFF〉 INT 21H ELSE MOV DX,OFFSET BUFF 宏展开: DOS21 01 MOV AH,0H INT 21H DOS21 0AH,IPFIEID MOV AH,0AH MOV DX,IPFIELD INT 21H 50(编写一段程序,使汇编程序根据SIGN中的内容分别产生不同的指令。 如果(SIGN),0,则用字节变量DIVD中的无符号数除以字节变量SCALE;如果(SIGN), 1,则用字节变量DIVD中的带符号数除以字节变量SCALE,结果都存放在字节变量RESULT 中。 解答:MOV AL,DIVD IFE SIGN MOV AH,0 DIV SCALE ELSE CBW IDIV SCALE ENDIF MOV RESULT,AL 第六章输入输出处理方法习题 1(如果8251A设定为异步通信方式,发送器时钟输入端和接收器时钟输入端都连接到频率为19.2KHZ的输入信号,波特率因子为16,则波特率为( )。 (A)1200 (B)2400 (C)9600 (D)19200 答: A 2(试分析,在数据通信中,比特率与波特率分别代表的含义, 答:比特率指数据通信中信号频率每秒钟变化的次数; 波特率指数据通信过程中每秒种传送的位数(bit/s),故 1波特=1位/秒。 3(8255A工作在方式1时,端口A和端口B作为数据输入/输出使用,而端口C的各位分别作为端口A和端口B的控制信息和状态信息。其中作为端口A和端口B的中断请求信号的分别是端口C的( )。 (A)PC和PC (B)PC和PC (C)PC和PC (D)PC和PC 42516730 答: D 4.在DMA传送过程中完成数据传送功能是由( )。 (A) CPU执行从存储器读出的指令 (B) CPU直接控制外部设备与存储器 (C) DMAC执行从存储器读出的指令 (D) 外部设备中的控制部件直接控制 (E) DMAC的硬件直接控制 答: E 5.DAC0832是一个分辨率为(1),输入具有(2)功能的D/A转换器。 (A)8位 (B)10位 (C)12位 (D) 单缓冲 (E) 双缓冲 (F) 无缓冲 答: A E 6.在IBM PC/XT微机中8253-5定时器/计数器的三个通道的工作方式分别为:通道0工 作在(1);通道1工作在(2);通道2工作在(3)。 (A)方式0 (B)方式1 (C)方式2 (D)方式3 (E)方式4 (F)方式5 答: D C D 7(试分析:8251A能不能同时实现发送数据和接受数据的功能, 答:8251A是可编程控制的串行接口芯片,对其方式字、命令字及状态字初始化后,规定其通信方工(同步/异步)及数据格式等,命令字来控制发/收,状态字控制何时可以收/发。其实现的是半双工通信方式,不能同时实现发送和接受数据的功能。 8(当D/A转换器与CPU相连时,如果CPU的数据总线的位数小于D/A转换器的位数,这时需要采用什么结构, 答:当CPU的数据总线的位数小于D/A转换器的位数时,即使采用的D/A转换器内部带有数据缓冲器,也要采用外加三态缓冲器或数据寄存器与CPU相联的结构,并且是两级缓冲,以消除由于两次传送数据而产生的尖峰。 9(ADC0809与CPU相连接时,其模拟输入通道的地址由CPU提供。为了确保它对输入信号的可靠转换,需要在它们之间加上什么东西, 答:为了确保对输入信号的可靠转换,需在ADC0809 的ADDA,ADDC和CPU之间加一级地址锁存器或三态锁存器。 10(试分析:在异步串行通信工作状态下,通信双方是否需要同步, 答:需要同步。异步串行传送是指传送的每一个字符是随机出现在数据流中的,即是把每一个字符看作一个独立的传送单位,字符之间的间隔是随机的、任意的。但是,在一个字符内部的各个二进制位是同步传送的。收发双方对字符的同步是通过在字符格式中设置起始位和停止位来实现的 11(简述8086CPU对中断的响应和处理过程。 答:8086对各类中断的响应不完全相同,主要区别在于如何获得中断类型码。 A( 可屏蔽中断的响应过程。首先必须满足中断允许标志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和可屏蔽中断INTR。NMI是边缘 触发方式,要求高电平有效。一般用在如电源断电等紧急事件中,优先权较高,请求信 号不受标志位IF的影响。NMI中断类型码规定为2。 B(INTR可屏蔽中断请求是高电平有效的另一外部硬件中断源,高电平保持时间应维持到当 前指令结束。在8086中它不自中断控制器8259A,其外部电路所产生的中断的优先级别 由8259A管理产生。CPU只根据标志位IF的状态决定是否响应INTR。 C(内部中断:8086的内部中断产生的过程完全与硬件电路无关,是CPU根据软件中某条指 令或软件对PSW中的标志设置而产生的。内部中断可分为两大类型:一类是内部已硬件 设置好的类型0,类型4,它们依次为除法出错、单步中断、NMI、断点中断和溢出中断; 另一类是8086的中断系统中有一条两字节的中断指令INT n。n 即为中断类型码,CPU 根据中断类型码即可找到中断服务程序入口。 13(中断入口地址表的功能是什么,已知中断类型码分别为84H和FAH,它们的中断入口在中断入口地址表的什么位置上, 答:中断入口地址表又称中断矢量表,它是中断矢量类型码与该中断类型相对应的中断服务程序入口之间的连接表,它设置在系统RAM最底端1024个单元内。中断矢量表共有256种中断类型码,每个类型码占用4个字节。其中低两个字节为中断服务程序入口地址的偏移地址,置入IP;高两位字节为服务程序的段基址置入CS。于是可通过这4个字节的值即可找到该中断类型的中断服务程序入口。 中断类型码84H 中断入口在中断矢量表的210H 中断类型码FAH 中断入口在中断矢量表的368H 14(为什么在主程序和中断服务程序中都要安排开中断指令?如果开中断指令安排在中断服务程序的末尾,那么将产生什么后果。如果要实现中断嵌套,则开中断指令应如何设置? 答: 开中断指明CPU允许中断,主程序中在开中断之前要屏蔽本级和低级中断,预防干扰,而后开中断允许处理高级中断请求。在中断处理之后也要开中断,允许任何中断请求。 如果没有开中断,更高级中断请求无法响应。 在中断服务期间,把该中断的断点保存后在开中断,表示响应更高级中断请求,然后进入中断服务程序,执行中断服务程序,在恢复断点之前关中断,之后又开中断,又可响应更高级中断。 15(简述中断控制器8259A的内部结构和主要功能。 答: 8259芯片内部结构包括八个部分:1、数据总线缓冲器:是一个双向八位三态缓冲器,由它构成8259与CPU之间的数据接口,是8259与CPU交换数据的必经之路。2、读/写控制电路:用来接收来自CPU的读/写控制命令和片选控制信息。3、级联缓冲/比较器:在多片8259级联使用,构成主从关系。4、中断请求寄存器(IRR):是一个八位寄存器,用来存放由外部输入的中断请求信号IR0-IR7。5、中断服务寄存器(ISR):是一个八位寄存器,用来记录正在处理的中断请求。6、中断屏蔽寄存器(IMR):是一个八位寄存器,用来存放各级中断请求的屏蔽信息。7、优先权判别器(PR)用来识别各中断请求的优先级别。8、控制电路:是8259A内部的控制器,根据中断请求寄存器IRR的置位情况和优先权判别器PR与判定结果向8259A 内部其他部件发控制信号,并向CPU 发中断请求信号 INT 和接收中断响应信号INTA 控制8259A 进入中断服务状态。 16(8259A对中断优先权的管理方式有哪几种?各是什么含义? 答: ?完全嵌套方式:ISR寄存器中某位置“1”,表示CPU正在处理这一级中断请求,8259A允许比它级别高的中断请求进入,禁止与它同级或低级中段请求进入。IR引入的中断请求有固定的中断级别,R0最低,R7最高。 ?自动循环方式:IR –IR优先级别不固定。每当任何一级中断被处理完,它的优先级别N0 就被改变为最低,而将最高级赋给比它低一级的中断请求。 ?中断屏蔽方式:由CPU在任何时候都可安排一条清除中断指令。 1) 普通屏蔽方式,将IMR中某一位或某几位置“1”,可将相应级的中断请求屏蔽掉。 2) 特殊屏蔽方式,当CPU正在处理某级中断时,要求仅对本级中断进行屏蔽,而允许其他 优先比它高或低的中断进入系统。 17(某系统中设置三片8259A级联使用,一片为主8259A;两片为从8259A;它们分别接入 主8259A的IR和IR端。若已知当前主8259A和从8259A的IR上各接有一个外部中断源,263 它们的中断类型码分别为A0H,B0H和C0H,已知它们的中断入口均在同一段中,其段基址 为2050H,偏移地址分别为11A0H,22B0H和33C0H,所有中断都采用电平触发方式、完全嵌 套、普通EOI结束,请(1)画出它们的硬件连接图;(2)编写全部初始化程序。 解答: 初始化程序: START:MOV AL ,19H MOV DX,偏移地址(主) OUT DX,AL MOV AL,0A0H MOV DX,奇地址(主) OUT DX,AL MOV AL,44H OUT DX,AL MOV AL,11H OUT DX,AL MOV AL,11H OUT DX,AL MOV AL,0B3H OUT DX,AL MOV AL,22H MOV DX,偶地址(主) OUT DX,AL MOV AL,19H MOV DX,偶地址(从1) OUT DX,AL MOV AL,0B0H MOV DX,奇地址(从1) OUT DX,AL MOV AL,02H OUT DX,AL MOV AL,11H OUT DX,AL MOV AL,0F7H OUT DX,AL MOV DX,偶地址(从1) MOV AL,22H OUT DX,AL 从2:MOV AL,19H MOV DX,偶地址(从2) OUT DX,AL MOV AL,0C0H MOV DX,奇地址(从2) OUT DX,AL MOV AL,06H OUT DX,AL MOV AL,11H OUT DX,AL MOV AL,0F7H OUT DX,AL MOV DX,偶地址(主) MOV AL,22H OUT DX,AL STI HH: HLT JMP 11H 18(可编程计数,定时器芯片8253有几个通道?各采用几种操作方式?简述这些操作方式的 主要特点。 答:有0,1,2三个通道,各通道有六种工作方式,以完成定时,计数,脉冲发生器等多种 功能。 (1)工作方式0:计数结束中断方式 (2)工作方式1:可编程单脉冲发生器 (3)工作方式2:速率波发生器 (4)工作方式3:方波发生器 (5)工作方式4:软件触发方式 (6)工作方式5:硬件触发方式 19(某系统中8253芯片的通道0~通道2和控制字端口号分别为FFF0H~FFF2H,定义 通道0工作在方式2,CLK=5MHz,要求输出OUT,lkHz方波;定义通道l工作在方式4, 用00OUT作计数脉冲,计数值为1000,计数器计到0,向CPU发中断请求,CPU响应这一中断后0 继续写入计数值1000,重新开始计数,保持每1秒钟向CPU发出一次中断请求,请编写初 始化程序,并画出硬件连接图。 解答: STT:MOV DX,0FF0H MOV AL,34H OUT DX,AL MOV DX,通道0端口地址 MOV AX,1388H OUT DX,AL MOV AL,AH OUT DX,AL MOV DX,0FFF1H MOV AL,78H OUT DX,AL MOV DX,通道1端口地址 MOV AX,2710H OUT DX,AL MOV AL,AH OUT DX,AL MOV DX,0FFF2H MOV AL,B1H OUT DX,AL MOV DX,通道2端口地址 MOV AX,1000H OUT DL,AL MOV AL,AH OUT DX,AL 对8259A初始化(略) HH:HLT JMP HH 20(什么叫DMA传送方式?DMA控制器8257的主要功能是什么? 答:DMA传送方式就是用DMA控制器来接管CPU对总线的控制权。在存储器与局速外设之间 建立直接进行数据块传送与高速通路。 主要功能有三个(1)DMA读操作—读存储器送外设 (2)DMA写操作—对外设写存储器 (3)DMA校验操作—通道不进行数据传送操作,只是完成校验操作。 21(某8086系统中使用8257完成从存储器到外设端口的数据传送任务,若已知通道0的地 址寄存器、终点计数器、方式寄存器端口地址分别为置EEE0H,EEElH和EEE8H,要求通过 通道0将存储器中偏移地址为1000H~10FFH的内容传送到显示器输出,请编写初始化程序。 解答: ST57:MOV DX,0EEE8H MOV AL,41H OUT DX,AL MOV DX,0EEE0H MOV AX,1000H OUT DX,AL MOV AL,AH OUT DX,AL MOV DX,0EEE1H MOV AL,0FFH OUT DX,AL HLT 22(某8086系统中使用8257完成从存储器到存储器的数据传送,已知源数据块首地址的偏 移地址值为1000H,目标数据块首地址的偏移地址值为l050H,数据块长度为100字节。请 编写初始化程序,并画出硬件连接图。 解答: STS7:MOV DX,方式寄存器端口 MOV AL,41H OUT DX,AL MOV DX,通道0地址寄存器端口 MOV AX,1000H OUT DX,AL MOV AL,AH OUT DX,AL MOV DX,方式寄存器端口 MOV AL,42H OUT DX,AL MOV DX,通道1地址寄存器端口 MOV AX,1050H IN DX,AL MOV AL,AH IN DX,AL MOV DX,通道0终点计数器端口 MOV AL,64H OUT DX,AL HLT 23(编一系统初始化程序,由8259A的IR~IR共五个中断源,中断类型码为4BH,4CH,044DH,4EH,4FH。8259A端口地址为80H、81H。允许它们以完全嵌套方式工作。 解答: STT: MOV AL,11H MOV DX,80H OUT DX,AL MOV AL,4BH MOV DX,81H OUT DX,AL MOV AL,01H OUT DX,AL MOV AL,0D0H OUT DX,AL MOV AL,20H MOV DX,80H OUT DX,AL HLT 24(用8255和8253编程,使扬声器发出600Hz的可听频率,击任一键停止。(其中主时钟 —9为1.9318MHz,一个时钟周期为888.2229×10秒。) 解答: STACK SEGMENT PARA STACK’STACK’ DB 256 DUP(0) STACK ENDS DATA SEGMENT PARA PUBLIC’DATA’ FREG DW 1989; 600周方波计数值 DATA ENDS CODE SEGMENT PART PUBLIC’CODE’ START PROC FAR ASSUME CS:CODE,DS:DATA PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX IN AL,61H OR AL,3 OUT 61H,AL MOV AL,0B6H OUT 43H,AL MOV BX,FREG MOV AL,BL OUT 42H,AL MOV AL,BH OUT 42H,AL MOV AH,0 INT 16H IN AL,61H AND AL,0FCH OUT 61H,AL RET START ENDP CODE ENDS END START 25(用8253产生一个可编程采样速率的A,D子系统,要求通过8253的三个计数器,计数 器0工作在方式2、计数器1工作在方式l,计数器2工作在方式3。设它们的三个初始计 数值分别设为X,Y和Z(X,Y,Z小于256)。时钟频率设为F,用OUT产生脉冲作为ADC的0 启动转换信号。GATE和GATE引线输入一个由低电平到高电平的跳变启动信号,作为数模转12 换器在YZ,F秒时间内以每秒F,X个样本速率进行量化输入操作。设8253端口地址为0040H, 0042H,0044H,0046H,写出8253的初始化程序。 解答: MOV AL,14H OUT 46H,AL ;设置计数器0为方式2 MOV AL,X OUT 40H,AL ;置计数器0初值 MOV AL,73H OUT 46H,AL ;设置计数器 1为方式1 MOV AX,Y OUT 42H,AL MOV AL,AH OUT 42H,AL MOV AL,96H OUT 46H,AL ;置计数器2为方式3 MOV AL,Z OUT 44H,AL 26(设8253控制端口地址为203H,定时器0地址为200H,定时器l地址为201H,编程序 将定时器0设为方式3(方波)、定时器l为方式2(分频),定时器0的输出脉冲作为定时器 l的时钟输入,CLK连接总线时钟4.77MHz,定时器1输出OUT约为40Hz。 01解答: TIM-CTL EQU 203H ;控制口地址 TIMER0 EQU 200H ;计数器/定时器0口地址 TIMER1 EQU 201H ;计数器/定时器1口地址 MODE03 EQU 36H ;方式字,定时器0工作于方式3 MODE12 EQU 74H ;方式字,定时器1工作于方式2 DATA SEGMENT MESS DB’8253A TIMER0 IN MODE3!COUNT=2000H’,0AH,0DH DB’8253A TIMER1 IN MODE2!COUNT=0FH’,0AH,0DH,’$’ DATA ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE,DS:DATA START:PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX CLI ; 关中断 MOV DX,TIM-CTL MOV AL,MODE03 ; 设置定时器0,工作于方式3 OUT DX,AL MOV DX,TIMER0 MOV AL,00 ; 定时器0置初值低位为00H OUT DX,AL MOV AL,20H ; 定时器0置初值,高位为20H OUT DX,AL MOV DX,TIM-CTL MOV AL,MODE12 ; 定时器1,工作于方式2 OUT DX,AL MOV DX,TIMER1 ; 定时器1置初值低位为0FH MOV AL,0FH OUT DX,AL MOV AL,00 ; 定时器置初值高位为00H OUT DX,AL STI ; 开中断 MOV DX,OFFSET MESS ;显示提示信息 MOV AH,09 INT 21H RET MAIN ENDP CODE ENDS START END 27(编一初始化程序,使8255A的PC端输出一个负跳变。如果要求PC端输出一个负脉冲55则初始化程序又是什么情况? 解答: 初始化程序: MOV AL,0BH;PC5置“1”控制字?AL MOV DX,××××××11B;控制口地址?DX OUT DX,AL;置“1”控制字?控制寄存器 MOV AL,0AH;PC5置“0”控制字?AL OUT DX,AL;置“0”控制字?控制寄存器 如果要求PC5输入一个负脉冲则再加两条指令 MOV AL,0BH OUT DX,AL 28(设8251A的控制和状态端口地址为52H,数据输入,输出口地址为50H(输出端口未用), 输入50个字符,将字符放在BUFFER所指的内存缓冲区中。请写出这段的程序。 解答: MOV AL,0FAH OUT 52H,AL ;设置模式因子,异步方式,波特新因子为16,用7个数据位,2 个停止位,偶校验 MOV AL,35H OUT 52H,A2 ;设置控制字,使发送器和接收器启动,并清除出错指示位 MOV DI,0;变址寄存器初始化 MOV CX,50;共50个字符 BEGIN:IN AL,52H TEST AL,02H 读取状态字,测试RXRDY位,是否为1,如为0表示未收到字符, 故继续读取状态并测试 JZ BEGIN IN AL,50;读取字符 MOV DX,OFFSET BUFFER MOV [DX+DI],AL ;将字符送入缓冲区 INC DI;修改缓冲区指针 IN AL,52H;读取状态字 TEST AL,38H JNE ERROR ;测试有无帧格式错误,奇/偶校验错误和超越错误,如有则转 出错处理程序。 LOOP BEGIN;如没有错再接收下一个字符。 JMP EXIT;如输入满50个字符,结束 ERROR:CALL ERR-OUT;调用出错处理程序 EXIT:„ 29(设状态端口地址为86H,数据端口地址为87H,外部输入信息准备好状态标志为D,1(请7用查询方式写出读入外部信息的程序段。 解答: POLL:IN AL,86H;从状态端口输入状态信息 TEST AL,80H;检查READY是否是1 JE POLL;为准备好,循环 IN AL,87H;准备好,从数据端口输入数据 30(设状态端口地址为76H,数据端口地址为75H,外设是否准备好信息由D位传送,D,l77为准备好,D,0为未准备好(忙),请用查询方式写出CPU向外部传送数据的程序段。 7 解答: POLL:IN AL,76H;从状态端口输入状态信息 TEST AL,80H;检查忙标志位 JNE POLL;忙等待 MOV AL,DATA;从缓冲区取数据 OUT 75H,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),从输入加上到输出模拟量达到满 刻度值或满刻度值的某一百分比(如90%)所需的时间。若输出形式是电流,其D/A 转换器的建立时间很短;若输出形式是电压,其D/A转换器的主要建立时间是输出 运算放大器所需要的时间。 34(A,D转换器的主要参数有哪几种?参数反映了A,D转换器什么性能? 答: A/D转换器的主要参数有: 1) 分辨率:转换器对输入电压微小变化响应能力的量度。由于分辨率与转换器的位 数有直接关系,所以也常以A/D转换位数表示分辨率。 2) 精度:A/D转换器的精度是指数字量所对应的模拟输入量的实际值与理论值之间 的差值(绝对精度)。在整个转换范围内,任一个数所对应的实际模拟输入电压 与理论输入电压的差(相对精度)。 3) 转换时间:完成一次A/D转换所需要的时间,称为A/D转换电路的转换时间。 35(分辨率和精度有什么区别? 答:转换精度和分辨率是两个根本不同的概念。转换精度取决于构成转换器的各个部件的误差和稳定性,而分辨率取决于转换器的位数。 36(DAC 0832有哪几种工作方式?每种工作方式适用于什么场合?每种方式用什么方法产生的? 答: 三种工作方式: 1) 单缓冲方式:此方式只适用于只有一路模拟量输出或几路模拟量非同步输出的 情况。采用的方法是:控制输入寄存器和DAC寄存器同时接收数据,或者只用 输入寄存器而把DAC寄存器接成直通方式。 2) 双缓冲方式:此方式适用于多个DAC0832同时输出的情况。采用的方法是:先 分别使这些DAC0832的输入寄存器接收数据,再控制这些DAC0832同时传送 数据到DAC寄存器以实现多个D/A转换同步输出。 3) 直通方式:此方式适用于连续反馈控制线路中,方法是数据不通过缓冲器,即 WR1、WR2、XFER、CS均接地,ILE接高电平。此时必须通过I/O接口与CPU连 接,以匹配CPU与D/A的连接。 37(ADC把模拟量信号转换为数字量信号,转换步骤是什么?转换过程用到什么电路? 答: 转换步骤分为四步:即采样、保持、量化和编码。采样和保持在采样保持电路中进行 量 化和编码在ADC中进行。 38(ADC与微处理器接口的基本任务是什么, 答: ADC与微处理器接口的基本任务是:向ADC转发启动转换信号;向CP提供转换结束 信号,把转换好的数据送入微处理器. 39(ADC中的转换结束信号(EOC)起什么作用? 答: ADC中的EOC信号的作用是当ADC转换完毕时,EOC为“1”。所以EOC可以作中断请求信号,EOC可以作为被查询状态信号。 40(如果0809与微机接口采用中断方式,EOC应如何与微处理器连接?程序又有什么改进? 答: 连接方案:可采用直接与CPU INTR脚连接,或通过8259A接 CPU。设ADC0809的端口号为PORTAD,则在指令OUT PORTAD,AL执行后,A/D转换器开始转换,转换结束时EOC发一个高电平为转换结束,此信号产生中断请求,CPU响应中断后,去执行中断处理程序,去转换结果IN AL,PORTAD,此时M/IO,RD有效,CPU获得转换结果。 保存文章到麦库关闭工具条
本文档为【微机原理与接口答案】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_589748
暂无简介~
格式:doc
大小:253KB
软件:Word
页数:85
分类:公务员考试
上传时间:2017-10-15
浏览量:251