收藏 分销(赏)

现代微型计算机原理与接口技术教程习题解答.pdf

上传人:曲**** 文档编号:4758100 上传时间:2024-10-12 格式:PDF 页数:103 大小:2.92MB
下载 相关 举报
现代微型计算机原理与接口技术教程习题解答.pdf_第1页
第1页 / 共103页
现代微型计算机原理与接口技术教程习题解答.pdf_第2页
第2页 / 共103页
现代微型计算机原理与接口技术教程习题解答.pdf_第3页
第3页 / 共103页
现代微型计算机原理与接口技术教程习题解答.pdf_第4页
第4页 / 共103页
现代微型计算机原理与接口技术教程习题解答.pdf_第5页
第5页 / 共103页
点击查看更多>>
资源描述

1、现代微型计算机原理 与接口技术教寂(习题解答)习题1.8086CPU由哪几个部件构成?它们的主要功能各是什么?8086 CPU由指令执行部件EU和总线接口部件BIU两个部份组成。指令执行部件主要 功能是执行指令。总线接口部件的主要功能是完成访问存储器或VO端口的操作:形成访问存储器的物理地址;访问存储器取得指令并暂存到指令队列中等待执行;访问存储器或VO端口以读取操作数参与EU运算,或存放运算结果。2.什么是逻辑地址?什么是物理地址?它们各自如何表示?如何转换?程序中使用的存储器地址称为逻辑地址,由16位“段基址”和16位“偏移地址”(段内 地址)组成。段基址表示一个段的起始地址的高16位。偏

2、移地址表示段内的一个单元距离段 开始位置的距离。访问存储器的实际地址称为物理地址,用20位二进制表示。将两个16位 二进制表示的逻辑地址错位相加,可以得到20位的物理地址:物理地址=段基址X16+偏移地址在32位CPU的保护模式下,“逻辑地址”的表示产生了一些变化,请参考第8章的相关 内容。3.什么是“堆栈”?它有什么用处?在使用上有什么特点?堆栈是内存中的一块存储区,用来存放专用数据。例如,调用子程序时的入口参数、返 回地址等,这些数据都按照“先进后出”的规则进行存取。SS存放堆栈段的段基址,SP存 放当前堆栈栈顶的偏移地址。数据进出堆栈要使用专门的堆栈操作指令,SP的值在执行堆栈 操作指令

