2022年微机原理与接口技术试题库 .pdf
WORD 格式专业资料整理三、选择题1、在计算机内部,一切信息的存取、处理和传送都是以D形式进行的。A)EBCDIC 码 B)ASCII 码 C )十六进制编码 D)二进制编码2、与十进制数 56 等值的二进制数是A。A)111000B) 111001C ) 101111D )110110 四、是非判断题1、在第三代计算机期间出现了操作系统。()2、对于种类不同的计算机,其机器指令系统都是相同的。()3、在计算机中,数据单位bit的意思是字节。()1. 微处理器,微型计算机和微型计算机系统三者之间有何区别?答:微处理器即CPU ,它包括运算器、控制器、寄存器阵列和内部总线等部分,用于实现微型计算机的运算和控制功能,是微型计算机的核心;一台微型计算机由微处理器、内存储器、I/O 接口电路以及总线构成;微型计算机系统则包括硬件系统和软件系统两大部分,其中硬件系统又包括微型计算机和外围设备;由此可见, 微处理器是微型计算机的重要组成部分,而微型计算机系统又主要由微型计算机作为其硬件构成。2.CPU在内部结构上由哪几部分构成?CPU应具备哪些主要功能?答:CPU 在内部结构上由运算器、控制器、寄存器阵列和内部总线等各部分构成,其主要功能是完成各种算数及逻辑运算,并实现对整个微型计算机控制,为此,其内部又必须具备传递和暂存数据的功能。3. 累加器和其它通用寄存器相比有何不同?答:累加器是通用寄存器之一,但累加器和其它通用寄存器相比又有其独特之处。累加器除了可用做通用寄存器存放数据外,对某些操作,一般操作前累加器用于存放一个操作数,操作后,累加器用于存放结果。4. 微型计算机的总线有哪几类?总线结构的特点是什么?答:微型计算机的总线包括地址总线、数据总线和控制总线三类,总线结构的特点是结构简单、可靠性高、易于设计生产和维护,更主要的是便于扩充。6. 计算机 I/O 接口有何用途?试列出8 个 I/O 接口。答:计算机 I/O 接口是连接计算机和外部设备的纽带和桥梁,它主要用于协调和控制计算机与外设之间的信息流通和交换。例如:串行通讯口(COM 口)、并行打印机口、软盘驱动器接口、硬盘驱动器接口、光驱接口、显示器接口、音响设备接口、其它通用设备接口(USB 、SCSI等)。7. 现在,计算机主板上一般都包括哪些I/O 接口? I/O 接口卡如何与主板相连?答:现在,计算机主板上一般包括串行通讯口、并行打印口、软盘驱动器接口、硬盘驱动器接口、光驱接口、USB接口等。象显示器适配器、网卡、modem 卡等 I/O 接口卡一般通过总线插槽与主板相连。8. 简述系统总线, AGP 总线,PCI 总线及 ISA 总线的作用。答:系统总线是CPU 与存储器及桥接器之间传递信息的通道,AGP 总线专门用与连接CPU与显示器适配器, PCI 总线一般用于连接一些高速外设接口作为高速外设与CPU 或内存交换信息的通道,而ISA 总线一般用于连接一些非高速名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 36 页 - - - - - - - - - WORD 格式专业资料整理外设接口作为非高速外设与CPU 或内存交换信息的通道。9. 试说明计算机用户,计算机软件,计算机硬件三者的相互关系。答:计算机用户,计算机软件系统,计算机硬件系统共同构成一个计算机应用系统,三者在该系统中处于三个不同的层次。计算机用户处于最高层,计算机软件处于中间层,计算机硬件系统处于最下层。在这里计算机用户是系统的主宰,他们通过软件系统与硬件系统发生关系,指挥计算机硬件完成指定的任务。即,计算机用户使用程序设计语言编制应用程序,在系统软件的干预下使用硬件系统进行工作。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 36 页 - - - - - - - - - WORD 格式专业资料整理11. 存储单元的选择由什么信号控制?读、写靠什么信号区分?答:存储单元的选择由地址信号控制,而对存储单元进行读操作还是写操作则要靠读、写信号区分。4. 若用一个字节来表示带符号数,判断下列各运算在机内进行时是否会产生溢出,写出判断过程。A.5BH+32H;B.-08H-15H;C.-51H+(-3DH);D.2DH+3CH 答:A.产生溢出 ,5BH=01011011B其补码表示的机器数为 :01011011 32H=00110010B 其补码表示的机器数为 :00110010 相加的结果为 :10001101 数值最高位向符号位进位 , 但符号位向前无进位 , 故产生溢出。B.不产生溢出 ,-08H=-00001000B 其补码表示的机器数为 :11111000 -15H=-00010101B其补码表示的机器数为 :11101011 相加的结果为 :111100011 数值最高位向符号位进位, 符号位同时也向前进位 , 故不产生溢出 . C.产生溢出 ,-51H=-01010001B 其补码表示的机器数为 :10101111 -3DH=-00111101B其补码表示的机器数为 :11000011 相加的结果为 :101110010 数值最高位向符号位无进位, 但符号位向前进位 , 故产生溢出 . D.不产生溢出 ,2DH=00101101B 其补码表示的机器数为 :00101101 3CH=00111100B 其补码表示的机器数为 :00111100 相加的结果为 :01101001 数值最高位向符号位无进位, 符号位向前也无进位 , 故不产生溢出。6. 详细叙述总线缓冲器的作用。答:总线缓冲器的作用主要是控制各路数据在总线上的交叉传送避免相互冲突,当几路数据都要向总线上传送时,就通过各路的缓冲器来解决,当一路传送时,缓冲器使其它各路数据与总线断开。7. 锁存器和寄存器有什么不同? 答:锁存器与寄存器都是用来暂存数据的器件,在本质上没有区别,不过寄存器的输出端平时不随输入端的变化而变化,只有在时钟有效时才将输入端的数据送输出端(打入寄存器),而锁存器的输出端平时总随输入端变化而变化,只有当锁存器信号到达时,才将输出端的状态锁存起来,使其不再随输入端的变化而变化。1.8086 从功能上分成了 EU和 BIU 两部分。这样设计的优点是什么? 答:传统计算机在执行程序时,CPU 总是相继地完成取指令和执行指令的动作,即,指令的提取和执行是串行进行的。而8086CPU 在功能上分成了 EU和 BIU两部分, BIU 负责取指令, EU负责指令的执行,它们之间既互相独立又互相配合,使得8086 可以在执行指令的同时进行取指令的操作,即实现了取指令和执行指令的并行工作,大大提高了CPU 和总线的利用率,从而提高了指令的处理速度。2.8086CPU中地址加法器的重要性体现在哪里?答:地址加法器是8086CPU 的总线接口单元中的一个器件,在8086存储器分段组织方式中它是实现存储器寻址的一个关键器件,地址加法器将两个16 位寄存器中的逻辑地址移位相加,得到一个20 位的实际地址,把存储器寻址空间从64K扩大到 1M ,极大地扩大了微型计算机的程序存储空间,从而大大提高了程序运行效率。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 36 页 - - - - - - - - - WORD 格式专业资料整理3.8086CPU中有哪些寄存器?分组说明用途。哪些寄存器用来指示存储器单元的偏移地址?名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 36 页 - - - - - - - - - WORD 格式专业资料整理答:8086CPU 中有 8 个通用寄存器 AX 、BX 、CX 、DX 、SP 、BP 、SI、DI;两个控制寄存器IP、FL;四个段寄存器 CS 、DS 、SS 、ES 。8 个通用寄存器都可以用来暂存参加运算的数据或中间结果,但又有各自的专门用途。例如, AX专用做累加器,某些指令指定用它存放操作数和运算结果;CX为计数寄存器,在某些指令中做计数器使用;DX为数据寄存器; BX为基址寄存器, BP为基址指针, SI 为源变址寄存器,DI 为目的变址寄存器,这4 个寄存器在数据寻址中用来存放段内偏移地址(有效地址)或段内偏移地址的一部分; SP为堆栈指示器,用来存放栈顶有效地址。两个控制寄存器用来存放有关的状态信息和控制信息。例如,标志寄存器FL用来存放状态标志和控制标志;而指令指针用来存放下一条要取指令的有效地址。四个段寄存器用来存放段地址。例如,CS寄存器用来存放代码段的段地址;DS寄存器用来存放数据段的段地址; SS寄存器用来存放堆栈段的段地址;ES寄存器用来存放扩展段的段地址。4.8086 系统中存储器的逻辑地址由哪两部分组成?物理地址由何器件生成?如何生成?每个段的逻辑地址与寄存器之间有何对应关系?答:8086 系统中存储器的逻辑地址由段地址(段首址)和段内偏移地址(有效地址)两部分组成;存储单元的物理地址由地址加法器生成,寻址时,CPU 首先将段地址和段内偏移地址送入地址加法器,地址加法器将段地址左移4 位并与段内偏移地址相加,得到一个20 位的物理地址。数据段的段地址在DS寄存器中,段内偏移地址可能在BX 、 BP 、SI 或 DI 寄存器中。代码段的段地址在CS寄存器中,段内偏移地址在 IP 寄存器中。堆栈段的段地址在SS寄存器中,段内偏移地址在SP寄存器中。扩展段的段地址在 ES寄存器中,段内偏移地址可能在BX 、BP 、SI 或 DI 寄存器中。5. 设 CPU 中各有关寄存器的当前状况为:SS=0a8bH 、 DS=17ceH 、 CS=dc54H 、 BX=394bH 、 IP=2f39H 、 SP=1200H ,BX给出的是某操作数的有效地址,请分别写出该操作数、下一条要取的指令及当前栈顶的逻辑地址和物理地址。答:该操作数的逻辑地址为DS :BX=17CE :394BH ,物理地址 =17CEH*10H+394BH=1B62; BH下一条要取的指令的逻辑地址为CS :IP=DC54 :2F39H ,物理地址=DC54H*10H+2F39H=DF47; 9当H前栈顶的逻辑地址 =SS :SP=0A8B :1200H ,物理地址 =0A8BH*10H+1200H=0BAB。 0H 6. 若 DS=157DH 时,某操作数的物理地址是215FAH ,当 DS=18DEH 时,该操作数的物理地址是多少?答:该操作数的段内偏移地址=该操作数的物理地址 -DS=215FAH-157D0H=BE2AH故 , 当 DS=18DEH 时,该操作数的物理地址 =DS*10H+BE2AH=18DE0H+BE2AH=24C0AH 7. 设 AX=2875H 、BX=34DFH 、SS=1307H 、SP=8H ,依此执行 PUSHAX、PUSHBX、POPAX 、POPCX 后栈顶指针变为多少? AX= ?BX= ?CX= ?答:当前栈顶指针 =SS*10H+SP=13070H+8H=1307, 8H依此执行 PUSHA、XPUSHBX、POPAX 、POPCX 后栈顶指针仍为 13078H 。但 AX=34DF ,HBX=34DF ,HCX=2875H 。1. 假定( BX )=637DH ,(SI)=2A9BH ,位移量 D=3237H ,试确定在以下各种寻址方式下的有效地址是什么?(1)立即寻址(2)直接寻址(3)使用 BX的寄存器寻址(4)使用 BX的间接寻址(5)使用 BX的寄存器相对寻址(6)基址变址寻址(7)相对基址变址寻址名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 36 页 - - - - - - - - - WORD 格式专业资料整理答:( 1)立即数寻址的有效地址是当前IP 的内容;(2)直接寻址,若使用位移量D=3237H 进行,则有效地址为3237H ;(3)使用 BX的寄存器寻址时,操作数在BX寄存器中,因此无有效地址;(4)使用 BX的间接寻址时,有效地址在BX寄存器中,即有效地址 =637DH ;(5)使用 BX的寄存器相对寻址的有效地址=(BX )+D=637DH+3237H=95B;4H (6)基址变址寻址的有效地址=(BX )+(SI)=637DH+2A9BH=8E1;8H (7)相对基址变址寻址的有效地址=(BX )+(SI)+D=C050 ;H2. 写出把首地址为BLOCK 的字数组的第 6 个字送到 DX寄存器的指令。要求使用以下几种寻址方式:(1)寄存器间接寻址(2)寄存器相对寻址(3)基址变址寻址答:( 1)使用寄存器间接寻址,把首地址为BLOCK 的字数组的第 6 个字送到 DX寄存器的指令为:MOVBX,BLOCK ADDBX ,12 MOVDX,BX (2)使用寄存器相对寻址,把首地址为BLOCK 的字数组的第 6 个字送到 DX寄存器的指令为:MOVBX,BLOCK MOVDX,BX+12 (3)使用基址变址寻址,把首地址为BLOCK 的字数组的第 6 个字送到 DX寄存器的指令为:MOVBX,BLOCK MOVSI ,12 MOVDX,BX+SI 3. 现有(DS)=2000H ,(BX)=0100H ,(SI)=0002H ,(20100H)12H ,(20101H)=34H ,(20102H)=56H ,(20103H)=78H,(21200H)=2AH ,(21201H)=4CH ,(21202H)=B7H ,(21203H)=65H ,试说明下列各条指令执行完后 AX寄存器的内容。(1)MOVAX, 1200H (2)MOVAX, BX (3)MOVAX, 1200H (4)MOVAX, BX (5)MOVAX, BX+1100 (6)MOVAX, BX+SI (7)MOVAX, BX+SI+1100 答:( 1)指令 MOVAX,1200H执行完后 AX寄存器的内容为 1200H ;(2)指令 MOVAX,BX执行完后 AX寄存器的内容为 0100H ;(3)指令 MOVAX,1200H 是将从物理地址 =( DS )*10H+1200H=21200H 开始的两个单元内容送AX ,执行完后 AX寄存器的内容为 4C2AH ;(4)指令 MOVAX,BX 是将从物理地址 =(DS )*10H+(BX )=20100H开始的两个单元内容送AX ,故执行完后 AX寄存器的内容为 3412H ;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 36 页 - - - - - - - - - WORD 格式专业资料整理(5)指令 MOVAX,BX+1100是将从物理地址 =(DS ) *10H+(BX )+1100H=21200H 开始的两个单元内容送 AX ,故执行完后 AX寄存器的内容为 4C2AH ;(6)指令 MOVAX,BX+SI 是将从物理地址 =( DS )*10H+(BX )+(SI)=20102H开始的两个单元内容送 AX ,故执行完后 AX寄存器的内容为 7856H ;(7)指令 MOVAX,BX+SI+1100 是将从物理地址 =(DS ) *10H+(BX )+(SI)+1100H=21202H 开始的两个单元内容送AX ,故执行完后 AX寄存器的内容为65B7H ;4. 假设已知 (DS)=2900H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H , (BP)=0010H,数据段中变量名 VAL的偏移地址值为0050H ,试指出下列源操作数字段的寻址方式是什么?其物理地址值是多少?(1)MOVAX, 0ABH (2)MOVAX,BX (3)MOVAX, 100H (4)MOVAX,VAL (5)MOVAX, BX (6)MOVAX,ES:BX (7)MOVAX, BP (8)MOVAX,SI (9)MOVAX, BX+10(10)MOVAX,VALBX (11)MOVAX,BXSI(12)MOVAX,BPSI 答:(1)在指令 MOVAX,0ABH中,源操作数字段的寻址方式是立即数寻址,其物理地址值= (CS )*10H+ (IP);(2)在指令 MOVAX,BX中,源操作数字段的寻址方式是寄存器寻址,操作数在BX中,无物理地址;(3)在指令 MOVAX, 100H 中,源操作数字段的寻址方式是直接寻址,其物理地址值= (DS ) *10H+100 =29000H+100H=2910 ; 0 (4)在指令 MOVAX,VAL中,源操作数字段的寻址方式是直接寻址,其物理地址值= (DS )*10H+50H =29000H+50H=29050 ; H (5)在指令 MOVAX,BX 中,源操作数字段的寻址方式是寄存器间接寻址,其物理地址值=(DS )*10H+( BX )=29000H+100H=29100 ; H (6)在指令 MOVAX,ES :BX 中,源操作数字段的寻址方式是寄存器间接寻址,其物理地址值= (ES )*10H+(BX ) =21000H+100H=21100 ; H (7)在指令 MOVAX,BP 中,源操作数字段的寻址方式是寄存器间接寻址,其物理地址值=(SS )*10H+( BP )=15000H+10H=15010 ; H (8)在指令 MOVAX,SI 中,源操作数字段的寻址方式是寄存器间接寻址,其物理地址值=(DS )*10H+( SI)=29000H+0A0H=290A0; H (9)在指令 MOVAX,BX+10中,源操作数字段的寻址方式是寄存器相对寻址,其物理地址值= (DS )*10H+(BX ) +0AH=29000H+100H+0AH=2910A; H (10)在指令 MOVAX,VALBX中,源操作数字段的寻址方式是寄存器相对寻址,其物理地址值= (DS )*10H+(BX ) +50H=29000H+100H+50H=29150; H (11)在指令 MOVAX,BXSI中,源操作数字段的寻址方式是基址变址寻址,其物理地址值= (DS )*10H+(BX ) +( SI)=29000H+100H+0A0H=291A0; H (12)在指令 MOVAX,BPSI中,源操作数字段的寻址方式是基址变址寻址,其物理地址值= (SS )*10H+(BP ) +( SI)=15000H+10H+0A0H=150B0H 5. 分别指出下列指令中的源操作数和目的操作数的寻址方式。(1) MOVSI ,200名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 36 页 - - - - - - - - - WORD 格式专业资料整理(2) MOVCX,DATASI (3) ADDAX ,BX+DI (4) ANDAX ,BX (5) MOVSI,AX (6) PUSHF 答:( 1)目的操作数字段的寻址方式是寄存器寻址,源操作数字段的寻址方式是立即数寻址;(2)目的操作数的寻址方式是寄存器寻址,源操作数的寻址方式是寄存器相对寻址;(3)目的操作数的寻址方式是寄存器寻址,源操作数的寻址方式是基址变址寻址;(4)目的操作数的寻址方式是寄存器寻址,源操作数的寻址方式也是寄存器寻址;(5)目的操作数的寻址方式是寄存器间接寻址,源操作数的寻址方式是寄存器寻址;(6)目的操作数的寻址方式是寄存器间接寻址,源操作数的寻址方式是寄存器寻址;6. 试述指令 MOVAX, 2010H和 MOVAX,DS:2010H的区别。答:指令 MOVAX,2010H是将立即数 2010H送 AX寄存器,而指令 MOVAX,DS:2010H 是将 DS段有效地址为 2010H的两个单元的内容送AX 。7. 写出以下指令中内存操作数的所在地址。(1)MOVAL,BX+5 (2)MOVBP+5 ,AX (3)INCBYTEPTRSI+3 (4)MOVDL,ES:BX+DI(5)MOVBX,BX+SI+2 答:( 1)指令 MOVAL ,BX+5中内存操作数的所在地址 =(DS )*10H+(BX )+5;(2)指令 MOVBP+5,AX中内存操作数的所在地址 =(SS )*10H+(BP )+5 和(SS )*10H+(BP )+6;(3)指令 INCBYTEPTRSI+3 中内存操作数的所在地址 =(DS )+(SI)+3;(4)指令 MOVD,LES:BX+DI中内存操作数的所在地址=(ES )*10H+(BX ) +( DI);(5)指令 MOVBX,BX+SI+2 中内存操作数的所在地址 =(DS )*10H+(BX )+(SI)+2 和(DS )*10H+ (BX )+(SI)+3;8. 判断下列指令书写是否正确,如有错误,指出错在何处并用正确的程序段(一条或多条指令)实现原错误指令 (8) 、(13) 除外) 期望实现的操作。(1)MOVAL,BX (9)MOVES,3278H (2)MOVAL,SL(10)PUSHAL (3)INCBX(11)POPBX (4)MOV5,AL( 12)MOV1A8H ,23DH (5)MOVBX ,SI (13)PUSHIP (6)MOVBL,F5H ( 14)MOVAX ,23DH (7)MOVDX,2000H ( 15)SHLAX ,5 (8)POPCS( 16)MULAX ,BX 答:(1)MOVAL,BX错,源操作数为字类型,目的操作数为字节类型,二者不一致。应改为:MOVAX,BX 或 MOVAL,BL ;(2)MOVAL,SL 错,SI 寄存器不能分为高8 位和低 8 位使用,即没有 SL寄存器。应改为: MOVAX,SI名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 36 页 - - - - - - - - - WORD 格式专业资料整理(3)INCBX错,未指定操作数的类型。应改为:INCBYTEPTRBX (4)MOV5,AL 错,目的操作数使用了立即数,在指令中一般不允许。应改为:MOVDS:5,AL (5)MOVBX,SI 错,源操作数和目的操作数均为内存单元,不允许。应改为: MOVAX,SI MOVBX,AX (6)MOVBL,F5H 错,源操作数错,以A F开头的数字前应加0。应改为: MOVBL,0F5H (7)MOVDX,2000H 正确。(8)POPCS 错,不能将栈顶数据弹至CS中。(9)MOVES,3278H错,立即数不能直接送ES寄存器。应改为: MOVAX,3278H MOVES,AX (10)PUSHAL 错,栈操作不能按字节进行。应改为:PUSHAX (11)POPBX 正确。(12)MOV1A8H,23DH 错,源操作数是立即数,目的操作数必须使用寄存器指出。应改为:MOVBX,1A8H MOVBX,23DH (13)PUSHIP 错,不能用 IP 寄存器做源操作数。(14)MOVAX,23DH 错,不能用 AX寄存器间接寻址。应改为:MOVBX,AX MOVBX ,23DH (15)SHLAX,5错,不能用大于己于1 的立即数指出移位位数。应改为:MOVC,L5 SHLAX ,CL (16)MULAX,BX 错,目的操作数 AX是隐含的,不能在指令中写出。应改为:MULBX 9. 设堆栈指针 SP的初值为 2000H , AX=3000H ,BX=5000H ,试问 : (1)执行指令 PUSHAX 后(SP)=?(2)再执行 PUSHBX 及 POPAX 后(SP)=?(AX)=?(BX)=?答:( 1)执行指令 PUSHAX 后(SP)=2000H-2=1FFEH; (2)再执行 PUSHBX 及 POPAX 后(SP)=1FFEH,(AX)=5000H,(BX)=5000H 10. 要想完成把 2000H 送1000H 中,用指令 :MOV1000H ,2000H 是否正确?如果不正确,应用什么方法?答:把 2000H 送1000H 中,用指令 MOV1000H , 2000H 不正确,应改为: MOVAX,2000HMOV 1000H,AX 11. 假如想从 200 中减去 AL中的内容,用 SUB200 ,AL是否正确?如果不正确,应用什么方法?答:想从 200中减去 AL中的内容,用 SUB200 ,AL不正确,应改为: MOVBL,200SUBBL,AL 12 分别写出实现如下功能的程序段(5) 将数据段中以 BX为偏移地址的连续四个单元的内容颠倒过来答:(5) 将数据段中以 BX为偏移地址的连续四个单元的内容颠倒过来的程序段是:MOVAL,BX ;数据段中 BX为偏移地址的字单元内容送AX名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 36 页 - - - - - - - - - WORD 格式专业资料整理XCHGAL,BX+3 ;数据段中 BX+3为偏移地址的字单元内容与AX的内容交换MOVBX,AL ;数据段中 BX+3为偏移地址的字单元内容送BX为偏移地址的字单元MOVAL,BX+1 ;数据段中 BX+1为偏移地址的字单元内容送AX XCHGAL,BX+2 ;数据段中 BX+2为偏移地址的字单元内容与AX的内容交换MOVBX+1,AL ;数据段中 BX+2为偏移地址的字单元内容送BX+1为偏移地址的字单元1. 假设 OP1 ,OP2是已经用 DB定义的变量 ,W_OP3 和 W_OP4 是已经用 DW 定义的变量,判断下列指令书写是否正确?如有错误,指出错在何处?并写出正确的指令(或程序段)实现原错误指令期望实现的操作 (19) 、(20) 不改)。(1)PUSHOP1 (2)POPW_OP4 (3)MOVAX,WORDPTRSIDI (4)MOVAX,WORDPTRES:BX (5)MOVBYTEPTRBX,1000 (6)MOVBX,OFFSETSI+200H (7)MOVOP2,BX (8)CMPHIGHW_OP3,25 (9)CMPOP1,OP2 (10)CMPAX,OP2 (11)MOVW_OP3BX+4*3DI,SP (12)ADDW_OP3,W_OP4 (13)MOVAX,W_OP3DX (14)MOVOP1,LOWDS (15)MOVSP,OP2BXSI (16)MOVAX,W_OP3+W_OP4 (17)MOVAX,W_OP3-W_OP4+100 (18)SUBAL,W_OP3+7 (19)MOVAX,BXSHL2 (20)MOVBX,W_OP3AND8FD7H 答:1.(1)PUSHOP1错,OP1为字节类型 , 栈操作不能按字节进行,应改为:PUSHWORDPTROP1 (2)POPW_OP4 正确。(3)MOVAX,WORDPTRSIDI 错,源操作数寻址方式有问题。应改为 :MOVBX,SI MOVAX,WORDPTRBXDI (4)MOVAX,WORDPTRES:BX错,若源操作数为寄存器寻址是不能加段说明及属性修改的。显然, 原意应为寄存器间接寻址 , 故应改为 :MOVAX,WORDPTRES:BX (5)MOVBYTEPTRBX,1000 错,源操作数为字类型,目的操作数为字节类型,二者不一致。应改为:MOVWORD PTRBX,1000 (6)MOVBX,OFFSETSI+200H 错,OFFSET 运算应在汇编时完成 , 但SI+200H 在执行指令时才可获得。应改为:LEA BX,SI+200H名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 36 页 - - - - - - - - - WORD 格式专业资料整理(7)MOVOP2,BX错,源操作数和目的操作数均为内存单元,不允许。应改为 :MOVAL,BX MOVOP2,AL (8)CMPHIGHW_OP3,25错,目的操作数中使用 HIGH来分离存储器操作数,这是不允许的。应改为:CMPBYTEPTR W_OP3+1,25 (9)CMPOP1,OP2 错,源操作数和目的操作数均为内存单元,不允许。应改为 :MOVAL,OP2 CMPAL,OP1 (10)CMPAX,OP2 错,源操作数为字节类型,目的操作数为字类型,二者不一致。应改为 :CMPAX,WORDPTROP2 (11)MOVW_OP3BX+4*3DI,SP正确。(12)ADDW_OP3,W_OP4错,源操作数和目的操作数均为内存单元,不允许。应改为 :MOVAX,W_OP4 ADDW_OP3,AX (13)MOVAX,W_OP3DX错,不能用 DX寄存器间接寻址。应改为 :MOVBX,DXMOVAX, W_OP3BX (14)MOVOP1,LOWDS错,源操作数中使用LOW 来分离寄存器操作数,这是不允许的。应改为 :MOVWORDPTROP1,DS (15)MOVSP,OP2BXSI 错,源操作数为字节类型,目的操作数为字类型,二者不一致。应改为:MOVSP,WORDPTR OP2BXSI (16)MOVAX,W_OP3+W_OP4错,两个标识符相加无意义。应改为:MOVAX,W_OP1 ADDAX,W_OP2 (17)MOVAX,W_OP3-W_OP4+100正确, 源操作数为两个标识符(地址)相减再加一数,汇编时得到一个数。(18)SUBAL,W_OP3+7 错,两个操作数类型不一致。应改为:SUBAL,BYTEPTRW_OP3+7 (19)MOVAX,BXSHL2 错,SHL只能对常量进行运算 , 左边不能使用寄存器(20)MOVBX,W_OP3AND8FD7H错,AND只能对常量进行运算 , 左边不能使用变量4. 设已定义数据段DATASEGMENT , VAR2DW10H, 7889H , VAR5DB20H, 0 ADRRDWVAR2,VAR5 DATAENDS 为使 ADRR 字存储单元中存放内容为“0010H ”,ADRR 2 字存储单元中存放内容为“0020H ”,上述省略号位置应分别填写一条什么语句?说明理由。答:为使 ADRR 字存储单元中存放内容为“0010H ”,ADRR 2 字存储单元中存放内容为“0020H ”,上述省略号位置应分别填写ORG10H 和 ORG20H, 或者分别填写语句名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 36 页 - - - - - - - - - WORD 格式专业资料整理VAR1DB10HDUP(?)和 VAR36DUP(?) 5. 下面的数据段中,有数据为4100H 的字存储单元有几个?它们的偏移量分别是多少?DATASEGMENT DA1DB0 ORG41H DA2DB0 ,A ,41H ,0,41H ADRDWDA1,DA2 DATAENDS 答:给出的数据段中,有数据4100H 的字存储单元有3 个, 它们的偏移量分别是41H 、44H 、47H 。7. 试用数据定义语句DB或 DW 改写下述两语句中的某一个,使它们在存储器中有完全相同的存储情况。VAR1DB abcdefghijVAR2DW6162,H6364H , 6566H ,6768H ,696AH 答:将第一个伪指令语句改写为VAR1DWab, cd, ef , gh, ij ,第二个伪指令语句不变。或第一个伪指令语句不变,而将第二个伪指令语句改写为:VAR2DB61H, 62H ,63H ,64H ,65H ,66H ,67H ,68H ,69H ,6AH 9. 按下面的要求写出程序的框架(1) 数据段的位置从 0E000H开始,数据段中定义一个100字节的数组,其类型属性既是字又是字节;(2) 堆栈段从小段开始,段组名(类别名)为STACK ;(3) 代码段中指定段寄存器,指定主程序从1000H开始,给有关段寄存器赋值;(4) 程序结束。答:所求程序框架为:DataSEGMENTAT0E000H Arr_wLABELWORD Arr_bDB100DUP(?) DataENDS Sta_segSEGMENTPARASTACK DB80DUP(?) TopLABELWORD Sta_segENDS CodeSEGMENT ASSUMECS:Code,DS:data,SS:sta_seg ORG1000H Start:MOVAX,data MOVDS,AX MOVAX,Sta_seg MOVSS,AX名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 36 页 - - - - - - - - - WORD 格式专业资料整理MOVSP,OFFSETTop , MOVAH,4CH INT21H CodeENDS ENDStart 10. 编写一个程序,要求运行时屏幕显示BELL ,同时响铃一次 (响铃的 ASCII 码为 07)。答:所求程序为:CodeSEGMENT ASSUMECS:code Start:MOVDL,42H MOVAH,2 INT21H MOVDL,45H MOVAH,2 INT21H MOVDL,4CH MOVAH,2 INT21H MOVDL,4CH MOVAH,2 INT21H MOVDL,7 MOVAH,2 INT21H MOVAH,4CH INT21H CodeENDS ENDStart 11. 假设在数据段 X_SEG 、附加段 Y_SEG 和堆栈段 Z_SEG 中分别定义了字变量X 、Y 和 Z,试编制一完整的程序计算X+Y+Z ,并将结果送 X 。答:所求程序为:X_SEGSEGMENT XDW12eH X_SEGENDS Y_SEGSEGMENT YDW4d2H Y_SEGENDS Z_SEGSEGMENTSTAC KSTACK名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 36 页 - - - - - - - - - WORD 格式专业资料整理ZDW2CAH Z_SEGENDS CodeSEGMENT ASSUMECS:Code,DS:X_SEG,ES:Y_SEG,SS:Z_SEG Start:MOVAX,X_SEG MOVDS,AX MOVAX,Y_SEG MOVES,AX MOVAX,ES:Y ADDX,AX MOVBP,0 MOVAX,BP+Z ADDX,AX MOVAH,4CH INT21H CodeENDS ENDStart 12. 写一个完整的程序放在代码段C_SEG 中,要求把数据段D_SEG 中的 DADD1 和附加段 E_SEG 中的 DADD2 相加,并把结