2021年兰州理工大学微机原理习题集作业答案.pdf
第一章 微 型 计 算 机 概 论1、答:微型计算机系统涉及硬件系统和软件系统两大某些。硬件系统涉及:微型计算机、外部设备、电源及其他辅助设备。软件系统涉及:系统软件和应用软件。微型计算机也称为主机,主机涉及:微解决器、存储器、输入/输出接口(Input/Output),微解决器通过系统总线和存储器、输入/输出接口进行连接。微解决器(Microprocessor U n it)简称为MPU(或者称为M P),它是一种中央控 制 器(Central Processing U n it),简称CPU。它是微型计算机核心部件,它将运算器、控制器、寄存器通过内部总线连接在一起,并集成在一种独立芯片上。1.2、答:单片机是将CPU、ROM、RAM 以及I/O 接口电路以及内部系统总线等所有集中在一块大规模集成电路芯片上,就构成了单片机。单板机是将微解决器芯片、存储器芯片、I/O接口芯片及少量输入输出设备(键盘,数码显示屏)安装在一块印制板上构成一台微型计算机。由多块印制板构成微机称为多板机。1.3、完毕下列转换(保存4 位小数)(21.32)io=(10101.0101)2=(25.2436)g=(15.51EB)1650.38D=110010.0110 B=62.3024 Q=32.6147 H1.4,完毕下列计算己知 X=-63,Y=59贝|JX=BFH(10111111B),XR=C0H(B),|XH=C1H(11000001B)YK=3BH(001110UB),Y(i=3BH(00111011B),Y*=3BH(OOIUOHB)X+Y补=0FCH(HUllOOB),X-Y*=86H(10000110B)Xa+Y h卜=0FCH(11111100B),X 一g=86H(10000110B)1.5、答:浮点数是指小数点在数值中位置不是固定不变,实际位置将随阶码而浮动,用这种办法表达数,称为浮点数。定点数是指小数点在数值中位置固定不变。1.6、答:压 缩 BCD码是4 位二进制表达一位十进制数而非压缩BCD码 是 8 位二进制表达一位十进制数。1.7、写出下列数值压缩BDC码、非压缩BDC码、ASCII码值。(改为 15,29)15=15H压缩 BCDPS=0105 H 非压缩 BCDS产3135 H ASCII 码29=29HL曲 BCDIY=0209H非压缩 BCDI=3239H ASCII 吗第二章 8086/8088微 解 决 器2.1 答:从功能上讲由两某些构成 总线接口单元BIU和执行单元EU 构成。总线接口单元(BIU)是微解决器内部与存储器和I/O接口传送信息通道,总线接口单元负责从内存中将指令送到指令队列中;负责把数据从内存或I/O 接口送到执行 单 元(EU):负责将执行单元运营成果送到内存或I/O接口。EU功能是负责译码和执行指令。2.2 答:指令队列(Queue)存储预取指令,采用预取指令办法将减少微解决器等待时间,提高运营效率。8086CPU中指令队列有6 个;8088 CPU中指令队列有只有 4 个。2.3 答:8086/8088 CPU中 有 16个 16位寄存器。4 个段地址寄存器是代码段寄存器CS;数据段寄存器DS;堆栈段寄存器S S 和扩展段寄存器E S。它们是用来存储每一种段首地址(段基地址)。一种指令指针寄存器IP 是用于存储要执行指令偏移地址,它不能作为普通寄存器使用。一种标志寄存器(又称为程序状态寄存器)用于反映指令执行成果或控制指令执行形式。)有 8 个通用寄存器,通用寄存器分为数据寄存器与指针和变址寄存器两组。数据寄存器涉及AX(累加器)、BX(基址寄存器)、CX(计数器)和 DX(数据寄存器),普通用来存储16位数据,故称为数据寄存器.其中每一种又可依照需要将高8 位和低8 位提成独立两个8 位寄存器来使用,即 AH、BH、CH、DH和 AL、BL、CL、D L两组,用于存储8 位数据,它们均可独立寻址、独立使用。数据寄存器用来存储计算成果和操作数,也可以存储地址。指针寄存器涉及堆栈指针寄存器SP、基址指针寄存器BP普通用来存储地址偏移量和用于寻址内存堆栈内数据变址寄存器涉及原变址寄存器S I和目变址寄存器D I,普通用来存储地址偏移量为存储器寻址时提供地址。2.4 答:标志寄存器又称为程序状态寄存器,是 一 种 16位寄存器,标志寄存器设立了 9 个标志位。这 9 个标志位按功能分可以分为两类:一类为状态标志,状态标志表达执行某种操作后,ALU所处状态特性,这些状态标志会影响背面详细操作。状态标志有6 个:CF、AF、SF、PF、O F 和 ZF。另一类为控制标志,用来控制 CPU操作,反映存储器地址变化方向、与否容许中断及在执行程序时与否进行单步中断。控制标志有3 个:DF、1F和 TF控制标志是人为设立,每个控制标志都对某种特定功能起控制作用。2.5 答:8086与 8088有 3 点不同之处;1.8086有 16条数据线而8088只有8条数据线,2.8086丽/MX 而 8088MN/蔽 。3.8086A7/瓶而 8088而2.6 答:堆栈是在内存中开辟-种特定区域,用以存储CPU寄存器或存储器中暂时不用数据和有用信息。在数据段和附加段存储数据时,普通是从低地址开始向高地址存储数据,而用PUSH指令向堆栈中存储数据时总是从高地址开始逐渐向低地址方向增长。堆栈指令遵循“先进后出”,“后进先出”原则,凡是用P U S H 指令最后推入堆栈数据,用 P O P 指令弹出时最先出栈。在操作时是以字为单位。2.7 答:8 0 8 6/8 0 8 8 C P U 各 有 2 0 根地址总线,可寻址范畴是1 M 个存储单元。8 0 8 6 C P U 有 1 6 根数据,一次可以读一种字也可以读一种字节。8 0 8 8 C P U 有 8数据总线一次以读一种字节。2.8 答:1.物理地址就是实际地址,它具备2 0 位地址值,它是唯一标志1 M B存储空间某一单元地址。2.逻辑地址由段基址和偏移量构成。程序以逻辑地址编址,而不是物理地址。3.在8 0 8 6/8 0 8 8 存储空间中,把 1 6 个字节存储空间看作一节。为了简化操作,规定各个逻辑段从节整数边界开始,也就是说段首地址低4位应当是“0”,因而把段首地址高1 6 位称为“段基值”。4.偏移量是该物理地址距离段首地址单元数。2.9 答:总线上传播信号一组导线,作为微机各部件之间信息传播公共通道。系统总线按功能分数据总线、地址总线、控制总线。2.1 0 答:1.8 0 8 6/8 0 8 8 C P U 把存储器分为代码段、数据段、堆栈段、附加段。由于 8 0 8 6/8 0 8 8 寄存器是1 6 位,最大只能寻址6 4 K 个单元存储空间,为了增大寻址空间把存储器进行分段,这样就可以寻址1 M B 存储空间。2.每段最大空间为6 4 K B。2.1 1 答:(1)2 3 0 0 H;1 0 1 0 H;2 4 0 1 0 H(2)0 0 0 0 H;I 0 0 0 H;0 1 0 0 0 H(3)2 A E 0 H;1 6 9 0 H:2 C 4 9 0 H(4)7 3 6 9 H;0 0 1 0 H;7 3 6 A 0 H2.1 2 答:I.数据段首地址是1 H 末地址是2 1 F F F H。2.附加段首地址是2 0 A 3 0 H末 地 址 是 3 0 A 2 F H 3.代 码 段 首 地 址 是 4 7 0 E 0 H=4 7 0 E Hx l 0 H末 地 址 是5 7 0 D F H=(4 7 0 E 0 H+F F F F H)(.2.1 3 答:8 0 8 6/8 0 8 8 C P U 复位后来,除代码段寄存器外,别的标志寄存器、指令指针寄存器、各段寄存器及指令对列所有被清零。2.1 4 答:在一种读总线周期A L E 在第一种时钟周期为高电平,别的周期为低电平。丽/S 7在第一种时钟周期为低电平,别的周期为高电平。丽在第一种时钟周期为低电平,第二、三周期为高电平。标始终为高电平。M/I 5 始终为高电平。DT/1始终为低电平。2.1 5 答:1.8 0 8 6 C P U 读/写总线周期时,至少包括4个时钟周期。2.CP U 在 T 3状态前沿(下降沿)对 R e a dy 信号进行采样。若 C PU在 T 3 状态开始采样到R e a dy 信号为低电平,那么将在T 3 和 T 4 之间插入等待状态T w。3.T w 可以是一种,也可以是各种。C P U 在每个T w 前沿处对R e a dy 信号进行采样。当在T w 状态采样至U R E A D Y信号为高电平时,在当前Tw状态执行完,进入T 4 状态。第三章 存储器3.1 答:1.容量:存储器芯片容量是以1 位二进制数(b i t)为单位,因而存储器容量是指每一种存储器芯片所能存储二进制数位数。(存储器容量=存储单元数x 位数)芯片数量(N)=梨粤 2.存储速度:存储器基本操作是读出与写入,称 为“访芯片容量问”或“存取”。存储器存储速度有两个时间参数:(1)访问时间(A c c e ss T i m e)TA从启动一次存储器操作,到完毕该操作所经历时间。(2)存储周期(M e m o ry Cy c l e)T 址启动两次独立存储器操作之间所需最小时间间隔。3.存储器可靠性:4.性能/价格比:5.其她指标(存储器选取有时还应考虑功耗、集成度等指标)。3.2 答:按存储器读写功能分可以分为随机读写存储器(R A M)和只读存储器(R O M)。随机读写存储器R A M 可以随机地按指定地址从存储单元存入或读取(简称存取)数据,存储在R A M 中信息,一旦掉电就会丢失。随机读写存储器R A M 可分为静态随机存取存储器S R A M,动态随机存取存储器DR A M和集成随机读写存储器I R A M。只读存储器(R O M)基本特性是在正常运营中只能随机读取预先存入信息,虽然在断电状况下,R O M 仍能长期保存信息内容不变,因此它是一种永久存储器。只读存储器(R O M)可分为掩膜只读存储器(M a sk R O M)、可编程只读存错器(P R O M)、紫外线可擦除可编程只读存储器(EP R O M)、电可擦除编程只读存 储 器(ETRO M)和迅速可擦编成只读存 储 器(Fl a sh EP R O M)。掩膜只读存储器其构造简朴,存储信息稳定,可靠性高,可以永久性保存信息;可编程只读存储器是由半导体厂家制作“空白”存储器阵列(即所有存储单元所有为1 或所有为0 状态)出售,顾客依照需要可以实现现场编程写入,但只能实现一次编程;紫外线可擦编程只读存储器、电可擦除编程只读存储器和快可擦编程只读存储器等不但可以现场编程。还可以擦除原存储信息内容,写入新信息。3.3 答:S R A M 特点是在一种存储单元所用晶体管数目多,但不需要刷新电路。D R A M特点是在一种存储单元所用晶体管数目少,但需要刷新电路。I R A M 特点是将动态随机存取存储器和刷新电路集成在一片芯片中,它即具备S R A M 速度快长处,又具备D R A M 便宜。I R A M 事实上是附有刷新电路D R A M o 它在当代微机系统中得到广泛应用,大容量内存普通都是用I R A M。3.4 答:1)13条地址线和4 条数据线;2)19 条地址线和1条数据线3)17 条地址线和4 条数据线;4)15 条地址线和8条数据线3.5 答:1)RAM存储容量为25 6 K x 8 b i t;2)有 18 条地址线和8条数据线;3)若采用6 116 需 要 128 片 若采用6 26 4需要32片、若采用6 2128 需 要 16 片,若采用2114需要5 12片,若采用2141需要5 12片、3.6 答:1)ROM存储容量为5 12K x 8 b i t;2)需 要 19 条地址线和8条数据线;3)若采用27 6 4需要6 4片,若采用27 128 需要32片,若采用28 16 A 需要25 6 片,若采用28 F25 6 需 要 16 片。3.7 答:惯用存储器片选控制办法有线选法、全译码法和某些译码法。线选法地址线可以不用完,也无需专门译码电路。但由于高位地址线可随意取值 0 或 1。因此,存在地址重叠,并且导致存储器地址不能持续分布。全译码法所有地址线均参加地址译码,芯片地址线直接和低位地址总线相连,高位地址总线经译码器或逻辑电路与各芯片片选信号相连。某些译码法与全译码法类似,只是高位地址线中有一某些进行译码,产生片选信号,而不是所有。这种办法称为某些译码法。3.8 答:第一片首地址为21000H(错),末尾地址为24FFEH。第二片首地址为21001H,末尾地址为24FFFH。第三片首地址为25000H,末尾地址为28FFEH。第四片首地址为25001H,末尾地址为28FFFH。3.9 第一片 A19 Ai2=01000000,地址范畴是 40000H-40FFEH第二片 Al9-Ai2=01000000,地址范畴是 40001 H40FFFH第三片 Ai9-Ai2=01000001,地址范畴是 41000H-41FFEH第四片 Ai9Ai2=01000001,地址范畴是 41001H-41FFFH3.10(有问题A 0和 BHE未画)按既有连线地址为第一片 A19 Ai3=l000000,地址范畴是 80000H81FFFH_第二片 Ai9A13=1000001,地址范畴是 8H83FFFH_An-A,8086 脸CPU AuWRRDD0D7D8D15Aw AoCE 2716(4)OE DsDis 2-i a n a”川 后 存 储 器 诧 熔 由 略 图第三片 AI9Ai3=1000010,地址范畴是84000H85FFFH_第四片 Al9Ai3=1000011,地址范畴是86000H87FFFH_A|2-A(IA|98086CPUDKD)5DoD?Au AoCS 6264(4)WE玩 D-D,译码器G-G-MeBA图3-2 8 0 8 6 C P U与存储器连接申路图3.11 1)答:是译码功能。2).CPU A8086 A:A|4BHEWRRDn皿A|3-A|MWA|9A)8译码器_ABG-G-G-cBA3)答:R O M0 ROM 地址范畴。9 40 0 0 H-9 7 FFFH3.12答:存 储 器(1)地址范畴为8 0 0 0 0 H-8 0 FFE H:存 储 器(2)地址范畴为8 0 0 0 1 H8 0 FFFH。(题目有错,存 储 器(4)地址范畴为8 10 0 1H8 1FFFH)3.13 答:1)系统存储容量为:B 3FFFH-B 0 0 0 0 H+1 =40 0 0 H=16 K B ;2)需要 6 26 4 芯 片:(16 K*8 b i t)/8 K*8 b i t=2 片;3)画出系统连接图。两 片 6 26 4芯片地址范畴如表所示,高位地址A 14-A 19 参加译码形成两片6264片选信号,奇地址存储器芯片和偶地址存储器芯片由A 0和 丽 石 区 别。存储器与系统总线连接电路如图题3.13所示。1 0 1 1 0 010 110 0A 19 A 18 A 17 A 16 A 15 A 14 A 13 A 12 A l l A 10 A 9 A 80 0 0 0 0 0111111A 7 A 6 A 5 A 4 A 3 A 2 A l A O0000000011111111CPUD 0.D?A 13 A|A 19入HM/IOA|8A 6A 15A 14RDWRBHE.A oDOD7D 8 D 5CS1译码器AB-2-2G-G-GCBAA|2 Ao-WE-OE 6264(1)O-LCS2A 12 A()WEOE 6264(2)CS2CS1D 0.D 7图题3.1 3存储器扩展电路3.14答:(不是8086系统)AicrAoRDWROiDrAo-A IOCS2732RDD(i.D?3.15在8086CPU构成系统中,用4片2764(8Kx8 bit)存储芯片构成随机ROM存储系统,其第一片首地址为(COOOH:8000H),试画出存储器与CPU连接电路图。答:BHEDi)D?DxD”A|3-A|短M/IOAnC P U AA|6AuA;RD译码器G-5-5CBA第四章 8086/8088指 令 系 统4.1答:机器语言每一条指令是以二进制为代码指令,它可以被计算机直接执行。汇编语言是用助记符或用符号来编写指令,是一种与机器语言一一相应语言。机器不能直接执行程序,程序必要通过翻译,机器才干执行。高档语言是面向过程语言,它不依赖于特定机器,独立于机器,用同一种高档语言编写程序可以在不同机器上运营而获得相似成果。4.2 请指出如下各指令源、目操作数所使用寻址方式。(16)M O V A X,B X(1)M O VS I,21 O O H源:及时数寻址;目:寄存器寻址(2)S B B B Y TE P TR D I S P I B XJ,7;源:及时数寻址;目:寄存器相对寻址(3)A N D D I ,A X源:寄存器寻址;目:寄存器间接寻址(4)O RA X,609E H 源:直接寻址;目:寄存器寻址(5)MOV B X+D I +30H ,C X源:寄存器寻址;目:基址变址相对寻址(6)P U S H E S:B P 源:寄存器间接寻址;目:隐含寻址(7)C A L L D I 1D I S P寄存器相对寻址(8)J N ZS h o r t l a b e l直接寻址(9)C B WB L(指令错)(10)M O VA X,1000H 源:直接寻址;目:寄存器寻址(11)M O VA X,A R R A Y I B XJ S I J;源:基址变址相对寻址;目:寄存器寻址(12)M U LB L源:寄存器寻址;目:隐含寻址(13)M O VA X,B X S I 源:基址变址寻址;目:寄存器寻址(14)M O VA L,TA B L E源:直接寻址;目:寄存器寻址(15)M O VA X,D I S P f B X+D I 源:基址变址相对寻址;目:寄存器寻址源:寄存器间接寻址;目:寄存器寻址4.3答:基址寄存器BX、基址指针寄存器BP、原变址寄存器SI、目变址寄存器 DI。4.4 下列各条指令与否有错?如果有,请指出错误之处。(1)MOVDS,1000H及时数不能直接给段寄存器送数(2)MOV100,2 3 H 目操作数应指明类型,改 为 BYTE PTR 100(3)ADDAX,BX+BP+6 _存储器寻址不能有两个基地址1 BX,BP(4)PUSHDL进栈是以字为单位(5)INAX,3FHI/O 接口地址不能加括号(6)OUT3FFH,AL口地址3FF应 放 在 D X 中(7)LESSS,SIJS S不能存储偏移量(8)POPAXA X 不用来做间址寄存器(9)IMUL 4CH _乘法中源操作数不能是及时数(10)SHL BX,5移位超过1 位应放在C L 中(11)INT300及 时 数(向量码)应不大于255(12)XCHG DX,OFFFH此指令中不能有及时数(13)POPAL出栈是以字为单位(14:)DIV32H除法中原操作数不能是及时数(15:)MOV AX,BYTE PTRSI源操作数和目操作数不等宽(16:)MOV DX,DS:BP对的(17:)MOV 128,CL目操作数不能为及时数4.5 设若标志寄存器原值为0A11H,SP=0060H,A L=4下列几条指令执行后,标志寄存器、AX、SP值分别是多少?PUSHFSP;SP=5EH,5EH=OA11HLAHF;F;AH=11HXCHG AH,AL;AH 04H,AL=11HPUSH AX;SP=5CH,5CH=0411H,SAHF;A H fF 低 8;POPF;S P-F标志寄存器=0411H,AX=0411H,SP=005EH4.6 已知 D S=H,关 于 内 存单元值为:(21000H)=00H,(21001H)=12H,(2l200H)=00H,(21201 H)=10H,(23200H)=20H,(23201 H)=30H,(23400H)=40H,(23401H)=30H,(23600H)=60H,(23601H)=30H,符号 COUNT 偏移地址为 1200H执行下列指令后,寄存器AX、BX、S I值分别是多少?MOVBX,OFFSET COUNTBX=1200HMOVSL BXSI=1000HMOVAX,COUNTSI1BXAX=3040H,BX=1200H,ST=1000H4.7答:AX=322FH,标志寄存器值为0410H4.8 设 单 元 DATA在内存数据段中偏移量为24C 0H,在 24C0H-24C3H单元中依次存储着55H、66H、77H、88H o下列几条指令执行后,寄 存 器 AX、BX、CL、SL DS值分别是多少?MOVAX,DATA;AX=6655HLEASLDATA;SI=24C0HMOVCL,ISI;CL=55HLDSBX,DATA;DS=8877H.BX=6655H4.9 若 AX=26D3H,CX=7908H,CF=1,O F=0,执行下列指令后,寄存器 AX、C X 值分别是多少?.AX=A74CHCX=FA08H _C F=_0_O F=_0_0SALCH,ICH=FA,CL=08HRCRAX,CLAX=A726H,CF=1ROLAL,1AL=4CH,CF=04.10 答:原串在数据段中,但可以段超越。目串必要在附加段中。4.11 答:M/O=l;DT/W=1;而=1;WR=0;数据总线上数是0508H;地址总线上数分是49420H4.12(与 2 1 题重)答:AL=23H,功能将压缩BCD码转换为二进制。4.1 3 答:上述程序段执行后,字节单元HCOD内容是43H;H C O D+1内容是 35H。该程序段功能是将压缩十六进制转换为ASCII字符。4.14 执行下面程序段后,(CL)=02H,(AX)=0040H。XOR BX,BXMOV AX,0010HMOV CL,2SAL AL,CLMOV BL,ALSAL AL,CLADD AX,BX4.1 5 问:(1)初 值(AL)=37H时,程序段执行成果:(AL)=07H(2)初 值(AL)=9FH时,程序段执行成果:(AL)=OFFH4.16下列程序段中,以 X 为首址字单元中数据依次为1234H、5678H;以丫为首址字单元中数据依次为8765H、4321H。阅读程序,给出必要程序注释并完毕程序后问题。LEASI,X;SI=OOOOHLEADI,Y;DI=0004HMOVDX,SI+2;DX=5678HMOVAX,X;AX=1234HADDAX,X;AX=2468HADCDX,SI+2;DX=ACF0HCMPDX,Dl+2;ACFOH 与 8765H 比JLL2;不大于转移到L2CMPAX,Y;不不大于2468H与 4321比JLLI;不大于转移到L1JMPEXIT;无条件转移到EXITL I:MOVAX,1;给 A X 送 1JMPEXIT;无条件转移到EXITL2:MOVAX,2EXIT:.以上程序代码执行之后,AX=2;DX=ACFOH4.17 答:程序将依次向堆栈压入数据为0003H、0002H、OOOlHo该程序段实现了将二进制转换十进制功能。4.18 答:程序功能是计算AX=1 10,BX=10H起累加和。AX=10,BX=47H,CX=0oMOV AX,0000HMOV BX,001 OHMOV CX,10LP:INC AXADD BX,AXLOOP LPHLT4.19 答:以上程序代码执行之后,AX=2:DX=ACFOH4.2 0 阅读下列程序段,给出必要程序注释并完毕程序后问题。ADD AL,AL;2*ALADD AL、AL;4*ALMOV BL,AL;AL-BLSAL BL,1;8*ALADD AL,BL;12*ALHLT(1)该程序段功能是什么?答:把 A L中内容乘以12(2)设 AL初值为0 A H,执行该程序段后,A L为多少?答:AL=78H4.21 已知有程序段如下:(与 12题重)(1)该程序段功能是什么?答:将 BCD码转换成二进制(2)执行该程序段后,AL=23H4.22、下列程序段规定在内存40000H开始顺序30个单元中存储着8 位无符号数,将它们和放在D X 中,试填空完毕该程序(并加入必要注释)或自行编制一段程序完毕上述功能。MOVAX,4000H;_MOVDS,AX;送段首地址_ _ _ _ _ _ _ _ _ _ _ _MOVSI,0000H:送偏移量MOV CX,_30_;送循环次数XOR AX,AX;清零_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _GOON:ADD AL,JSI;两数相加_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ADC AH,OOH;加进位位_ _ _ _ _ _ _ _ _ _ _ _ _ _INC SI;修改地址_ _ _ _ _ _ _ _ _ _ _ _DEC CX;计数器减1 _JNZ GOON;不为零循环_ _ _ _ _ _ _ _ _ _ _MOV DX,AX;成果送DX_4.23在 A L中有一种十六进制数ASCII码,完毕下面程序段在每一空白处填上一条恰当指令(并加入必要注释),实现将A L中 ASCII码转换成二进制数。CMP AL,3AH;与 3 A H 比较_ _ _ _ _ _ _ _JC DONE;不大于转移到DONESUB AL,7;不不大于减7_DONE:SUB AL,30H;AL 减 30HHLT4.2 4 已知附加段中有一块长5 0 个字数据区,首 址 为 DEST。欲编程将它们所有初始化为0FFFFH值,试在下面程序段空白处填上恰当指令或操作数(并加入必要注释),以实现上述功能。REP STOSBLEADL DEST;取 DEST偏移量MOVCX,100;送计数值CLD;清方向标志位,DF=0MOVAL,OFFH:将 AL-OFFH将 送 100个字节FFH到首址为DEST区域4.2 5 已知附加段中有一块长5 0 个字数据区,首 址 为 DEST。欲编程将它们所有初始化为0FFFFH值,试在下面程序段空白处填上恰当指令或操作数(并加入必要注释),以实现上述功能。(与 24题重)DL DEST;_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _MOV CX,;CLD;MOV AL,OFFH;4.26 附加段中有某字符串首址为B LO C K,长 17个字节 欲查找其中第一次浮现字符“e”位置,并将该位置所在偏移量入栈保护。试在下面程序段空白处填上恰当指令(并加入必要注释)或操作数以实现上述功能。MOVDL OFFSETBLOCK:送 BLOCK 偏移量MOVAL,65H;送 eASCH 码_ _ _ _ _ _ _ _ _ _ _ _ _ _MOVCX,17;送计数值CLDREPNZSCASB;方向标志位清零_ _ _ _ _ _ _ _ _ _ _ _ _ _ _;寻 找 eJNEOTHER;找至ij e 转 至 OTHERDECDI;修改地址_ _ _ _ _ _ _ _ _ _ _ _ _ _PUSHDI;偏移量入栈保护OTHER:.(略)4.27 已知有某字串BUF1首址为0000H,BUF2首址为0010H,数据段与附加段重叠。欲 从 BUF1处开始将10个字数据顺序传送至BUF2处,试在下面程序段空白处填上恰当指令或操作数以实现上述功能。LEASI,BUF1:送 BUF1偏移量ADDSI,12H;地址移动到字符串最后LEADI,BUF2;送 BUF2偏移量ADDDL12H;地址移动到字符串最后STD;方向标志位清零MOVCX,10;送计数值REP MOVSW;进行串操作4.28在 DAT和 DAT1两个字节变量单元中有两个十进制数ASCII码,编程实现将这两个ASCII码转换为两个BCD码,并以压缩形式存储在REST字节变量单元中。试填写该程序划线某些,并加入必要注释。MOVAL,DAT;取第一种数SUBAL,30H;将 ASCH码转为BCD码MOVCL,4;送移位数SHLAL,CL;将 BCD码放在A L高四位中MOVBL,DAT1;取第二个数SUBBL,30H:将 DAT1中 ASCH码转为BCD码OR,AL,BL;将两个BCD码合并在A L寄存器中MOVREST,AL;将压缩形式BCD码存人REST中HLT第五章汇编语言程序设计5.1 答:标号在指令性指令名字,写在指令前面,标号后必要有冒号、变量在伪指令前是定义某-数据区所起名字,它背面不带冒号。标号和变量均有段、偏移量属性,标号类型是远和近型,变量类型是字节、字、双字等。5.2 答:指令性指令是给CPU命令,它是由汇07H-0100H ADD1编程序翻译成机器语言指令,在程序运营时由CPU00H00H来执行,每条指令都相应CPU 一种特定操作。伪指00H01H令不汇编成机器语言,仅仅在汇编过程中告诉汇编程00H序应如何汇编。00H00H5 3.答:ADDI、ADD2、ADD3 段基址为 1000H;01HH ADD2ADD1、偏 移 量 为 H、类型为双字;ADD2、偏移04H05H量 为 H、类型为字节;ADD3、偏移量为2068H、05H05H类型为字。05H07H5.401H答:分派状况如右图.2068H ADD35.5 答:(定义了堆栈段 81字节、数 据 段(17题 5.3 图字节)和代码段)02H1006H ADD112H9AH1009H ADD256H42H41H题 5.4 图05H01 OOH ADD15.6 答:ADD1占有多少个字节5.7 答:1.根据设计任务,抽象出描述问题数学模型。2.拟定实现数学模型算法或求解详细环节和办法。3.绘制出程序流程框图0 4.分派存储空间及工作单元(涉及寄存器)。拟定数据段、堆栈段、05H0I27H 题 5.6 图 05代码段及附加段在内存中位置。5.根据流程图编写程序。6.静态检查。7.上机调试。8.程序运营,成果分析。5.8 答:源程序构造普通涉及4 个段,它们是代码段、数据段、附加段和堆栈段。其中代码段是必要存在,别的段视详细状况而定。普通用到四种程序构造:顺序构造,分支构造,循环构造,子程序构造。5.9 答:XOR AX,AXHLTMOVDX,0MOVAH,45HMOVDL,AHANDDL,OFHADDDL,30HANDAH,OFOHMOVCL,4SHRAH,CLADDDL,30HADDAX,DXHLT5.10 答:MOV AL,A94H一 DATA116HMOV BL,B26H89HIMUL BL30H DATA255HMOV CX,C04HADD AX,CX74H.-RESSUB AX,18(1)从 DATA1单元开始,将 8 个组合BCD码累加起来,其 和(超 过 1 字节)存入以RES为首址单元中(低位在前)。图5-1 5.11题图(2)将它们看作2 个分别以DATA1、DATA2为首址4 位十进制数(低位在前),求此两数之差并存入以RES为首址单元中。HLT答:1、LEA SI,DATA12、LEA SI,DATA1LEA DI,DATA2LEA DI,DATA2LEA BX,RESLEA BX,RESMOV CX,7XOR AX,AXXORAX,AXMOV AX,WORD PTR SIJMOV AL,BYTE PTR SIADD AX,WORD PTR DIAA1:INC SIMOV DX,WORD PTR SI+2ADD AL,BYTE PTR SIADC DX,WORD PTR DI+2ADC AH,0MOV WORD PTR BX,AXLOOP AA1MOV WORD PTR DI+2,DXMOV WORD PTR BX,AXHLT5.1 2 答:依照各种条件判断和比较进行操作,满足条件去做一种操作,不满足条件去做另一种操作。每一种操作程序称为一种分支,一次判断产生两个分支,只有一次判断称为单重分支程序。多次判断产生各种分支,称为多重分支程序。5.13 答:MOV AL,DATHLTAND AL,DATJNS POSI;若为正数转POSITEST AL,01H;测试负数奇偶性JZ M;若为负偶数转MOR AL,BUF;若为负奇数进行 或 运算JMP DONEM:XOR AL,BUF;负偶数进行 异或运算JMP DONEPOSI:TEST AL,01H;判断正数奇偶性JZ N;为正偶数,转 NADD AL,BUF;为正奇数进行 加 运算JMP DONEN:AND AL,BUF;正偶数进行 与 运算DONE:MOV BUF,AL5.1 4 答:实现办法仍是两两进行比较判断。其环节是:先取出X,Y,Z,假设存于 AL,BL,CL寄存器中。采用两数比较换位法,即 A L 中数和BL,C L分别进行比较,在 A L 中总是存储中间值。程序段及流程图如右图所示:MOVAL,DAT1MOVBL,DAT1+1MOVCL,DAT1 +2CMPAL,BLJB LP1XCHG AL,BLLP1:CMP AL,CLJAE SAVXCHG AL,CLCMP AL,BLJB SAVXCHG AL,BLSAV:MOV BUF1,ALMOV DL,AL;MOV AH,02HI NT 21HHLT5.15 答:LEA SI,ADD1LEA DI,ADD2XOR AX,AXMOV AL,BYTE PTRSICMP AL,30JB AAMOV BYTE PTRDI,2JMP DONEAA:CMP AL,1JNB BBMOV BYTE PTRDI,0JMP DONEBB:MOV BYTE PTRDI,OFEHDONE:HUT5.1 6 答:循环程序包函循环初始化、循环体和循环控制3 某些。循环初始化是对地址指针寄存器、循环次数计数初值设立,以及其他为能使循环体正常工作而设立初始状态等。循环体是循环操作(重复执行)某些,由循环工作某些和修改某些构成。循环工作某些是为实现程序功能而设计重要程序段,该段程序在整个操作中要重复执行多次。也许有各种指令语句构成,也可以仅有一种指令语句构成。循环修改某些是指当程序循环执行时,对某些参数如地址、变量等进行有规律修正。循环控制某些是用于判断循环程序与否结束,若结束则退出循环程序,否则修改地址指针和计数器值,继续进行循环程序。循环控制选取可以有各种方案,在循环控制条件及循环次数控制,可以采用循环指令LOOP、LOOPZ和 LOOPNZ指令来实现,也可以用指令DEC CX和 JN C 标号两条来实现。其特点是需要多次重复进行某些操作。5.17答:LEABX,DATMOVCX,100LP1:MOVAL,BXMOVAH,20HANDAL,AHMOVAL,ODFHJNZDAXXIAO:OR BX,AHJMP PPDAX:AND BX,ALPP:INC BXLOOP LP1DONE:HUT5.18 答:DATA SEGMENTLED1 DB 3FH,06H,5BH,4FH,66H,6DH,3DH,07H,7FH,6FHDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:LDS SI,LED IAA1:MOV CL,10AA2:MOV AL,SIINC SIOUT 40H,ALLOOP AA2JMPAA1:CODE ENDS5.19 答:MOV AX,HMOV DS,AXMOV AX,5000HMOV ES,AXMOV SI,1000HMOV DI,8000HMOV CX,300REP MOVSWHLT5.20 答:LAE SL ADD1MOV CX,100XOR BX,BXSTAR:MOV AX,SITEST AX,8000HJZ JSHINC BLJMP DONEJSH:INC BHD