3、时根据规则自动地进行修改。4.设X=36H,Y=78H,进行X+Y和XY运算后FLAGS寄存器各状态标志位各是什么?X=36H=00110110BY=78H=01111000B(+10101110BCF=0,SF=1,OF=1,PF=0,ZF=0,X=36H=00110110BY=78H=01111000B(一10111110BCF=1,SF=1,OF=0,PF=1,ZF=0,5.按照传输方向和电气特性划分,CPU引脚信号有几种类型?各适用于什么场合?CPU引脚传输的信号按照传输方向划分,有以下几种类型:输出:信号从CPU向外部传送;输入:信号从外部送入CPU;双向:信号有时从外部送入CPU,

4、有时从CPU向外部传送。双向信号主要用于数据信号的传输;输出信号用于传输地址信号和一些控制 信号;输入信号主要用于传输外部的状态信号(例如READY 和请求(中断、DMA 信号。按照信号的电器特性划分,有以下几种类型:一般信号:用来传输数据/地址信号时,高电平表示“1”,低电平表示“0”;用来 表示正逻辑的控制/状态信号时,“1”表示有效,“0”表示信号无效;用来表示负逻辑的控制/状态信号时,“0”表示有效,“1”表示信号无 效。三态信号:除了高电平、低电平两种状态之外,CPU内部还可以通过一个大的电 阻阻断内外信号的传送,CPU内部的状态与外部相互隔离,也称为“悬 浮态”。CPU放弃总线控制

5、权,允许其他设备使用总线时,将相关信 号置为“悬浮态”。6.8086CPU以最小模式工作,现需要读取内存中首地址为20031H的一个字,如何执行总线读周期?请具体分析。为了读取内存中首地址为20031H的一个字,需要执行二个总线读周期。第一个总线周期读取20031H字节内容,进行的操作如下。状态:M/IO=1,指出CPU是从内存读取数据。随后CPU从地址/状态复用线 A1/S6A16S)和地址/数据复用线 AD15AD。)上发出读取存储器的20位地址20031H。为了锁存地址,CPU在Ti状态从ALE引脚输出一个正脉冲作为地址锁存信号。由于需要读取高8位数据线上的数据(奇地址),BHE=0o为

6、了控制总线收发器8286接受数据,DT/R=0。_T2状态:地址信息撤消,地址/数据线AD15AD。进入高阻态,读信号正 开始变为低 电平(有效),DEN=0,用来开放总线收发器8286。T3状态:CPU检测READY弓|脚信号。若READY为高电平(有效)时,表示存储器或I/O 端口已经准备好数据,CPU在T3状态结束时读取该数据。若READY为低电平,则表示系统中 挂接的存储器或外设不能如期送出数据,要求CPU在T3和T4状态之间插入1个或几个等待状 态Tw。Tw状态:进入Tw状态后,CPU在每个Tw状态的前沿(下降沿)采样READY信号,若为 低电平,则继续插入等待状态Tw。若READY

7、信号变为高电平,表示数据已出现在数据总线 上,CPU从AD-AD。读取数据。T4状态:在T3 Tw 和T4状态交界的下降沿处,CPU对数据总线上的数据进行采样,完 成读取数据的操作。第二个总线周期读取地址为20032H字节的内容。CPU发出的信号与第一个周期类似,区 别在于状态CPU发出存储器地址为20032H,由于只需要读取低8位数据线上的数据(偶地 址),BHE=lo在CPU内部,从20031H读入的低位字节和从20032H读入的高位字节被拼装成一个字。7.8086CPU有几种工作方式?各有什么特点?8086/8088 CPU有两种工作模式:最大工作模式和最小工作模式。所谓最小工作模式,是

8、指系统中只有一个8086/8088处理器,所有的总线控制信号都由 8086/8088 CPU直接产生,构成系统所需的总线控制逻辑部件最少,最小工作模式因此得名。最小模式也称单处理器模式。最大模式下,系统内可以有一个以上的处理器,除了 8086/8088作为“中央处理器”之 外,还可以配置用于数值计算的8087“数值协处理器、用于I/O管理的“DO协处理器”8089。各个处理器发往总线的命令统一送往“总线控制器”,由它“仲裁”后发出。CPU两种工作模式由MN/而又引脚决定,MN/而又接高电平,CPU工作在最小模式;将MN/加 接地,CPU工作在最大模式。8.分析8086CPU两个中断输入引脚的区

9、别,以及各自的使用场合。INTR用于输入可屏蔽中断请求信号,电平触发,高电平有效。中断允许标志正=1时才 能响应INTR上的中断请求。NMI用于输入不可屏蔽中断请求信号,上升沿触发,不受中断允许标志的限制。CPU 一 旦测试到NMI请求有效,当前指令执行完后自动转去执行类型2的中断服务程序。NMI引脚用于连接CPU外部的紧急中断请求,例如内存校验错,电源掉电报警等。INTR 引脚用于连接一般外部设备的中断请求。9.什么是时钟周期、总线周期、指令周期?它们的时间长短取决于哪些因素?时钟周期:CPU连接的系统主时钟CLK一个周期的时间。CLK信号频率越高,时钟周 期越短。总线周期:CPU通过外部总

10、线对存储器或VO端口进行一次读/写操作的过程称为总线 周期。8086CPU总线周期一般由四个时钟周期组成,存储器/IO设备(接口)速度不能满足 CPU要求时,可以增加一个或多个时钟周期。指令周期:CPU执行一条指令的时间(包括取指令和执行该指令所需的全部时间)称 为指令周期。指令周期的时间主要取决于主时钟的频率和指令的复杂程度,它也受到存储器 或IO设备接口工作速度的影响。10.在一次最小模式总线读周期中,8086CPU先后发出了哪些信号?各有什么用处?状态:M/记指出CPU是从内存(1 还是从IO端口(0 读取数据。随后CPU从地 址/状态复用线(AIS6A/S3)和地址/数据复用线(AD1

11、5AD。)上发出读取存储器的20 位地址,对IO端口访问时从AD15AD。上发出16位地址。为了锁存地址,CPU在状态从ALE引脚输出一个正脉冲作为地址锁存信号。如果需要读取高8位数据线上的数据(奇地址/读取一个字),BHE=0o为了控制总线收发器8286数据传输方向,DT/R二0。T2状态:读信号正开始变为低电平(有效),DEN=0,用来开放总线收发器8286。T3状态:CPU检测READY引脚信号。若READY为高电平(有效),表示存储器或DO端 口已经准备好数据,进入T4状态;若READY为低电平(无效),表示存储器或DO端口尚未准 备好数据,插入一个或多个Tw状态,直到READY变为高

12、电平。T4状态:在T3(TW)和T4状态交界的下降沿处,CPU对数据总线上的数据进行采样,完 成读取数据的操作。11.结合指令“OUT21H,AL”,具体叙述最大模式“总线写周期”总线上的相关信号。状态:地址/数据复用线(AD15AD。)上出现访问IO端口的16位地址21H。由于地 址为奇数,需要通过高8位数据线访问端口,BHE=0oT2状态:痂=0,表示本周期对IO端口进行写操作。地址/数据复用线(AD15AD。)上出现来自AL的8位数据。T3状态:若READY为高电平(有效),表示I/O端口已经准备好接收数据。反之,表示DO 端口尚未准备好接收数据,需要CPU插入Tw周期进行等待,直到RE

13、ADY出现高电平(有效)。T4状态:CPU结束本周期。习题二1.内存储器主要分为哪两类?它们的主要区别是什么?内存储器分为随机存取存储器RAM(Radom Access Memory)和只读存储器ROM(Read Only Memory)两类。RAM中信息可以按地址读出,也可以按地址写入。RAM具有易失性,掉电后原来存储 的信息全部丢失,不能恢复。ROM中的信息可以按地址读出,但是在普通状态下不能写入,它的内容一般不能被改 变。ROM具有“非易失性”,电源关闭后,其中的信息仍然保持。2.说明SRAM、DRAM、MROM、PROM和EPROM的特点和用途。SRAM:静态RAM,读写速度快,但是集

14、成度低,容量小,主要用作Cache或小系统的 内存储器。DRAM:动态RAM,读写速度慢于静态RAM,但是它的集成度高,单片容量大,现代 微型计算机的“主存”均由DRAM构成。MROM:掩膜ROM,由芯片制作商在生产、制作时写入其中数据,成本低,适合于批 量较大、程序和数据已经成熟、不需要修改的场合。PROM:可编程ROM,允许用户自行写入芯片内容。芯片出厂时,所有位均处于全“0”或全“1”状态,数据写入后不能恢复。因此,PROM只能写入一次。EPROM:可擦除可编程只读存储器,可根据用户的需求,多次写入和擦除,重复使用。用于系统开发,需要反复修改的场合。3.已知一个SRAM芯片的容量为8KX

15、 8b,该芯片有一个片选信号引脚和一个读/写控制 弓I脚,问该芯片至少有多少个引脚?地址线多少条?数据线多少条?根据存储芯片地址线数量计算公式,k=log2(1024*8)=log2(213)=13,即总计有13 根地址线。另有8根数据线、2根电源线。所以该芯片至少有25(=13+8+1+1+2)根引脚。4.巳知一个DRAM芯片外部引脚信号中有4根数据线,7根地址线,计算它的容量。根据存储容量计算公式S=2kXL可得该芯片的存储容量为:214*4=16KX4bit(位),也 可表示为64Kb=8KB(字节)。5 *5.32MX 8b的DRAM芯片,其外部数据线和地址线为多少条?根据存储芯片地址

16、线数量计算公式,k=log2(1024*1024*32)=log2(225)=25,即需要25根地址线。但是,由于DRAM芯片的地址采用分时输入的方法,所以实际需要的地址线只有理论值的一半,此处为13根。数据线8根。6.DRAM为什么需要定时刷新?DRAM靠MOS管极间电容存储电荷的有无决定所存信息是0还是1,由于漏电流的存 在,它存储的信息不能长时间保存,需要定时重新写入,称为“刷新”。7.74LS138译码器的接线如图2.28所示,写出为、石、.、丫6所决定的内存地址范围。从图看出,该存储系统的片内地址线有13根(A12-A0,是一个由8KB存储芯片组成的存储系统,A17地址线不确定。它的

17、地址分布为:00?0,CBA?,?,?,?其中,CBA作为译码输入,与输出选择有关;表示可以为“0”,也可以为“1”。于是:Z对应的内存地址范围是:00000H01FFFH;或 20000H21FFFH。74S138ABC-EIE2E3 Y0Y1Y2Y3Y4Y5Y6Y7-4A-4Au_1-AisJ-MEMW1-MEMR十图2-28译码%对应的内存地址范围是:04000H05FFFH;或 24000H25FFFH。为对应的内存地址范围是:08000H09FFFH;或 28000H29FFFH。稣对应的内存地址范围是:0C000HODFFFH;或 2C000H2DFFFH。8.叙述EPROM的编程

18、过程,并说明EPROM和EEPROM的不同点。EPROM的编程过程标准编程方式:vpp上加编程电压,地址线、数据线上给出要编程单元的地址及其数据,并使E=o、质=1。上述信号稳定后,在南 端加上宽度为50土5ms的负脉冲,就可将一个字节的数 据写入相应的地址单元中。不断重复这个过程,将数据逐一写入。快速编程方式:使用100联的编程脉冲依次写完所有要编程的单元,然后从头开始校验每个写入的字节。若写得不正确,则重写这个单元。写完后再校验,不正确还可再写,直到全部正确。EPROM和EEPROM的不同点:EPROM芯片用紫外线光照射擦除芯片的内容,擦除时需要把芯片从电路板上拔下,擦 除操作对整个芯片进

19、行。EPROM芯片编程需要外加“高电压”,所以需要专用的“编程器”才能实现。EPROM的编程一般情况下对整个芯片进行。EEPROM芯片的擦除用电信号实现,无需把芯片从电路板上拔下,可以进行“在系统编 程”。EEPROM以字节为单位重写,EEPROM没有单独的擦除操作,写入就意味着擦除了原 来的内容,所以使用比EPROM快速方便。相比较而言,EEPROM芯片的编程比较接近RAM 的写入,它们之间的区别主要体现在速度上:RAM写入与读出的速度相近,不需要其他的 联络信号;EEPROM的写入比起读出明显要慢,为了掌握写入时间,EEPROM通常设置了 一根“状态”弓I脚,供联络使用。9.下列容量的RO

20、M芯片除电源和地线,还有多少个输入引脚和输出引脚?写出信号名 称。(1)64X4(2)512X8(3)128KX8(4)16KX8(5)1MX16根据存储容量计算公式可得以上各芯片的地址、数据引脚分别为:64X4:地址线k=log2(64)=log2(26)=6 根,数据线=4 根;512X8:地址线k=log2(512)=log2(29)=9 根,数据线=8 根;128kX8:地址线k=log2(128*1024)=log2(217)=17 根,数据线=8 根;16kX8:地址线k=log2(16*1024)=log2(214)=14 根,数据线=8 根;1MX16:地址线k=log2(10

21、24*1024)=log2(220)=20 根,数据线=16 根。止匕外,所有ROM芯片都需要一根片选信号引脚;对于PROM,EPROM通常还需要“输出允许”和“编程脉冲”输入引脚。EEPROM芯片除了有“片选”、“输出允许”和“写允许”外,通常还有表示“写入完成”的状态信号引脚。10.已知RAM芯片的容量为(1)16KX8(2)32KX8(3)64KX8(4)2KX8如果RAM的起始地址为3400H、则各RAM对应的末地址为多少?存储器的末地址二首地址+芯片内字节数(容量)一1上述各芯片对应RAM的末地址为:16KX8:末地址是 3400H+4000H1=73FFH32KX 8:末地址是 3

22、400H+8000H1二 B3FFH64KX 8:末地址是 3400H+10000H-l=133FFH2KX8:末地址是 3400H+800H-1=3BFFH11.如果存储器起始地址为1800H,末地址为1FFFH,求该存储器的容量。该存储器的容量为:(1FFFH-1800H+1)X8=800HX8,该存储器有2048X8个位,也可以写作2KB。12.有一个存储体,其地址线15条,数据线8条,则1)该存储体能够存储多少个汉字?2)如果该存储体由2K义4位的芯片组成,需要多少片?3)采用什么方法扩展?分析各位地址线的使用。该存储体容量为215X8=32KB,存储一个汉字需要二个字节,因此,它能够

23、存储16384(16K)个汉字。需要2K义4位的芯片 32 片,(32KX8)/(2KX4)=32。可采用字位全扩展方法,由2片4位的芯片组成1组8位的存储单元,16组扩展成32K 的8位存储体。芯片直接使用的地址线(片内地址)11根(A0-A10),另外需要4根高位地 址,连接到4-16译码器输入端,产生16个译码信号用作16个芯片组的片选信号。剩余的地 址线用来确定该存储体的首地址。13.试说明Hash Memory芯片的特点及28F040的编程过程。Hash Memory也称为“闪速存储器”,有时直接称之为“Flash。Flash既有ROM非易 失性的特点,又能够在线擦除和重写,既可读又

24、可写,同时有很高的存取速度,具有集成度 高,价格低,耗电少等优点。目前存取速度已突破了 30ns,掉电后信息可以保持10年。Flash的编程方法与E2PROM相同,28F040的编程写入过程采用字节编程方式。首先,向 28F040状态寄存器写入命令10H,再在指定的地址单元写入相应数据。接着查询状态,判断 这个字节是否写好,若写好则重复上面过程写入下一个字节,直到全部字节写入。28F040的 编程速度很快,一个字节的写入时间仅为8.6piso14.利用全地址译码将6264芯片接到8088系统总线上,地址范围为30000H-31FFFH,画出逻辑图。全地址译码可以保证存储器芯片上的每一个单元在整

25、个内存空间中具有唯一的、独占的一个地址。参考教材相关内容,6264芯片有13根地址线,组合确定该芯片的起始地址(30000H)o由30000H地址得出对应的地址线状态为:0011000 0 0000 0000 0000可以看出A13A19地址线为0011 000,所以译码组合应逻辑为:CS _ A13.A14.A15.AM A17 Ai8 A9 二(A13 A14 A15.A18 A19)(A16.A17)二 A13+A14+A15+A18+A19+A16 A17剩余的高位7根地址线通过译码8088系统 BUS全地址译码连接图具体逻辑如右图所示。15.若用2164芯片构成容量为128KB的存储

26、器,需多少片2164?至少需多少根地址线?其中多少根用于片内寻址?多少根用于片选译码?2164A是容量为64KX 1位的动态随机存储器芯片,构成128KB的存储器需要2164A芯片 16 片 128KX8/64KX1 =16。由于地址空间为128K,需要的地址线总数为17根 217=128K O其中,片内地址线16 根(216=64K,片选地址线1根(1716=1,。每8个2164芯片构成一组,进行位扩展,得到64KB存储器。两个这样的“组”进行地址扩展,构成128KB的存储器。16.某8088系统用2764 ROM芯片和6264 SRAM芯片构成16KB的内存。其中,RAM 的地址范围为FC

27、OOOH-FDFFFH,ROM 的地址范围为FE000H-FFFFFH0试利用 74LS138译码,画出存储器与CPU的连接图,并标出总线信号名称。2764和6264均为8KB的存储芯片,需要13根地址线(A。AQ用于片内寻址。8088 系统的其他地址线(A13A19)用于产生片选信号。FC000H 的地址线状态为:1111 110 0 0000 0000 0000FE000H 的地址线状态为:1111 111 0 0000 0000 0000将A13A15用作译码输入,其他地址(A16AI9=U11)用作译码控制,可以得到如下译码 控制电路,连接如下图所示。17.存储周期指的是(A)。A.存

28、储器进行连续读或写操作所允许的最短时间间隔 B.存储器的读出周期C.存储器进行连续写操作所允许的最短时间间隔 D.存储器的写入周期存储周期是指连续两次访问存储器之间所需的最小时间。存取时间是CPU访问一次存储 器(写入和读出)所需的时间。存储周期等于存取时间加上存储器的恢复时间。所以应选择A。18.某一EPROM芯片,其容量为32Kx8,除电源和地线外,最小的输入引脚和输出引 脚分别为(CA.15 和 8;B.32 和 8;C.17 和 8;D.18 和 10;容量为32Kx 8的EPROM芯片,其数据线为8根,地址线为15根,片选线1根,读写 控制线1根。其中地址线、片选线、读写控制线均为E

29、PROM的输入信号,共17根。数据线 在正常工作状态下用于EPROM输出,计8根。所以应选择C。19.掩膜ROM在制造时通过光刻是否连接MOS管来确定。和1,如果对应的某存储单元 位没有连接MOS管,则该位信息为(C)。A.不确定;B.0;C.1;D.可能为0,也可能为1;掩膜ROM芯片内每一个二进制位对应于一个MOS管,该位上存储的信息取决于这个 MOS管的栅极是否被连接到字线上。栅极被连接,该单元被选中时,漏极与“地”相通,输 出低电平,该位存储的信息就是0。栅极未连接时,尽管字线被选中,输出端与“地”仍然 不能导通,输出高电平,对应的信息为1。所以应选择C。20.SRAM和DRAM存储原

30、理不同,它们分别靠(A)来存储0和1的。A.双稳态触发器的两个稳态和极间是否有足够的电荷B.内部熔丝是否断开和双稳态触发器C.极间电荷和浮置栅是否积累足够的电荷D.极间是否有足够的电荷和双稳态触发器的两个稳态静态随机存储器 SRAM 的每一个位存储单元有一个双稳态触发器,由4个晶体管组 成,它们的状态确定了该存储单元存储的1位二进制信息。而动态随机存储器 DRAM 一 般采用单管电路组成,它由一个MOS管T1和一个电容C构成。写入时其信息通过位线(数 据线)存人电容C中(写入“1”对电容充电,写入“0”则对电容放电);读出时存储在电 容C上的电荷通过T1输出到位线上。所以应选择A。习题三1.如

31、果用24b储存一个无符号数,这个数的范围是什么?如果储存的是一个补码表示的 有符号数,那么这个数的范围又是什么?答:如果用24b储存一个无符号数,这个数的范围应为:。224-1如果用24b储存一个补码表示的有符号数,这个数的范围应为:-223+223-12.用符号“”把下面的数按从大到小的顺序“连接”起来X1补=10110111 X2原=10110111 X3反=10110111 X4补=10110110 X5无符号数=10110111解:Xl=-0100 1001B,X2=-011 0111B,X3=-0100 1000B,X4=-0100 1010B,X5=+1011 0111B因止匕 X

32、5X2X3X1X43.用8位补码完成下列运算,用二进制“真值”的格式给出运算结果,并指出运算后 CF、OF、ZF、SF、PF标志位的状态。(1)127+126(2)126-127(3)-100-120(4)-100-(-120)解:(1)127+126127补=0111 1111,126补=0111 1110,127+126补=1111 1101,127+126=-0000 0011(溢出)COZSP=OIOIO(2)126-127126补=0111 1110,-127补=1000 0001,126-127补=1111 1111,126-127=-000 0001 COZSP=10011(3)

33、-100-120-100补=1001 1100,-120补=1000 1000,-100-120补=0010 0100,-100-120=+0010 0100(溢出)COZSP=OIOOI(4)-100-(-120)-100补=1001 1100,-120补=1000 1000,-120补求补=0111 1000,-100-(-120)补=0001 0100,-100-(-120)=+0001 0100COZSP=OOOOl4.把二进制代码1001011101011000分别“看作”是:(1)二进制无符号数(2)二进制补码(3)压缩BCD码(4)非压缩BCD码 哪一种情况下它代表的“值”最大?

34、答:看作二进制无符号数时,它代表的“值”最大。分析:看作二进制补码时,它代表一个负数,而其它的情况下,它均为正数。因此,看作二 进制补码时,它代表的值最小。把这组代码用十六进制数字形式写出:9758对于无符号数,它的值等于十六进制的9758H;对于压缩BCD码,它的值等于十进制的9758,显然小于9758H;对于非压缩BCD码,它的值等于十进制的78,显然更小于9758H;因此,看作二进制无符号数时,它代表的“值”最大。5.某数据段内有如下数据定义:X db 30,30H,ABC,2-3,?,11001010Bdw OFFH,-2,“CD”Y dd 20dup(15,3dup(?),0)Z d

35、b 3dup(?)W dw Z-X(5)SS(6)DS(7)DS(8)ES假设变量X的偏移地址为20Ho(1)写出变量X各数据在内存中的具体位置和相关内存单元的值。(2)写出变量Y,Z的偏移地址。(3)写出变量W的值答:(1)变量X各数据在内存中的具体位置和相关内存单元的 值如右图。变量Y的偏移地址为002EH;变量Z的偏移地址为002EH+4X5X20HMBEH变量W的值等于变量Z和X偏移地址之差01BEH-0020H=019EH它等于变量X、Y所占用内存单元的字节数。6.下列指令的源操作数段基址在哪个段寄存器中?(1)MOVAX,BP SI(2)MOVAX,CS:8DI(3)MOV AX,

36、2EBP*1(4)MOV AX,FS:4ESP(5)MOV AX,2 EBP EAX(6)MOV AX,ECX EBP*4(7)MOG AX,EDX EBP(8)MOV AX,ES:10EBP EAX*2 答:各指令源操作数段基址使用的段寄存器如下:(1)SS(2)CS(3)SS(4)FS0020H1EH 30H 41H 42H 43H 0FFH00H0CAHX0FFH 00H0FEH 0FFH 44H 43H002EHY7.判断下列指令是否正确。若不正确,指出错误原因(1)MOV AX,EBX(2)MOVSI,DL(3)MOV EBP,ESP EAX*3(4)LEA AX,3006H(5)M

37、OV BP DI,0(7)MOVES,1000H(9)MOV AX,CX+2(6)MOV SI,DI(8)MOV AX,X+2(10)MOV EAX EAX*2,AL答:(1)指令MOVAX,EBX 是正确的。2 指令MOV SLDL是错误的,两个操作数类型不匹配。3 指令MOV EBP,ESPEAX*3是错误的,比例因子不能为3。4 指令LEA AX,3006H是错误的,LEA指令的源操作数必须为内存操作数。(5 指令MOV BPDI,0是错误的,操作数类型无法确定。(6 指令MOV SI,DI是错误的,不能同时出现两个内存操作数。7 指令MOV ES,1000H是错误的,装载段寄存器时,源

38、操作数不能为立即数。8 如果“X”是用常数表达式定义的符号(例如:X EQU 5+6,或者是用“DW”定义的内存变量,指令MOVAX,X+2是正确的。否则这条指令是错误的。9 指令MOV AX,CX+2是错误的,源操作数表达式CX+2不是一个可以直接计算 的“常数表达式”。(10)指令MOV EAXEAX*2,AL是正确的。8.现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)二0B7H,(21203H)

39、=65H,说明下列指令执行后AX寄存器的内容。(1)(2)(3)(4)(5)(6)(7)MOV AX,MOV AX,MOV AX,MOV AX,MOV AX,MOV AX,MOV AX,1200HBX1200HBX 1100HBX BX SI 1100HBXSI答:(1 指令MOV AX,1200H执行后,(AX=1200H(立即数操作数)。(2)(3)(4)(5)(6)指令MOV 指令MOV 指令MOV 指令MOV 指令MOV 7 AX,BX执行后,(AX=0100H(寄存器操作数)。AX,1200H执行后,(AX=4C2AH(直接地址,EAT200H AX,BX执行后,(AX=3412H(

40、寄存器间接寻址,EA=0100H AX,1100HBX执行后,(AX=4C2AH(相对地址,EA=1200H AX,BXSI执行后,(AX=7856H(基址变址寻址,EAHH02H 指令MOV AX,1100HBXSI执行后,(AX=65B7H(相对基址变址寻址,EA=1202H 9.下面两条指令的功能有什么区别?MOV AX,BXMOV AX,BX答:指令MOVAX,BX”把BX寄存器的内容装入到AX中。指令MOV AX,BX”把内存储器一个字的内容装入AX寄存器。该字的段基址在DS 中,偏移地址在BX中。10.写出执行以下计算的指令序列,其中各变量均为16位有符号数。(1)z-w+(z-x

41、)(2)Z-W-(X+6)-(R+9)(3)Z-(W*X)/(Y+6),R-余数(4)Z-(W-X)/(5*Y)*2解:(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,XMOV CX,2IMUL CXIDIVBXMOV Z,AX11.一个双字长有符号数存放在DX

42、(高位)AX(低位)中,写出求该数相反数的指令序 歹IJ。结果仍存入DX,AX寄存器解:NOT DX;首先将(DX,AX 取反NOT AXADD AX,1;最低位加1,注意:不能用INC指令ADC DX,0;把进位(如果有)传递到高位12.内存缓冲区BUFFER定义如下,按照要求,写出指令序列BUFFER DB 20 DUP?(1)将缓冲区全部置为0,并使执行时间最短(2 将缓冲区全部置为空格字符 ASCII代码20H,使用的指令条数最少 3 将缓冲区各字节依次设置为0,1,2,3,4,,19 4 将缓冲区各字节依次设置为0,-1,-2,-3,-4,,-19 5 将缓冲区各字节依次设置为30,

43、29,28,27,11 6 将缓冲区各字节依次设置为0,2,4,6,8,38 7 将缓冲区各字节依次设置为0,1,2,3,0,1,2,3,,3XORMOVMOVMOVMOVMOVMOVMOVLEAONE:MOVINCLOOPEAX,EAXDWORD PTR BUFFER,EAXDWORD PTR BUFFER+4,EAXDWORD PTR BUFFER+8,EAXDWORD PTR BUFFER+12,EAXDWORD PTR BUFFER+16,EAXAL,20HCX,20BX,BUFFERBX,ALBX(3)XORMOV ONE:MOVINCLOOPBX,BXCX,20BUFFERBX,B

44、LBXONE(4)XOR XORMOVONE:MOV INC DECAL LOOP(5)XOR MOVMOVONE:MOV INC DECAL LOOP(6)XORXOR MOVONE:MOV INC ADD LOOP(7)XOR MOVONE:BX,BXAL,ALCX,20BUFFERBX,ALBXONEBX,BXAL,30CX,20BUFFERBX,ALBXONEBX,BXAL,ALCX,20BUFFERBX,ALBXAL,2ONEBX,BXCX,5MOVMOVMOV MOV ADD LOOPBUFFERBX,0BUFFERBX+1,1BUFFERBX+2,2BUFFERBX+3,3BX,

45、4ONE13.编写循环结构程序,进行下列计算,结果存入RESULT内存单元(1)1+2+3+4+5+6+100(2)1+3+5+7+9+11+99(3)2+4+6+8+10+100(4)1+4+7+10+13+100(5)11+22+33+44+99解:(1)CODE SEGMENT(2)ASSUMECS:CODERESULT DWSTART:?XORAX,AXMOVCX,100AGAIN:ADDAX,CXLOOPAGAINMOVRESULT,AXMOVAX,4C00HINT21HCODEENDSENDSTARTCODE SEGMENTASSUMECS:CODERESULTDW?START:X

46、ORAX,AXMOVCX,50MOVBX,1AGAIN:ADDAX,BXADDBX,2LOOPAGAINMOVRESULT,AXMOVAX,4C00HINT21HCODEENDSENDSTART(3)CODESEGMENTASSUMECS:CODERESULTDW?START:XORAX,AXMOVCX,50MOVBX,2AGAIN:ADDAX,BXADDBX,2LOOPAGAINMOVRESULT,AXMOV AX,4C00HINT 21H CODE ENDSENDSTART(4)CODE SEGMENTASSUMECS:CODE RESULT DW?START:XOR AX,AXMOV C

47、X,34MOV BX,1AGAIN:ADD AX,BXADD BX,3LOOP AGAINMOV RESULT,AXMOV AX,4C00HINT 21HCODEENDSENDSTART(5)CODESEGMENTASSUMECS:CODERESULTSTART:DW?XOR AX,AXMOV CX,9MOV BX,11AGAIN:ADD AX,BXADD BX,11LOOP AGAINMOV RESULT,AXMOV AX,4C00HINT 21HCODEENDSENDSTART14.已知ARRAY是5行5列的有符号字数组,编写程序,进行下列计算(假设和仍然为 16b,不会产生溢出)(1 求

48、该数组第4列所有元素之和(列号从0开始)(2 求该数组第3行所有元素之和(行号从0开始)(3 求该数组正对角线上所有元素之和(4 求该数组反对角线上所有元素之和解:假设数据段已定义如下:DATASEGMENTARRAYDW1,6,9,23,12;定义数组ARRAYDW54,23,15,-92,37;每一行5个数据DW-99,231,76,81,90;共5行DW33,67,81,-99,0;共计25个数据DW123,-52,77,-180,89SUMDW?;SUM存放结果DATAENDS(1)CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVD

49、S,AXMOVAX,0;累加器在循环之前清零MOVCX,5;计数器置初值MOVSI,4*2;第1行第4列元素在数组内的位移NEXT:ADDAX,ARRAYSIADDSI,5*2;SI指向下一行第4列元素LOOPNEXTMOVSUM,AXMOVAX,4C00HINT21HCODEENDSENDSTART(2)CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAX,0;累加器在循环之前清零MOVex,5;计数器置初值MOVSI,3*5*2;第3行第0列元素在数组内的位移NEXT:ADDAX,ARRAYSIADDSI,2;SI指向本

50、行下一列元素LOOPNEXTMOVSUM,AXMOVAX,4C00HINT21HCODEENDSENDSTART(3)CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAX,0;累加器在循环之前清零MOVCX,5;计数器置初值MOVSI,0;第0行第0列元素在数组内的位移NEXT:ADDAX,ARRAYSIADDSI,5*2+2;SI指向正对角线上下一个元素LOOPNEXTMOVSUM,AXMOVAX,4C00HINT21HCODEENDSENDSTART(4)CODE SEGMENTASSUMECS:CODE,DS:DATA

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服