现代微型计算机原理与接口技术课后答案_第1页
现代微型计算机原理与接口技术课后答案_第2页
现代微型计算机原理与接口技术课后答案_第3页
现代微型计算机原理与接口技术课后答案_第4页
现代微型计算机原理与接口技术课后答案_第5页
已阅读5页,还剩98页未读 继续免费阅读

下载本文档

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

文档简介

全国高等学校“十一五”重点规划教材现代微型计算机原理与接口技术教程(习题解答)主编杨文显副主编杨晶鑫编著黄春华胡建人宓双清华大学出版社习题一18086CPU由哪几个部件构成它们的主要功能各是什么8086CPU由指令执行部件EU和总线接口部件BIU两个部份组成。指令执行部件主要功能是执行指令。总线接口部件的主要功能是完成访问存储器或I/O端口的操作形成访问存储器的物理地址;访问存储器取得指令并暂存到指令队列中等待执行;访问存储器或I/O端口以读取操作数参与EU运算,或存放运算结果。2什么是逻辑地址什么是物理地址它们各自如何表示如何转换程序中使用的存储器地址称为逻辑地址,由16位“段基址”和16位“偏移地址”(段内地址)组成。段基址表示一个段的起始地址的高16位。偏移地址表示段内的一个单元距离段开始位置的距离。访问存储器的实际地址称为物理地址,用20位二进制表示。将两个16位二进制表示的逻辑地址错位相加,可以得到20位的物理地址物理地址段基址16偏移地址在32位CPU的保护模式下,“逻辑地址”的表示产生了一些变化,请参考第8章的相关内容。3什么是堆栈它有什么用处在使用上有什么特点堆栈是内存中的一块存储区,用来存放专用数据。例如,调用子程序时的入口参数、返回地址等,这些数据都按照“先进后出”的规则进行存取。SS存放堆栈段的段基址,SP存放当前堆栈栈顶的偏移地址。数据进出堆栈要使用专门的堆栈操作指令,SP的值在执行堆栈操作指令时根据规则自动地进行修改。4设X36H,Y78H,进行XY和XY运算后FLAGS寄存器各状态标志位各是什么5按照传输方向和电气特性划分,CPU引脚信号有几种类型各适用于什么场合CPU引脚传输的信号按照传输方向划分,有以下几种类型输出信号从CPU向外部传送;输入信号从外部送入CPU;双向信号有时从外部送入CPU,有时从CPU向外部传送。双向信号主要用于数据信号的传输;输出信号用于传输地址信号和一些控制X36H00110110BY78H01111000B10101110BCF0,SF1,OF1,PF0,ZF0,AF0X36H00110110BY78H01111000B10111110BCF1,SF1,OF0,PF1,ZF0,AF1信号;输入信号主要用于传输外部的状态信号(例如READY)和请求(中断、DMA)信号。按照信号的电器特性划分,有以下几种类型一般信号用来传输数据/地址信号时,高电平表示“1”,低电平表示“0”;用来表示正逻辑的控制/状态信号时,“1”表示有效,“0”表示信号无效;用来表示负逻辑的控制/状态信号时,“0”表示有效,“1”表示信号无效。三态信号除了高电平、低电平两种状态之外,CPU内部还可以通过一个大的电阻阻断内外信号的传送,CPU内部的状态与外部相互隔离,也称为“悬浮态”。CPU放弃总线控制权,允许其他设备使用总线时,将相关信号置为“悬浮态”。68086CPU以最小模式工作,现需要读取内存中首地址为20031H的一个字,如何执行总线读周期请具体分析。为了读取内存中首地址为20031H的一个字,需要执行二个总线读周期。第一个总线周期读取20031H字节内容,进行的操作如下。T1状态IO/M1,指出CPU是从内存读取数据。随后CPU从地址/状态复用线(A19/S6A16/S3)和地址/数据复用线(AD15AD0)上发出读取存储器的20位地址20031H。为了锁存地址,CPU在T1状态从ALE引脚输出一个正脉冲作为地址锁存信号。由于需要读取高8位数据线上的数据(奇地址),BHE0。为了控制总线收发器8286接受数据,R/DT0。T2状态地址信息撤消,地址/数据线AD15AD0进入高阻态,读信号RD开始变为低电平(有效),DEN0,用来开放总线收发器8286。T3状态CPU检测READY引脚信号。若READY为高电平(有效)时,表示存储器或I/O端口已经准备好数据,CPU在T3状态结束时读取该数据。若READY为低电平,则表示系统中挂接的存储器或外设不能如期送出数据,要求CPU在T3和T4状态之间插入1个或几个等待状态TW。TW状态进入TW状态后,CPU在每个TW状态的前沿(下降沿)采样READY信号,若为低电平,则继续插入等待状态TW。若READY信号变为高电平,表示数据已出现在数据总线上,CPU从AD15AD0读取数据。T4状态在T3(TW)和T4状态交界的下降沿处,CPU对数据总线上的数据进行采样,完成读取数据的操作。第二个总线周期读取地址为20032H字节的内容。CPU发出的信号与第一个周期类似,区别在于T1状态CPU发出存储器地址为20032H,由于只需要读取低8位数据线上的数据(偶地址),BHE1。在CPU内部,从20031H读入的低位字节和从20032H读入的高位字节被拼装成一个字。78086CPU有几种工作方式各有什么特点8086/8088CPU有两种工作模式最大工作模式和最小工作模式。所谓最小工作模式,是指系统中只有一个8086/8088处理器,所有的总线控制信号都由8086/8088CPU直接产生,构成系统所需的总线控制逻辑部件最少,最小工作模式因此得名。最小模式也称单处理器模式。最大模式下,系统内可以有一个以上的处理器,除了8086/8088作为“中央处理器”之外,还可以配置用于数值计算的8087“数值协处理器”、用于I/O管理的“I/O协处理器”8089。各个处理器发往总线的命令统一送往“总线控制器”,由它“仲裁”后发出。CPU两种工作模式由MX/MN引脚决定,MX/MN接高电平,CPU工作在最小模式;将MX/MN接地,CPU工作在最大模式。8分析8086CPU两个中断输入引脚的区别,以及各自的使用场合。INTR用于输入可屏蔽中断请求信号,电平触发,高电平有效。中断允许标志IF1时才能响应INTR上的中断请求。NMI用于输入不可屏蔽中断请求信号,上升沿触发,不受中断允许标志的限制。CPU一旦测试到NMI请求有效,当前指令执行完后自动转去执行类型2的中断服务程序。NMI引脚用于连接CPU外部的紧急中断请求,例如内存校验错,电源掉电报警等。INTR引脚用于连接一般外部设备的中断请求。9什么是时钟周期、总线周期、指令周期它们的时间长短取决于哪些因素时钟周期CPU连接的系统主时钟CLK一个周期的时间。CLK信号频率越高,时钟周期越短。总线周期CPU通过外部总线对存储器或I/O端口进行一次读/写操作的过程称为总线周期。8086CPU总线周期一般由四个时钟周期组成,存储器/IO设备(接口)速度不能满足CPU要求时,可以增加一个或多个时钟周期。指令周期CPU执行一条指令的时间(包括取指令和执行该指令所需的全部时间)称为指令周期。指令周期的时间主要取决于主时钟的频率和指令的复杂程度,它也受到存储器或IO设备接口工作速度的影响。10在一次最小模式总线读周期中,8086CPU先后发出了哪些信号各有什么用处T1状态IO/M指出CPU是从内存(1)还是从IO端口(0)读取数据。随后CPU从地址/状态复用线(A19/S6A16/S3)和地址/数据复用线(AD15AD0)上发出读取存储器的20位地址,对IO端口访问时从AD15AD0上发出16位地址。为了锁存地址,CPU在T1状态从ALE引脚输出一个正脉冲作为地址锁存信号。如果需要读取高8位数据线上的数据(奇地址/读取一个字),BHE0。为了控制总线收发器8286数据传输方向,R/DT0。T2状态读信号RD开始变为低电平(有效),DEN0,用来开放总线收发器8286。T3状态CPU检测READY引脚信号。若READY为高电平(有效),表示存储器或I/O端口已经准备好数据,进入T4状态;若READY为低电平(无效),表示存储器或I/O端口尚未准备好数据,插入一个或多个TW状态,直到READY变为高电平。T4状态在T3(TW)和T4状态交界的下降沿处,CPU对数据总线上的数据进行采样,完成读取数据的操作。11结合指令OUT21H,AL,具体叙述最大模式总线写周期总线上的相关信号。T1状态地址/数据复用线(AD15AD0)上出现访问IO端口的16位地址21H。由于地址为奇数,需要通过高8位数据线访问端口,BHE0。T2状态IOW0,表示本周期对IO端口进行写操作。地址/数据复用线(AD15AD0)上出现来自AL的8位数据。T3状态若READY为高电平(有效),表示I/O端口已经准备好接收数据。反之,表示I/O端口尚未准备好接收数据,需要CPU插入TW周期进行等待,直到READY出现高电平(有效)。T4状态CPU结束本周期。习题二1内存储器主要分为哪两类它们的主要区别是什么内存储器分为随机存取存储器RAM(RADOMACCESSMEMORY)和只读存储器ROM(READONLYMEMORY)两类。RAM中信息可以按地址读出,也可以按地址写入。RAM具有易失性,掉电后原来存储的信息全部丢失,不能恢复。ROM中的信息可以按地址读出,但是在普通状态下不能写入,它的内容一般不能被改变。ROM具有“非易失性”,电源关闭后,其中的信息仍然保持。2说明SRAM、DRAM、MROM、PROM和EPROM的特点和用途。SRAM静态RAM,读写速度快,但是集成度低,容量小,主要用作CACHE或小系统的内存储器。DRAM动态RAM,读写速度慢于静态RAM,但是它的集成度高,单片容量大,现代微型计算机的“主存”均由DRAM构成。MROM掩膜ROM,由芯片制作商在生产、制作时写入其中数据,成本低,适合于批量较大、程序和数据已经成熟、不需要修改的场合。PROM可编程ROM,允许用户自行写入芯片内容。芯片出厂时,所有位均处于全“0”或全“1”状态,数据写入后不能恢复。因此,PROM只能写入一次。EPROM可擦除可编程只读存储器,可根据用户的需求,多次写入和擦除,重复使用。用于系统开发,需要反复修改的场合。3已知一个SRAM芯片的容量为8K8B,该芯片有一个片选信号引脚和一个读/写控制引脚,问该芯片至少有多少个引脚地址线多少条数据线多少条根据存储芯片地址线数量计算公式,KLOG2(10248)LOG2(213)13,即总计有13根地址线。另有8根数据线、2根电源线。所以该芯片至少有25(138112)根引脚。4巳知一个DRAM芯片外部引脚信号中有4根数据线,7根地址线,计算它的容量。根据存储容量计算公式S2KI,可得该芯片的存储容量为214416K4BIT(位),也可表示为64KB8KB(字节)。532M8B的DRAM芯片,其外部数据线和地址线为多少条根据存储芯片地址线数量计算公式,KLOG2(1024102432)LOG2(225)25,即需要25根地址线。但是,由于DRAM芯片的地址采用分时输入的方法,所以实际需要的地址线只有理论值的一半,此处为13根。数据线8根。6DRAM为什么需要定时刷新DRAM靠MOS管极间电容存储电荷的有无决定所存信息是0还是1,由于漏电流的存在,它存储的信息不能长时间保存,需要定时重新写入,称为“刷新”。774LS138译码器的接线如图228所示,写出0Y、2Y、4Y、6Y所决定的内存地址范围。从图看出,该存储系统的片内地址线有13根(A12A0),是一个由8KB存储芯片组成的存储系统,A17地址线不确定。它的地址分布为000,CBA,其中,CBA作为译码输入,与输出选择有关;“”表示可以为“0”,也可以为“1”。于是0Y对应的内存地址范围是00000H01FFFH;或20000H21FFFH。2Y对应的内存地址范围是04000H05FFFH;或24000H25FFFH。4Y对应的内存地址范围是08000H09FFFH;或28000H29FFFH。6Y对应的内存地址范围是0C000H0DFFFH;或2C000H2DFFFH。8叙述EPROM的编程过程,并说明EPROM和EEPROM的不同点。EPROM的编程过程标准编程方式VPP上加编程电压,地址线、数据线上给出要编程单元的地址及其数据,并使CE0、OE1。上述信号稳定后,在PRG端加上宽度为505MS的负脉冲,就可将一个字节的数据写入相应的地址单元中。不断重复这个过程,将数据逐一写入。快速编程方式使用100S的编程脉冲依次写完所有要编程的单元,然后从头开始校验每个写入的字节。若写得不正确,则重写这个单元。写完后再校验,不正确还可再写,直到全部正确。EPROM和EEPROM的不同点EPROM芯片用紫外线光照射擦除芯片的内容,擦除时需要把芯片从电路板上拔下,擦图228译码电路电路除操作对整个芯片进行。EPROM芯片编程需要外加“高电压”,所以需要专用的“编程器”才能实现。EPROM的编程一般情况下对整个芯片进行。EEPROM芯片的擦除用电信号实现,无需把芯片从电路板上拔下,可以进行“在系统编程”。EEPROM以字节为单位重写,EEPROM没有单独的擦除操作,写入就意味着擦除了原来的内容,所以使用比EPROM快速方便。相比较而言,EEPROM芯片的编程比较接近RAM的写入,它们之间的区别主要体现在速度上RAM写入与读出的速度相近,不需要其他的联络信号;EEPROM的写入比起读出明显要慢,为了掌握写入时间,EEPROM通常设置了一根“状态”引脚,供联络使用。9下列容量的ROM芯片除电源和地线,还有多少个输入引脚和输出引脚写出信号名称。(1)644(2)5128(3)128K8(4)16K8(5)1M16根据存储容量计算公式可得以上各芯片的地址、数据引脚分别为644地址线KLOG2(64)LOG2(26)6根,数据线4根;5128地址线KLOG2(512)LOG2(29)9根,数据线8根;128K8地址线KLOG2(1281024)LOG2(217)17根,数据线8根;16K8地址线KLOG2(161024)LOG2(214)14根,数据线8根;1M16地址线KLOG2(10241024)LOG2(220)20根,数据线16根。此外,所有ROM芯片都需要一根片选信号引脚;对于PROM,EPROM通常还需要“输出允许”和“编程脉冲”输入引脚。EEPROM芯片除了有“片选”、“输出允许”和“写允许”外,通常还有表示“写入完成”的状态信号引脚。10已知RAM芯片的容量为(1)16K8(2)32K8(3)64K8(4)2K8如果RAM的起始地址为3400H、则各RAM对应的末地址为多少存储器的末地址首地址芯片内字节数(容量)1上述各芯片对应RAM的末地址为16K8末地址是3400H4000H173FFH32K8末地址是3400H8000H1B3FFH64K8末地址是3400H10000H1133FFH2K8末地址是3400H800H13BFFH11如果存储器起始地址为1800H,末地址为1FFFH,求该存储器的容量。该存储器的容量为(1FFFH1800H1)8800H8,该存储器有20488个位,也可以写作2KB。12有一个存储体,其地址线15条,数据线8条,则1)该存储体能够存储多少个汉字2)如果该存储体由2K4位的芯片组成,需要多少片3)采用什么方法扩展分析各位地址线的使用。该存储体容量为215832KB,存储一个汉字需要二个字节,因此,它能够存储16384(16K)个汉字。需要2K4位的芯片32片,(32K8)/(2K4)32。可采用字位全扩展方法,由2片4位的芯片组成1组8位的存储单元,16组扩展成32K的8位存储体。芯片直接使用的地址线(片内地址)11根(A0A10),另外需要4根高位地址,连接到416译码器输入端,产生16个译码信号用作16个芯片组的片选信号。剩余的地址线用来确定该存储体的首地址。13试说明FLASHMEMORY芯片的特点及28F040的编程过程。FLASHMEMORY也称为“闪速存储器”,有时直接称之为“FLASH”。FLASH既有ROM非易失性的特点,又能够在线擦除和重写,既可读又可写,同时有很高的存取速度,具有集成度高,价格低,耗电少等优点。目前存取速度已突破了30NS,掉电后信息可以保持10年。FLASH的编程方法与E2PROM相同,28F040的编程写入过程采用字节编程方式。首先,向28F040状态寄存器写入命令10H,再在指定的地址单元写入相应数据。接着查询状态,判断这个字节是否写好,若写好则重复上面过程写入下一个字节,直到全部字节写入。28F040的编程速度很快,一个字节的写入时间仅为86S。14利用全地址译码将6264芯片接到8088系统总线上,地址范围为30000H31FFFH,画出逻辑图。全地址译码可以保证存储器芯片上的每一个单元在整个内存空间中具有唯一的、独占的一个地址。参考教材相关内容,6264芯片有13根地址线,剩余的高位7根地址线通过译码组合确定该芯片的起始地址(30000H)。由30000H地址得出对应的地址线状态为00110000000000000000可以看出A13A19地址线为0011000,所以译码组合应逻辑为1CS13A41A15AA16A1718A19A(13A41A15A18A19A)(A16A17)A13A14A15A18A19A16A17具体逻辑如右图所示。15若用2164芯片构成容量为128KB的存储器,需多少片2164至少需多少根地址线其中多少根用于片内寻址多少根用于片选译码2164A是容量为64K1位的动态随机存储器芯片,构成128KB的存储器需要2164A芯全地址译码连接图片16片128K8/(64K1)16。由于地址空间为128K,需要的地址线总数为17根(217128K)。其中,片内地址线16根(21664K),片选地址线1根(17161,)。每8个2164芯片构成一组,进行位扩展,得到64KB存储器。两个这样的“组”进行地址扩展,构成128KB的存储器。16某8088系统用2764ROM芯片和6264SRAM芯片构成16KB的内存。其中,RAM的地址范围为FC000HFDFFFH,ROM的地址范围为FE000HFFFFFH。试利用74LS138译码,画出存储器与CPU的连接图,并标出总线信号名称。2764和6264均为8KB的存储芯片,需要13根地址线(A0A12)用于片内寻址。8088系统的其他地址线(A13A19)用于产生片选信号。FC000H的地址线状态为11111100000000000000FE000H的地址线状态为11111110000000000000将A13A15用作译码输入,其他地址(A16A191111)用作译码控制,可以得到如下译码控制电路,连接如下图所示。17存储周期指的是(A)。A存储器进行连续读或写操作所允许的最短时间间隔B存储器的读出周期C存储器进行连续写操作所允许的最短时间间隔D存储器的写入周期存储周期是指连续两次访问存储器之间所需的最小时间。存取时间是CPU访问一次存储器(写入和读出)所需的时间。存储周期等于存取时间加上存储器的恢复时间。所以应选择A。18某一EPROM芯片,其容量为32K8,除电源和地线外,最小的输入引脚和输出引脚分别为(C)。A15和8B32和8C17和8D18和10容量为32K8的EPROM芯片,其数据线为8根,地址线为15根,片选线1根,读写控制线1根。其中地址线、片选线、读写控制线均为EPROM的输入信号,共17根。数据线在正常工作状态下用于EPROM输出,计8根。所以应选择C。19掩膜ROM在制造时通过光刻是否连接MOS管来确定0和1,如果对应的某存储单元位没有连接MOS管,则该位信息为(C)。A不确定B0C1D可能为0,也可能为1掩膜ROM芯片内每一个二进制位对应于一个MOS管,该位上存储的信息取决于这个MOS管的栅极是否被连接到字线上。栅极被连接,该单元被选中时,漏极与“地”相通,输出低电平,该位存储的信息就是0。栅极未连接时,尽管字线被选中,输出端与“地”仍然不能导通,输出高电平,对应的信息为1。所以应选择C。20SRAM和DRAM存储原理不同,它们分别靠(A)来存储0和1的。A双稳态触发器的两个稳态和极间是否有足够的电荷B内部熔丝是否断开和双稳态触发器C极间电荷和浮置栅是否积累足够的电荷D极间是否有足够的电荷和双稳态触发器的两个稳态静态随机存储器(SRAM)的每一个位存储单元有一个双稳态触发器,由4个晶体管组成,它们的状态确定了该存储单元存储的1位二进制信息。而动态随机存储器(DRAM)一般采用单管电路组成,它由一个MOS管T1和一个电容C构成。写入时其信息通过位线(数据线)存人电容C中(写入“1”对电容充电,写入“0”则对电容放电);读出时存储在电容C上的电荷通过T1输出到位线上。所以应选择A。习题三1如果用24B储存一个无符号数,这个数的范围是什么如果储存的是一个补码表示的有符号数,那么这个数的范围又是什么答如果用24B储存一个无符号数,这个数的范围应为02241如果用24B储存一个补码表示的有符号数,这个数的范围应为22322312用符号把下面的数按从大到小的顺序连接起来X1补10110111X2原10110111X3反10110111X4补10110110X5无符号数10110111解X101001001B,X20110111B,X301001000B,X401001010B,X510110111B因此X5X2X3X1X43用8位补码完成下列运算,用二进制真值的格式给出运算结果,并指出运算后CF、OF、ZF、SF、PF标志位的状态。(1)127126(2)126127(3)100120(4)100120解(1)127126127补01111111,126补01111110,127126补11111101,12712600000011(溢出)COZSP01010(2)126127126补01111110,127补10000001,126127补11111111,1261270000001COZSP10011(3)100120100补10011100,120补10001000,100120补00100100,10012000100100(溢出)COZSP01001(4)100120100补10011100,120补10001000,120补求补01111000,100(120)补00010100,100(120)00010100COZSP000014把二进制代码1001011101011000分别看作是1EH30H41H42H43H0FFH00H0CAH0FFH00H0FEH0FFH44H43H0020H002EHXY(1)二进制无符号数(2)二进制补码(3)压缩BCD码(4)非压缩BCD码哪一种情况下它代表的值最大答看作二进制无符号数时,它代表的“值”最大。分析看作二进制补码时,它代表一个负数,而其它的情况下,它均为正数。因此,看作二进制补码时,它代表的值最小。把这组代码用十六进制数字形式写出9758对于无符号数,它的值等于十六进制的9758H;对于压缩BCD码,它的值等于十进制的9758,显然小于9758H;对于非压缩BCD码,它的值等于十进制的78,显然更小于9758H;因此,看作二进制无符号数时,它代表的“值”最大。5某数据段内有如下数据定义XDB30,30H,ABC,23,11001010BDW0FFH,2,CDYDD20DUP(15,3DUP(),0)ZDB3DUP()WDWZX假设变量X的偏移地址为20H。(1)写出变量X各数据在内存中的具体位置和相关内存单元的值。(2)写出变量Y,Z的偏移地址。(3)写出变量W的值答(1)变量X各数据在内存中的具体位置和相关内存单元的值如右图。变量Y的偏移地址为002EH;变量Z的偏移地址为002EH452001BEH变量W的值等于变量Z和X偏移地址之差01BEH0020H019EH它等于变量X、Y所占用内存单元的字节数。6下列指令的源操作数段基址在哪个段寄存器中(1)MOVAX,BPSI(2)MOVAX,CS8DI(3)MOVAX,2EBP1(4)MOVAX,FS4ESP(5)MOVAX,2EBPEAX(6)MOVAX,ECXEBP4(7)MOCAX,EDXEBP(8)MOVAX,ES10EBPEAX2答各指令源操作数段基址使用的段寄存器如下(1)SS(2)CS(3)SS(4)FS(5)SS(6)DS(7)DS(8)ES7判断下列指令是否正确。若不正确,指出错误原因(1)MOVAX,EBX(2)MOVSI,DL(3)MOVEBP,ESPEAX3(4)LEAAX,3006H(5)MOVBPDI,0(6)MOVSI,DI(7)MOVES,1000H(8)MOVAX,X2(9)MOVAX,CX2(10)MOVEAXEAX2,AL答(1)指令MOVAX,EBX是正确的。(2)指令MOVSI,DL是错误的,两个操作数类型不匹配。(3)指令MOVEBP,ESPEAX3是错误的,比例因子不能为3。(4)指令LEAAX,3006H是错误的,LEA指令的源操作数必须为内存操作数。(5)指令MOVBPDI,0是错误的,操作数类型无法确定。(6)指令MOVSI,DI是错误的,不能同时出现两个内存操作数。(7)指令MOVES,1000H是错误的,装载段寄存器时,源操作数不能为立即数。(8)如果“X”是用常数表达式定义的符号(例如XEQU56),或者是用“DW”定义的内存变量,指令MOVAX,X2是正确的。否则这条指令是错误的。(9)指令MOVAX,CX2是错误的,源操作数表达式CX2不是一个可以直接计算的“常数表达式”。(10)指令MOVEAXEAX2,AL是正确的。8现有(DS)2000H,(BX)0100H,(SI)0002H,(20100H)12H,(20101H)34H,(20102H)56H,(20103H)78H,(21200H)2AH,(21201H)4CH,(21202H)0B7H,(21203H)65H,说明下列指令执行后AX寄存器的内容。(1)MOVAX,1200H(2)MOVAX,BX(3)MOVAX,1200H(4)MOVAX,BX(5)MOVAX,1100HBX(6)MOVAX,BXSI(7)MOVAX,1100HBXSI答(1)指令MOVAX,1200H执行后,AX1200H立即数操作数。(2)指令MOVAX,BX执行后,AX0100H寄存器操作数。(3)指令MOVAX,1200H执行后,AX4C2AH(直接地址,EA1200H)(4)指令MOVAX,BX执行后,AX3412H(寄存器间接寻址,EA0100H)(5)指令MOVAX,1100HBX执行后,AX4C2AH(相对地址,EA1200H)(6)指令MOVAX,BXSI执行后,AX7856H(基址变址寻址,EA0102H)(7)指令MOVAX,1100HBXSI执行后,AX65B7H(相对基址变址寻址,EA1202H)9下面两条指令的功能有什么区别MOVAX,BXMOVAX,BX答指令“MOVAX,BX”把BX寄存器的内容装入到AX中。指令“MOVAX,BX”把内存储器一个字的内容装入AX寄存器。该字的段基址在DS中,偏移地址在BX中。10写出执行以下计算的指令序列,其中各变量均为16位有符号数。(1)ZWZX(2)ZWX6R9(3)ZWX/Y6,R余数(4)ZWX/5Y2解(1)MOVAX,WMOVBX,ZSUBBX,XADDAX,BXMOVZ,AX(2)MOVAX,WMOVBX,XADDBX,6SUBAX,BXMOVBX,RADDBX,9SUBAX,BXMOVZ,AX(3)MOVAX,WIMULXMOVBX,YADDBX,9IDIVBXMOVZ,AXMOVR,DX(4)MOVAX,YMOVBX,5IMULBXMOVBX,AXMOVAX,WSUBAX,XMOVCX,2IMULCXIDIVBXMOVZ,AX11一个双字长有符号数存放在DX(高位)AX(低位)中,写出求该数相反数的指令序列。结果仍存入DX,AX寄存器解NOTDX;首先将(DX,AX)取反NOTAXADDAX,1;最低位加1,注意不能用INC指令ADCDX,0;把进位(如果有)传递到高位12内存缓冲区BUFFER定义如下,按照要求,写出指令序列BUFFERDB20DUP(1)将缓冲区全部置为0,并使执行时间最短(2)将缓冲区全部置为空格字符(ASCII代码20H),使用的指令条数最少(3)将缓冲区各字节依次设置为0,1,2,3,4,19(4)将缓冲区各字节依次设置为0,1,2,3,4,19(5)将缓冲区各字节依次设置为30,29,28,27,11(6)将缓冲区各字节依次设置为0,2,4,6,8,38(7)将缓冲区各字节依次设置为0,1,2,3,0,1,2,3,3解(1)XOREAX,EAXMOVDWORDPTRBUFFER,EAXMOVDWORDPTRBUFFER4,EAXMOVDWORDPTRBUFFER8,EAXMOVDWORDPTRBUFFER12,EAXMOVDWORDPTRBUFFER16,EAX(2)MOVAL,20HMOVCX,20LEABX,BUFFERONEMOVBX,ALINCBXLOOPONE(3)XORBX,BXMOVCX,20ONEMOVBUFFERBX,BLINCBXLOOPONE(4)XORBX,BXXORAL,ALMOVCX,20ONEMOVBUFFERBX,ALINCBXDECALLOOPONE(5)XORBX,BXMOVAL,30MOVCX,20ONEMOVBUFFERBX,ALINCBXDECALLOOPONE(6)XORBX,BXXORAL,ALMOVCX,20ONEMOVBUFFERBX,ALINCBXADDAL,2LOOPONE(7)XORBX,BXMOVCX,5ONEMOVBUFFERBX,0MOVBUFFERBX1,1MOVBUFFERBX2,2MOVBUFFERBX3,3ADDBX,4LOOPONE13编写循环结构程序,进行下列计算,结果存入RESULT内存单元(1)123456100(2)135791199(3)246810100(4)1471013100(5)1122334499解(1)CODESEGMENTASSUMECSCODERESULTDWSTARTXORAX,AXMOVCX,100AGAINADDAX,CXLOOPAGAINMOVRESULT,AXMOVAX,4C00HINT21HCODEENDSENDSTART(2)CODESEGMENTASSUMECSCODERESULTDWSTARTXORAX,AXMOVCX,50MOVBX,1AGAINADDAX,BXADDBX,2LOOPAGAINMOVRESULT,AXMOVAX,4C00HINT21HCODEENDSENDSTART(3)CODESEGMENTASSUMECSCODERESULTDWSTARTXORAX,AXMOVCX,50MOVBX,2AGAINADDAX,BXADDBX,2LOOPAGAINMOVRESULT,AXMOVAX,4C00HINT21HCODEENDSENDSTART(4)CODESEGMENTASSUMECSCODERESULTDWSTARTXORAX,AXMOVCX,34MOVBX,1AGAINADDAX,BXADDBX,3LOOPAGAINMOVRESULT,AXMOVAX,4C00HINT21HCODEENDSENDSTART(5)CODESEGMENTASSUMECSCODERESULTDWSTARTXORAX,AXMOVCX,9MOVBX,11AGAINADDAX,BXADDBX,11LOOPAGAINMOVRESULT,AXMOVAX,4C00HINT21HCODEENDSENDSTART14已知ARRAY是5行5列的有符号字数组,编写程序,进行下列计算(假设和仍然为16B,不会产生溢出)(1)求该数组第4列所有元素之和(列号从0开始)(2)求该数组第3行所有元素之和(行号从0开始)(3)求该数组正对角线上所有元素之和(4)求该数组反对角线上所有元素之和解假设数据段已定义如下DATASEGMENTARRAYDW1,6,9,23,12;定义数组ARRAYDW54,23,15,92,37;每一行5个数据DW99,231,76,81,90;共5行DW33,67,81,99,0;共计25个数据DW123,52,77,180,89SUMDW;SUM存放结果DATAENDS(1)CODESEGMENTASSUMECSCODE,DSDATASTARTMOVAX,DATAMOVDS,AXMOVAX,0;累加器在循环之前清零MOVCX,5;计数器置初值MOVSI,42;第1行第4列元素在数组内的位移NEXTADDAX,ARRAYSIADDSI,52;SI指向下一行第4列元素LOOPNEXTMOVSUM,AXMOVAX,4C00HINT21HCODEENDSENDSTART(2)CODESEGMENTASSUMECSCODE,DSDATASTARTMOVAX,DATAMOVDS,AXMOVAX,0;累加器在循环之前清零MOVCX,5;计数器置初值MOVSI,352;第3行第0列元素在数组内的位移NEXTADDAX,ARRAYSIADDSI,2;SI指向本行下一列元素LOOPNEXTMOVSUM,AXMOVAX,4C00HINT21HCODEENDSENDSTART(3)CODESEGMENTASSUMECSCODE,DSDATASTARTMOVAX,DATAMOVDS,AXMOVAX,0;累加器在循环之前清零MOVCX,5;计数器置初值MOVSI,0;第0行第0列元素在数组内的位移NEXTADDAX,ARRAYSIADDSI,522;SI指向正对角线上下一个元素LOOPNEXTMOVSUM,AXMOVAX,4C00HINT21HCODEENDSENDSTART(4)CODESEGMENTASSUMECSCODE,DSDATASTARTMOVAX,DATAMOVDS,AXMOVAX,0;累加器在循环之前清零MOVCX,5;计数器置初值MOVSI,42;第0行第4列元素在数组内的位移NEXTADDAX,ARRAYSIADDSI,512;SI指向反对角线上下一个元素LOOPNEXTMOVSUM,AXMOVAX,4C00HINT21HCODEENDSENDSTART15变量X,Y,Z均为一字节压缩BCD码表示的十进制数,写出指令序列,求它们的和(用2字节压缩BCD码表示)。解XORAX,AX;清AX,用于存放2字节结果MOVAL,XADDAL,Y;完成XYDAA;压缩BCD码加法调整ADCAH,0;把可能的进位收集到AH中;AH中最大的可能值为2,因此不需要BCD加法调整ADDAL,Z;完成XYZDAA;压缩BCD码加法调整ADCAH,0;把可能的进位收集到AH中;计算完成,结果(2字节压缩BCD码)在AX中16设(BX)0E3H,变量VALUE中存放内容为79H,指出下列指令单独执行后的结果。(1)XORBX,VALUE(2)ANDBX,VALUE(3)ORBX,VALUE(4)XORBX,0FFH(5)ANDBX,BX(6)ANDBX,0答(1)指令“XORBX,VALUE”执行后,(BX)009AH(2)指令“ANDBX,VALUE”执行后,(BX)0061H(3)指令“ORBX,VALUE”执行后,(BX)00FBH(4)指令“XORBX,0FFH”执行后,(BX)001CH(5)指令“ANDBX,BX”执行后,(BX)00E3H(6)指令“ANDBX,0”执行后,(BX)0000H17编写程序,从键盘上输入20个十进制数字,求这些数字的和,向显示器输出。INCLUDEYLIBHDATASEGEMNTMESS1DB0DH,0AH,INPUT20DECIMALDIGITSPLEASEMESS2DB0DH,0AH,THEIRSUMISDATAENDSCODESEGMENTASSUMECSCODE,DSDATASTARTMOVAX,DATAMOVDS,AXLEADX,MESS1MOVAH,09HINT21H;输出提示信息XORBX,BX;BX用作累加器,清零MOVCX,20;循环计数器置初值AGAINMOVAH,01HINT21H;输入一个数字(在AL中)ANDAL,0FH;转换成二进制数ADDBL,AL;累加ADCBH,0LOOPAGAINLEADX,MESS2MOVAX,BXCALLWRITEDEC;输出20个数字的和CALLCRLFMOVAX,4C00HINT21HCODEENDSENDSTART18阅读以下程序,指出它的功能。MOVCL,04SHLDX,CLMOVBL,AHSHLAX,CLSHRBL,CLORDL,BL答把32位二进制代码(DX,AX)联合左移4位。19已知(DX)0B9H,(CL)3,(CF)1,确定下列指令单独执行以后DX寄存器的值。(1)SHRDX,1(2)SARDX,CL(3)RORDX,CL(4)ROLDX,CL(5)SALDH,1(6)RCLDX,CL答(1)指令“SHRDX,1”执行之后,(DX)005CH(2)指令“SARDX,CL”执行之后,(DX)0017H(3)指令“RORDX,CL”执行之后,(DX)2017H(4)指令“ROLDX,CL”执行之后,(DX)05C8H(5)指令“SALDH,1”执行之后,(DX)00B9H(6)指令“RCLDX,CL”执行之后,(DX)05CCH20写程序,从键盘上输入一个065535之间的十进制无符号数,然后用二进制格式输出这个值。例如,键盘输入35,显示器输出0000000000100011。答INCLUDEYLIBHDATASEGEMNTMESS1DB0DH,0AH,INPUTAUNSIGNEDDECIMALINTEGERNUMBERPLEASEMESS2DB0DH,0AH,THENUMBERINBINARYISDATAENDSCODESEGMENTASSUMECSCODE,DSDATASTARTMOVAX,DATAMOVDS,AXLEADX,MESS1CALLREADDEC;输入一个无符号整数MOVBX,AX;转存入BXLEADX,MESS2MOVAH,09HINT21H;输出提示信息MOVCX,16;循环计数器置初值AGAINSHLBX,1;向左外移一位,进入CFMOVDL,30HADCDL,0;形成一位二进制数字的ASCII代码MOVAH,2INT21H;输出一个二进制数字LOOPAGAIN;循环16次CALLCRLFMOVAX,4C00HINT21HCODEENDSENDSTART21无符号数变量X用DD定义,编写程序,用十六进制格式输出变量X的值。答DATASEGEMNTXDD36895471;一个32B长整数MESSDB0DH,0AH,THEXINHEXDECIMALISHEXTABDB0123456789ABCDEFDATAENDSCODESEGMENTUSE16ASSUMECSCODE,DSDATASTARTMOVAX,DATAMOVDS,AXLEADX,MESSMOVAH,09HINT21H;输出前导信息MOVSI,WORDPTRX2;将X高16位存入SIMOVCX,4;循环计数器置初值LEABX,HEXTAB;换码表首地址装入BXAGAIN1ROLSI,4;把最高4位移到最低4位上MOVAX,SI;低8位转入ALANDAX,000FH;清除高4位XLAT;转换成十六进制数字的ASCII代码MOVDL,ALMOVAH,2INT21H;输出一个十六进制数字LOOPAGAIN1;循环8次MOVSI,WORDPTRX;将X低16位存入SIMOVCX,4;循环计数器置初值AGAIN2ROLSI,4;把最高4位移到最低4位上MOVAX,SI;低8位转入ALANDAX,000FH;清除高4位XLAT;转换成十六进制数字的ASCII代码MOVDL,ALMOVAH,2INT21H;输出一个十六进制数字LOOPAGAIN2;循环8次MOVAX,4C00HINT21HCODEENDSENDSTART22编写指令序列,把AX中的16B二进制分为4组,每组4B,分别置入AL,BL,CL,DL中。答MOVDX,AX;最低4位直接进入DXMOVCX,4ROLAX,CL;最高4位移入最低4位PUSHAX;压入堆栈保存(准备送入AL)ROLAX,CL;次高4位移入最低4位MOVBX,AX;送入BLROLAX,CL;第3组4位移入最低4位MOVCX,AX;送入CLPOPAX;从堆栈中弹出原最高4位ANDAX,000FH;清除高12位ANDBX,000FH;清除高12位ANDCX,000FH;清除高12位ANDDX,000FH;清除高12位习题四1什么是三种基本结构解释基本两个字在其中的含义。答三种基本结构指顺序结构,选择结构、循环结构。使用这3种结构,可以编制出任何所需要的程序,因此冠以“基本”结构。2什么叫做控制转移指令它和数据传送、运算指令有什么区别它是怎样实现它的功能的答控制转移指令是可以改变指令执行顺序的指令。数据传送、运算指令总是顺序执行的,而控制转移指令通过改变IP和/或CS寄存器的值,改变了程序指令的执行顺序。3指令JMPDI和JMPWORDPTRDI作用有什么不同请说明。答上述两条指令都是段内近转移指令,但是偏移地址的来源不同。指令“JMPDI”执行时,新的偏移地址在DI寄存器内,“JMPWORDPTRDI”时,目的偏移地址在存储单元中,该存储单元的地址在DSDI中。4已知(AX)836BH,X分别取下列值,执行CMPAX,X后,标志位ZF、CF、OF、SF各是什么(1)X3000H(2)X8000H(3)X7FFFFH(4)X0FFFFH(5)X0答上述指令执行后,标志位ZF、CF、OF、SF的状态分别是(1)ZCOS0010(2)ZCOS0000(3)ZCOS0010(4)ZCOS0101(5)ZCOS00015已知(AX)836BH,X分别取下列值,执行TESTAX,X后,标志位ZF、CF、OF、SF各是什么(1)X0001H(2)X8000H(3)X0007H(4)X0FFFFH(5)X0答上述指令执行后,标志位ZF、CF、OF、SF的状态分别是(1)ZCOS0000(2)ZCOS0001(3)ZCOS0000(4)ZCOS0001(5)ZCOS10006测试名为X的一个字节,如果X的第1,3位均为1,转移到L1,如果只有一位为1,转移到L2,如果两位全为0,转移到L3。写出对应的指令序列。答MOVAL,XANDAL,00001010BJZL3CMPAL,00001010BJEL1JMPL27假设X和X2字单元存放有双精度数P,Y和Y2字单元存放有双精度数Q,下面程序完成了什么工作MOVDX,X2MOVAX,X;双精度数P送入DX,AXADDAX,XADCDX,X2;计算2P送入DX,AXCMPDX,Y2;2P与Q的高位比较JLL2;2PQ,转

温馨提示

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

评论

0/150

提交评论