汇编语言程序设计习题.docx
《汇编语言程序设计习题.docx》由会员分享,可在线阅读,更多相关《汇编语言程序设计习题.docx(15页珍藏版)》请在冰豆网上搜索。
汇编语言程序设计习题
2013年汇编语言程序设计习题
第一章
1.执行下列指令后,正确的结果是( )。
MOVAL,100
MOVBL,-2
A.AL=100H BL=02H B.AL=64H BL=0FEH
C.AL=64H BL=82H D.AL=100H BL=0FEH
1.在计算机中专门有连接CPU和其他芯片的导线,通常称为总线。
总线在逻辑上划分为、和。
2.一个CPU的地址线宽度为10,那么可以寻址个内存单元。
3.十六进制数0FFF8H表示的十进制正数为_______,表示的十进制负数为______。
第二章
1.CPU要访问的某一存储单元的实际地址称()
A.段地址B.偏移地址C.物理地址D.逻辑地址
2.8086存贮器组织是将存储器划分为段,可作为段的起始地址是()。
A.185A2HB.00020HC.01004HD.0AB568H
3.在实模式下,段地址和偏移地址为3017:
000A的存储单元的物理地址为()
A.3017BHB.30170HC.3017AHD.30210H
4.8088/8086存储器分段,每个段不超过()。
A.64K个字节B.32K个字节C.1M个字节D.64K个字节
5.在DEBUG工具中,单步执行指令的命令是()。
A.GB.DC.TD.R
6.指令寄存器IP用来存放代码段中的偏移地址,在程序运行过程中,它始终指向()
A.当前指令的首地址B.当前指令的地址
C.下一条指令的首地址D.下一指令的地址
7.如某存储器分段时,一个段最多允许16K个字节单元,那么表示一个段内偏移地址的二进制位数至少是()
A.14位B.15位C.16位D.17位
8.已知(DS)=2000H,(BX)=1256H,(SI)=528FH,则执行指令JMPBX后,IP寄存器的内容是()。
A.1256HB.2000HC.3256HD.528FH
9.设物理地址(21000H)=20H,(21001H)=30H,(21002H)=40H。
如从地址21001H中取出一个字的内容是()
A.2030HB.3040HC.3020HD.4030H
10.当程序顺序执行时,每取一条指令语句,IP指针增加的值是()。
DX
A.1B.2C.3D.由指令长度决定的
1.8088/8086CPU的逻辑地址由和两部分组成,设某单元的物理地址是12345H,试写出下列二种不同的逻辑地址表示:
1)1000H:
H;2)H:
0345H。
2.8086CPU内部共有个位的寄存器。
第三章
1.若栈顶的物理地址为20100H,当执行完指令PUSHAX后,栈顶的物理地址为()。
A.20098HB.20102HC.200FEHD.20100H
2.设AX=9ABCH,DX=8765H
PUSHAX
PUSHDX
POPAX
POPDX
上述4条指令执行后,AX,DX中内容分别是()。
A.AX=9ABCHDX=8765HB.AX=9ABCHDX=9ABCH
C.AX=8765HDX=8765HD.AX=8765HDX=9ABCH
3.下面程序段执行后,AL中的内容是( )。
MOVAX,8833H
ADDAL,AH
DAA
A.21 B.21H C.0C1H D.0DDH
第四章
1.把汇编源程序变成代码程序的过程是()
A.编译 B.汇编 C.编辑 D.链接
2.汇编语言语句格式中,对名字项的规定,请指出错误的解释()
A.名字的第一个字符只可以是大小写英文字母及?
、@、__等
B.名字的第一个字符可以是大小写英文字母、数字、?
、@、__等
C.名字的有效长度≤31个字符
D.名字从第二个字符起可以出现数字,但不允许出现$、#等字符
3.下面指令中属于伪指令的是()。
A.movax,0B.int21hC.codesegmentD.pushax
4.在汇编语言程序中,对END语句的叙述正确的是()。
A.END语句是一可执行语句C.END语句表示程序执行到此结束
B.END语句表示源程序到此结束D.END语句在汇编后要产生机器码
5.汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是( )。
A.名字项B.操作项C.操作数项D.注释项
6.要实现使BETA的值为56,应采用语句为( )。
A.BETADB56 B.BETADB56H C.BETAEQU56 D.BETAEQU56H
1.利用编译器得到一个可执行文件,需要对编写好的源程序文件(*.asm)进行以得到目标文件(*.obj)和以生成可执行文件(*.exe)。
2.汇编语言程序设计中每个语句的注释项的开始必须用符号,程序结束的伪指令为。
第五六章
1.对CS段寄存器赋段地址的方法是( )
A.MOVAX,COSEB.ASSUMECS:
COSEC.END起始地址
MOVCS,AXD.MOVCS,2050H
2.简述下面两条指令分别是什么语法错误?
MOV[BX],[SI]
MOVAX,DL
3.已知:
BX=1357H,DI=2000H,DS=2000H,CS=4000H,分别指出下面各指令中存储器操作数的物理地址。
(1)MOVAL,[BX]
(2)MOVCS:
[BX+DI],AH
1.数据定义如下,完整编写code段中的代码,使用堆栈将data1中的数据逆序存储到data2中。
assumecs:
code
datasegment
data1dw11h,22h,33h,44h,55h,66h,77h,88h
data2dw8dup(0)
dataends
2.编写程序实现依次用内存0:
0~0:
15单元中的内容改写程序中的数据程序。
assumecs:
codesg
codesgsegment
dw0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
start:
3.程序如下,编写code段中的代码,实现将ARY1和ARY2中的5个数依次相加并存入SUM的5个字单元中。
assumecs:
code,ds:
data
datasegment
ARY1db85H,3AH,0C6H,5FH,70H
ARY2db99H,0B7H,28H,63H,96H
SUMdw5DUP(0)
dataends
4.编写完整汇编程序,要求实现计算1~100各数的累加和(存入dx中),并求这100个数的平均值(存入al中)。
第七章
1.下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是()
A.AX,BX,CX,DXB.BX,BP,SI,DI
C.SP,IP,BP,DXD.CS,DS,ES,SS
2.关于指令movax,[bx+si+idata]的数学化描述正确的是()。
A.(ax)=((ds)*16+(bx)+(si)+idata)B.(ax)=((ds)+(bx)+(si)+idata)
C.(ax)=((bx)+(si)+idata)D.ax=(bx)+(si)+idata
3.下列属于合法的指令是()。
A.MOVDS,ESB.MOV[SI],[DI]C.MOVAX,BLD.MOV[DI],BL
4.AND,OR,XOR,NOT为四条逻辑运算指令,下面的解释正确的是( )。
A.指令XORAX,AX执行后,AX内容不变,但设置了标志位
B.指令ORDX,1000H执行后,将DX最高位置1,其余各位置0
C.指令ANDAX,OFH执行后,分离出AL低四位
D.NOTAX,执行后,将AX清0
1.8088/8086CPU在指令中可以作为寄存器间接寻址访问存储单元的4个寄存器是、、、。
2.设AL中高低4位分别有大于7的数,
MOVAH,AL
ANDAH,88H
MOVAL,AH
ORAL,11H
程序段运行后,AH=_________,AL=_________。
3.若DS=0F3EH,SI=2000H,COUNT=0A8H,指令MOVAX,[SI+COUNT]中,源操作数的有效地址EA为________,其物理地址为________。
4.DATASEGMENT
TA1DW0102H,0304H,0506H
TA2DB02H,03H,04H
:
MOVBX,DS:
[0006H]
ANDBX,0FFH
ORBH,[BX]
上述指令序列运行后,BX的内容是。
5.下面指令执行后,变量DAB中的内容是。
DAWDW2A05H
DABDB0FAH
:
MOVAL,BYTEPTRDAW
SUBDAB,AL
第八十六章
1.设DS=8225H,DI=3942H,指令NEGBYTEPTR[DI]操作数的物理地址是()
A.85B92HB.86192HC.BB690HD.12169H
2.下面各传送指令中,正确的是()
A.MOV[DI],[SI]B.MOV[DX+DI],AL
C.MOVWORDPTR[BX],0100HD.MOVAL,BX
3.已知(AX)=1234H,执行下述三条指令后,(AX)=()。
MOVBX,AX
NEGBX
ADDAX,BX
A.1234H B.0EDCCH C.6DCCH D.0000H
4.BUF DW 10HDUP(3DUP(2,10H),3,5)
上述语句汇编后,为变量BUF分配的存储单元字节数是( )。
A.100 B.100H C.50 D.50H
5.BUFDB12H,34H
MOVAX,WORDPTRBUF
上述指令语句执行后AX中的内容是()
A.3412HB.1234HC.0200HD.0012H
6.设数据段中已有:
DA1DB12H,34H
DA2DW56H,78H
下面有语法错误的语句是()。
A.ADR1DWDA1B.MOVDA1+1,AX
C.MOVBYTEPTRDA2+1,ALD.MOVWORDPTRDA1+1,AX
7.DA1DW‘AB’,‘CD’,‘EF’,‘GH’()
┇
MOVAX,DA1+3
指令执行后AX中的内容是
A.‘EF’B.‘CD’C.‘BC’D.‘FC’
1.0P1DB1,2
0P2DW3412H,5678H
┇
MOVAX,OP1+1;字单元(OP1+1)AX
MOVBL,OP2+1;字节单元(OP2+1)BL
上述二条传送语句有语法错误,请根据注释字段的说明,将其改正。
2.下列语句在存储器中分别为变量分配多少字节?
(1)AD2DW10DUP(?
),10
(2)AD3DD100DUP(?
)
1.程序段执行后,写出DA2各字节中的数据:
、、、。
DA1DB′01234′
DA2DB5DUP(0)
MOVSI,0
MOVCX,5
LOP:
MOVAL,DA1[SI]
ADDAL,11H
ORAL,01H
MOVDA2[SI],AL
INCSI
LOOPLOP
2.以下指令执行后,DA2中的内容是,AL的内容为。
DAlDW1234H
DA2DB0FFH
……
MOVAL,BYTEPTRDAl
SUBDA2,AL
3.已知数据段中定义
DAT1DB 12H,34H,56H,78H
MOVCX,0
MOVAX,WORDPTRDAT1
MOVCL,DAT1+3
当程序段执行完后AX=________,CX=________。
4.以下指令执行后,(AX)=;(BX)=。
MOVBX,1
SUBAX,AX
MOVCX,5
NEXT:
ADDAX,BX
INCBX
LOOPNEXT
5.以下程序段运行后,AL=_______,BL=________。
DEC2DB′56′
SUBDI,DI
MOVBL,DEC2[DI+1]
ANDBL,0FH
MOVAL,DEC2[DI]
ANDAL,0FH
MOVDL,10
MULDL
ADDAL,BL
6.执行下列指令后,(AX)=,SI=。
VAR1DW1234H,89H,255H,FEH,F5H
VAR2DB34H,78H,44H,22H,19H,F4H
MOVAH,23H
MOVBX,OFFSETVAR1
MOVAL,BYTEPTR[BX+1]
MOVSI,WORDPTRVAR2+3
7.在NUMW单元存放有一个0-65535范围内的整数,将该数除以500,商和余数分别存入QU1和REM单元,请在空行处各填上一条指令完善该程序。
MOVAX,NUMW
______
XORDX,DX
DIVBX
MOVQUI,AX
______
第九章
1.无条件转移指令JMP实现段间间接转移,转移的目标地址在()
A.某个字存储单元中B.某个双字存储单元中
C.某个16位通用寄存器中D.两个16位通用寄存器中
1.如JMP指令采用段间间接寻址,那么由4个相邻字节单元中存放有转移地址,其中前两个字节存放的是________,而后两个字节存放的是________。
1.编写程序,利用jcxz指令,实现在内存2000H段中查找第一个值为0的字节,找到后,将它的偏移地址存储在dx中。
第十一章
1.8086/8088系统执行传送指令MOV时()。
A.不影响标志位B.影响DF方向标志
C.影响SF符号标志D.影响CF进位标志
2.已知AL=79H,BL=0B1H,则指令ADDBL,AL执行后,OF和CF的值分别为()。
A.0,0B.0,1C.1,0D.1,1
3.设(SS)=33A8H,(SP)=1230H,执行PUSHBX和PUSHF两条指令后,堆栈顶部的物理地址是()。
A.34CB0HB.34CAEHC.34CACHD.34CAAH
4.设DF=1,每次执行MOVSB指令时,SI和DI均要分别()。
A.减1B.减2C.加1D.加2
5.当CX=0时REPMOVSB执行的次数为()。
A.1次B.0次C.65535次D.65536次
6.执行后使BX=0的同时也使CF=0,OF=0的指令是( )。
A.XORBX,BX B.ORBX,BX C.ANDBX,BX D.CMPBX,BX
7.循环指令LOOPNZ终止循环的条件是()。
A.CX=0,且ZF=0B.CX=0,或ZF=1
C.CX≠0,且ZF=0D.CX≠0,或ZF=1
8.比较两个无符号的数A、B,当A≥B时程序转移的指令为()。
A.JAB.JNAC.JBD.JNB
8.检查二个无符号数的关系,若要实现AL≥BL时分支去LOP1处,那么在“CMPAL,BL”指令后应跟的分支指令是( )。
A.JNCLOP1 B.JA LOP1 C.JCLOP1 D.JGE LOP1
9.比较两个带符号的数A、B,当A=B时程序转移,测试的条件为( )。
A.ZF=1 B.ZF=0 C.SF=1 D.SF=0
1.CPU的标志寄存器中标志位,可以分为两大类,其中一类称为________标志位,另一类称为________标志位。
2.当标志位________=1时表示无符号数运算产生溢出,而当标志位________=1是表示带符号数运算产生溢出。
3.设有数据定义如下:
ARRAYDW1000H,2000H,3000H,4000H,5000H
BUFDW?
要求完成:
(1)用一条指令完成将ARRAY的偏移地址送BX;
(2)用一条指令完成将ARRAY的第一字节单元内容送AL;
(3)用一条指令完成将ARRAY数组的长度(字节数)送CX。
4.已知AX=0FF70H,BX=30H,CF=1,以下指令执行后,AX=,BX=。
ORBX,0FF40H
SBBAX,BX
5.以下程序段完成的功能是:
,程序运行后AX=。
MOVBL,64H
MOVCL,03H
SUBAX,AX
AGAIN:
ADDAL,BL
ADCAH,0
DECCL
JNEAGAIN
6.DA1DB83H,72H,61H,94H,5AH
┇
MOVCX,WORDPTRDA1
ANDCX,0FH
MOVAL,DA1+3
SHLAL,CL
上述指令序列执行后,AL=_______,CL=_______。
7.下面程序段执行后(A2)=__________,(A3)_________。
A1DB65H
A2DB?
A3DB?
┇
MOVAL,A1
MOVCL,4
SHRAL,CL
ADDAL,30H
MOVA2,AL
MOVAL,A1
ANDAL,0FH
ORAL,30H
MOVA3,AL
8.下列程序段实现将数据区ABUFl首址开始的100个字节数据传送到ABUF2为首址的数据区去。
CLD
MOVSI,OFFSETABUFl
______________
MOVCX,100
9.以下指令执行后,(SP)=;(DX)=;(CX)=;(ZF)=。
11A3H:
2000HMOVAL,0
11A3H:
2002HMOVAX,CS
11A3H:
2004HMOVSS,AX
11A3H:
2006HMOVSP,2FF0H
11A3H:
2009HMOVDX,2012H
11A3H:
200CHPUSHDX
11A3H:
200DHCALL2700H
11A3H:
2010HADDCX,DX
11A3H:
2012HRET
11A3H:
2700HPOPCX
RET
3.编程,将datasg中以'.'结尾的字符串中的小写字母改为大写。
assumecs:
codesg
datasgsegment
db"Beginner'sAll-purposeSymbolicInstructionCode."
datasgends
第十二/十三/十五章/十七章中断
1.使用DOS功能调用时,子程序编号应放在()。
A.ALB.AHC.AXD.任意指定
2.INT4AH在中断向量表中的物理地址是()。
A.0:
127HB.0:
128HC.0:
12CHD.0:
12DH
3.在8086中,若I/O端口号超过255,则通常是由()寄存器提供。
A.AXB.BXC.CXD.DX
4.使用DOS系统功能调用时,使用的软中断指令是()。
A.INT21B.INT10HC.INT16HD.INT21H
5.下列说法正确的是()。
A.用户可以编程修改FFFF:
0处的指令,使得CPU不去执行BIOS中的硬件系统检测和初始化程序。
B.int19h中断例程,可以由DOS提供。
C.在BIOS键盘缓冲区中,一个键盘输入用一个字单元存放,高位字节存放扫描码,低位字节存放字符码。
D.若IF=0,则外部中断均不能响应。
6.下列关于中断的说法不正确的是()。
A.8086CPU用中断类型码通过中断向量表找到相应的中断处理程序的入口地址。
B.在in和out指令中,只能使用ax或al来存放从端口中读入的数据或要发送到端口中的数据。
C.在PC系统中,外中断源分可屏蔽中断和不可屏蔽中断两类。
D.int19H中断例程可以由DOS提供。
5.设(SP)=001EH,执行返回指令RET后(SP)=;执行中断返回指令IRET后(SP)=。
7.8086不可屏蔽中断的中断类型码为,其不受标志寄存器的位控制。
8.用Debug查看内存,结果如下:
0000:
00000011223344556677-8899AABBCCDDEEFF
则1号中断源对应的中断处理程序入口地址的段地址为;偏移地址为。
9.一旦执行指令,8088CPU将处于关中断状态,这时IF=,CPU将不响应中断。
1.编写程序,调用第21号中断例程的9号子程序在屏幕上显示字符串“WelcometoMasm!
”。
2.编写并安装int63h中断例程,功能为完成loop指令的功能。
第十四章
1.要写8位数据到端口1234H中的指令应是()。
A.MOVDX,1234HB.MOVDX,1234H
OUTDX,ALINAL,DX
C.INAX,1234HD.OUTDX,1234H
2.没有语法错误的输入指令是()。
A.INAL,30HB.IN30H,ALC.INDX,ALD.INAL,[BX]
3.指令MOVAX,11011011B执行后AX中的值是()。
MOVCL,3
SHLCL
A.11011011000BB.1l011000BC.00011011BD.00011011011B
4.完成对CL寄存器的内容乘以4的正确操作是( )