1、微机原理与接口技术练习题 一、选择题 1、通常说计算机的内存为32M、64M或128M指的是:(c) A、RAM的容量 B、ROM的容量 C、RAM和ROM的容量 D、硬盘的容量 2、汇编语言的优点不包括__d___。 A、直接有效地控制硬件 B、生成的代码序列短小 C、运行速度快 D、编程容易 3、十六进制数88H,可表示成下面几种形式,请找出错误的表示(d )。 A.、无符号十进制数136 B、带符号十进制数-120 C、压缩型BCD码十进制数88 D、8位二进制数-8的补码表
2、示 4、下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是(b ) A、AX,BX,CX,DX B、BX,BP,SI,DI C、SP,IP,BP,DX D、CS,DS,ES,SS 5、可用作寄存器间接寻址或基址、变址寻址的地址寄存器,正确的是( d )。 A、.AX,BX,CX,DX B、DS,ES,CS,SS C、SP,BP,IP,BX D、SI,DI,BP,BX 6、当运行结果为0时,ZF=____b______。 A、0 B、1 C、任意 D、不
3、影响 7、某次求和结果最高位为1,则SF=____b______。 A、0 B 、1 C、任意 D、不影响 8、设DS=5788H,偏移地址为94H,该字节的物理地址_____c________。 A、57974H B、5883H C、57914H D、58ECH 9、 “MOV AX,[BP+DI]”指令从_____b_____段取出数据送AX。 A CS B SS C DS D ES 10、下面不能用于寄存器寻址的寄存器有( c ) A、CS B、AX C、IP D、SI E、C
4、L F、SP 11、存储器寻址方式在指令中给出操作数在内存中的地址,该地址是(c) A 逻辑地址 B.有效地址 C偏移地址 D.物理地址 E.段地址 12、堆栈的操作原则是________b_____。 A先进先出 B后进先出 C后进后出 D循环 13、“MOV SP,3210H”和“PUSH AX”指令执行后,SP寄存器值是_c___。 A、3211H B、320EH C、320FH D、3212H 14、假设当前SP=700H,执行pop ax指令后,SP内容变为__d___ A、6FEH
5、B、6FFH C、701H D、702H 15、用一条指令实现将AX←BX+SI的方法是__d____ A 、XCHG AX,[BX][SI] B、 MOV AX,[BX][SI] C、MOV AX,[BX+SI] D、LEA AX,[BX][SI] 16、设AX=1000H,BX=2000H,则在执行了指令“SUB AX, BX”后, 标志位CF和ZF的值分别为________c_____。 A、 0,0 B、0,1 C、1,0 D、1,1 17、设DH=10H,执行NEG DH指令后,正
6、确的结果是( d )。 A.、DH=10H CF=1 B、DH=0F0H CF=0 C、DH=10H CF=0 D、DH=0F0H CF=1 18、IMUL CL指令实现__a____功能 A、有符号乘法:AX←AL×CL B、无符号乘法:AX←AL×CL C、有符号乘法:DX←AL×CL D、无符号乘法:DX←AL×CL 19、执行除法指令后,影响的标志位是___a___ A、所有状态标志都不确定 B、CF OF C、SF、ZF D、AF、PF 20、下列4条指令中,有___a___条指令需要使用DX寄存器 MUL B
7、X、IDIV BL、IN AX,20H、OUT 21H,AL A 1 B 2 C 3 D 4 21、执行下面指令序列后,结果是( a )。 MOV AL,82H CBW A、AX=0FF82H B、AX=8082H C、AX=0082H D、AX=0F82H 22、执行AND AL,80H后,可以肯定的执行结果是AL寄存器的__c_ A最高位为0 B 最高位为1 C低7位均为0 D 低7位均为1 23、指令_a__实现对AX当中D
8、15和D0位设置为0,其他位不变的功能。 A AND AX,7FFEH B OR AX,8001H C XOR AX,8001H D NOT AX 24、指令__b___实现对AX当中D15和D0位设置为1,其他位不变的功能。 A AND AX,7FFEH B OR AX,8001H C XOR AX,8001H D NOT AX 25、执行OR AL,80H后,可以肯定的执行结果是AL寄存器的__b____ A 最高位为0 B最高位为1 C低7位均为0 D低7位均为1 26、指令____
9、c____实现对AX当中D15和D0位求反,其他位不变的功能。 A AND AX,7FFEH B OR AX,8001H C XOR AX,8001H D NOT AX 27、设AX=1000H NEG AX NOT AX 执行上述指令后,AX=__b____ A 1001H B 0FFFH C 1000H D 0111H 28、下列指令中,执行后对标志未发生影响的是__a____。 A MOV AX,[BX] B ADD AX,0FFHH
10、 C AND AX,[BX] D TEST AX,0FFHH 29、执行“SAR BX,1”指令后,BX最高D15位等于___d_______。 A 0 B 1 C D0 D D14 30、对寄存器AX的内容乘以2的指令是__b____。 A SHR AX,1 B SHL AX,1 C ROR AX,1 D RCR AX,1 31、 8086/8088CPU的条件转移指令Jcc采用____a______地址寻址方式。 A相对 B直接 C 寄存器间接 D存储器间接 32、编写分支程序
11、在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有( d )。 A、CMP B、SUB C、AND D、MOV 33、当标志CF=1时转移到目的地址的条件转移指令是____a__ A JC B JNC C JZ D JNZ 34、条件转移指令JA产生程序转移的条件是__b____ A CF=0和ZF=1 B CF=0和ZF=0 C CF=1和ZF=1 D CF=1和ZF=0 35、循环指令LOOPNZ继续循环的条件是___c___ A CX=0,且ZF=0 B CX=0,或ZF=1
12、 C CX≠0,且ZF=0 D CX≠0,或ZF=1 三、判断错对 1、“-46”用原码表示为:(10101110)原码对 2、086/8088系统中,堆栈的操作可以是字节或字操作。错 3、已知AX=1234H、BX=4612H,计算1234-4612的差的算法不能写成下面的形式:对 SUB AX,BX DAS 4、已知CL=23H,指令“CMP CL,CL”执行后标志位的值是:CF=0,ZF=1,SF=0对 5、判断下列8086指令的对错:SHL AX,3错 6、对寄存器AX的内容乘以4的正确指令序列是SHL AX,1;SHL,AX,1 对 7、已知CL=0
13、指令INC CL的执行的结果CF=不变对 8、设DH=10H,执行NEG DH指令后,正确的结果是 DH=0F0H CF=0错 9、下列指令中,执行后对标志未发生影响的是D错 A MOV AX,[BX] BADD AX,0FFHH C AND AX,[BX] D TEST AX,0FFHH 10、对寄存器AX的内容乘以2的指令是SHL AX,1对 11、8088按逻辑段组织程序,数据变量应该且必须在数据段中。错 12、说明性语句可以在任何一个段中。对 13、使用简化段定义源程序格式,必须具有.MODEL语句, 且位于所有简化段定义语句之前。对 14、使用简
14、化段定义源程序格式,必须具有.MODEL语句,但写在何处没有关系.错 15、正误判断题:源程序中只能用标号START表示程序的起始执行点。错 16、完整段定义的程序入口点首先应该设置数据段寄存器的值。对 17、汇编源程序可以用WORD文字处理系统处理,并保存为WORD文档。错 18、对于常数41H,在汇编语言中表达成字符’A’也是正确的, 因’A’的ASCII码就是41H。对 19、 EQU和=两个伪指令的功能和用法一样。错 20、 MOV AX , DI + SI有没有语法错误?错 四.填空题 1、段的定义用的是伪指令()SEGMENT/ENDS 2、程序结束的语句是(
15、解答:MOV AX,4C00H INT 21H 3、用汇编语言编写的程序称为______,它必须用______程序将它转换成二进制的机器语言程序,这种机器语言程序被称为______,而转换的过程称为______。它还必须用______程序连接,才能生成可执行的程序 汇编源程序,汇编程序,目标代码,汇编。连接 4、汇编源程序不可以用word文字处理系统处理,并保存为word,师因为文档汇编源程序必须是纯文本文件 5、在表达存储容量时,1KB=_____B;1MB=___________KB。1024 1024 6、8086/8088CPU的地址线有20条,它的存储容量为_____
16、1MB 1KB=210B=1024B,1MB=220B=210KB=1024KB,1GB=230B=210MB=220KB=1024MB,1TB=240B=230KB=220MB。所以答案:1024/210 1024/210/1K 7、外设与系统之间必须通过________连接。系统通过___________与外设进行通信。 输入输出接口电路(I/O接口) I/O端口 8、机器指令是一组 ___,由__和__构成。机器语言程序常被称作___。二进制代码,操作码 操作数 目标程序 9、对于计算机内部的一个编码:01001001,他代表什么含义01001001作为ASCII
17、码,表示字符I 10、计算1101+11,1101-11,1101*11,1101/11的值。 1101+11=10000 1101-11=1010 1101*11=100111 1101/11=100(余数1)e 11、8086CPU的主存寻址范围是(),数据线有()条 主存寻址空间为1M,数据线有16条eee 12、8086CPU的内部结构分为总线接口(BIU)和执行单元(EU)两大部分。BIU负责CPU对存储器和外设的访问;EU负责指令的译码、执行和数据的运算。 13、完成一条指令的功能可以分为两个主要阶段:(取指令)和(执行指令) 14、Intel 8086 C
18、PU的段寄存器有________________________。 15、Intel 8086 CPU的SP寄存器的主要作用是_____________________________。 16、(CS)=1000H,(DS)=2000H,(ES)=3000H,(SS)=4000H,(DI)=a100,操作数 [DI+1000H] 的寻址方式是_________,物理地址是______ 。 17、标志寄存器中OF标志位的主要作用是_____________________。 18、TEST指令的功能是______________________________。 19、指令LEA__A
19、X, [SI+100H]的具体操作是_____________________。 20、有符号二进制字节数可表示的数的范围是_____________________ 。 五、回答问题 1、说明下列指令中源操作数的寻址方式?如果BX=2000H,DI=40H,给出DX的值或有效地址EA的值。 (1) MOV DX,[1234H] (1)直接寻址,EA=1234H (2) MOV DX,1234H (2)立即数寻址,DX=1234H (3) MOV DX,BX (3)寄存器寻址,DX=2000H (4) MOV DX,[BX] (4)间接寻址,EA=2000H (5) MO
20、V DX,[BX+1234H] (5)相对寻址,EA=3234H (6) MOV DX,[BX+DI] (6)基址变址寻址,EA=2040H (7) MOV DX,[BX+DI+1234H] (7)相对基址变址寻址,EA=3274H 2、已知DS = 2000H、BX = 0100H、SI = 0002H,存储单元[20100H] ~ [20103H]依次存放12 34 56 78H,[21200H] ~ [21203H]依次存放2A 4C B7 65H,说明下列每条指令执行完后AX寄存器的内容。 (1) MOV AX,1200H (1)AX=1200H (2)
21、MOV AX,BX (2)AX=0100H (3) MOV AX,[1200H] (3)AX=4C2AH (4) MOV AX,[BX] (4)AX=3412H (5) MOV AX,[BX+1100H] (5)AX=4C2AH (6) MOV AX,[BX+SI] (6)AX=7856H (7) MOV AX,[BX][SI+1100H] (7)AX=65B7H 3、请分别用一条汇编语言指令完成如下功能: (1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器。 (2)用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与A
22、L寄存器的内容相加,并把结果送到AL中。 (3)用BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和CX寄存器的内容相加,并把结果送回存储器中。 (4)用位移量为0520H的直接寻址方式把存储器中的一个字与数3412H相加,并把结果送回该存储单元中。 (5)把数0A0H与AL寄存器的内容相加,并把结果送回AL中。 (1)ADD DX,BX (2)ADD AL,[BX+SI] (3)ADD [BX+0B2H],CX (4)ADD WORD PTR [0520H],3412H (5)ADD AL,0A0H 六、编程序 1、已知两个八位无符号数x和y,分别存放在B
23、UF和BUF+1单元中,且x>y。请编程序计算x-y,结果存回BUF单元。(4.1)此题为两个八位无符号数相减,我们可以直接使用减法指令SUB来实现。 源程序如下: SSEG SEGMENT STACK ‘STACK’ STA DW 100 DUP(?) SSEG ENDS DSEG SEGMENT ‘DATA’ BUF DB 82,60 DSEG ENDS CSEG SEGMENT ‘CODE’ ASSUME CS:
24、CSEG,DS:DSEG,SS:SSEG START: MOV AX,DSEG MOV DS,AX MOV AL,BUF SUB AL,BUF+1 MOV BUF,AL MO AH,4CH INT 21H CSEG ENDS END START 2、已知DAT单元有一数x。现要求编程将x的低四位变为1010,最高位D7置为1,其它三位不变。
25、MOV AL,DAT ; 取x AND AL,70H ;清低四位和D7位 OR AL,8AH ;置低四位为1010,D7位为1 MOV DAT,AL ;送回DAT单元 3、 DAT单元的内容拆成高、低各四位,然后分别存于DAT+1及DAT+2的低四位。(4.1)、 此类拆字问题一般均采用移位指令。先将DAT单元内容取出,屏蔽高四位,送入DAT+2单元。再将DAT单元内容右移四位。即:将高四位移至低四位,高四位补0,送入DAT+1单元。 程序如下: MOV AL,DAT MOV DAT+2,AL AND
26、DAT+2,0FH MOV CL,4 SHR AL,CL MOV DAT+1,AL HLT 4、在DATA单元有一个二进制数x,要求编程完成运算 x+1 x>0 y= x x=0 x-1 x<0 本题为分支加简单运算。判断条件在零的左右,分支有三条, 程序如下: MOV AL,DATA OR AL,AL JZ L1 JNS I1 DEC AL JMP L1 I1: INC
27、 AL L1: MOV Y,AL HLT 5、编一程序,要求将BUF单元开始的100个存储单元全部清零。只知以0FFH作为结束标志,又该如何处理? 本题所要做的工作是将100个连续单元逐一清零。采用循环的方法最为简单。设置一个循环计数器,每清完一个单元,计数器减1,然后判断计数器是否为0,不为0则再去清一个存储单元,否则清零工作完成。 一般情况下,已知循环次数的,循环判断放在循环体的后面。未知循环次数但已知结束条件的,循环判断置于循环体的前面。 编程如下: LEA BX,BUF MOV CL,64
28、H LP: MOV [BX],0 INC BX DEC CL JNZ LP HLT 注:以上采用字节操作,每次清一个存储单元。也可以采用字操作,每次清两个存储单元。 程序如下: LEA BX,BUF MOV CX,0032H MOV AX,0 LP: MOV [BX],AX ADD BX,2 LOOP LP HLT 注:当不知道所清单元个数但已知结束条件时,可编程序如下: LEA BX,BUF MOV AL,0FFH LP: CMP AL,[BX] JE DONE MOV [BX],0 INC BX JMP LP






