汇编语言程序设计试题一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题2分,共50分)1.CPU发出的访问存储器的地址是()A.偏移地址B.物理地址C.逻辑地址D.段地址2.使计算机执行某种操作的命令是()A.伪指令B.标号C.指令D.助记符3.若AX=3500H,CX=56B8H,当ANDAX,CX指令执行后,AX=()A.1400HB.77F8HC.0000HD.0FFFFH4.计算机处理问题中会碰到大量的字符、符号,对此必须采用统一的二进制编码。目前,微机中普遍采用的是()码。A.BCD码B.二进制码C.十六进制码D.ASCII码5.下列关于8086CPU的工作原理的描述错误的是()。A.汇编程序员可以通过对各种寄存器中内容的修改实现对CPU的控制。B.CPU在访问内存时,采用“段地址*16+偏移地址”的形式给出要访问的内存单元的物理地址。C.任意时刻,CS:IP指向的内容即是此刻CPU正在执行的指令。D.传送指令能够更改所有通用寄存器的内容。6.一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是()A.12C5BHB.12C59HC.12B6BHD.12BFEH7.16位结构的CPU不一定具备的特性是()。A.运算器一次最多可以处理16位的数据B.寄存器的最大宽度为16位C.地址总线为16根D.寄存器和运算器之间的通路为16位8.下列指令的书写正确的是()。A.pushalB.movcs:[0],ds:[10]C.popsiD.movds:[0],29.在DEBUG工具中,显示寄存器内容的命令是()。A.GB.DC.TD.R10.能够将ax中的内容送到内存0000:0200H处的指令序列是()。A.movds,0movbx,200hmov[bx],axB.movax,200hmovds,axmovbx,0mov[bx],axC.movax,20hmovds,axmovbx,0mov[bx],axD.movbx,20hmovds,bxmovbx,0mov[bx],ax11.若栈顶的物理地址为20100H,当执行完指令PUSHAX后,栈顶的物理地址为()。A.20098HB.20102HC.20100HD.200FEH12.执行下列指令后AL寄存器中的值是()MOVAL,0BFHORAL,0FCHA.0ACHB.0FFHC.0DCHD.0BBH13.已知(DS)=2000H,(BX)=1256H,(SI)=528FH,则执行指令JMPBX后,IP寄存器的内容是()。A.1256HB.2000HC.3256HD.528FH14.在程序执行过程中,IP寄存器中始终保存的是()A.上一条指令的首地址B.下一条指令的首地址C.正在执行指令的首地址D.需计算有效地址后才能确定地址15.8088/8086存储器分段,每个段不超过()A.64K个字B.32k个字节C.64k个字节D.1兆个字节16.关于伪指令相关描述错误的是()。A.伪指令没有对应的机器码,只用来指导汇编过程的。B.伪指令由编译器处理,在程序中可有可无。C.编译器要通过执行伪指令才能对源程序进行相应的处理操作,完成编译工作。D.伪指令是汇编语言源程序不可缺少的组成部分。17.下列关于堆栈的说法,错误的是()A.以“先入后出”为原则。B.栈区最高地址单元的前一个单元为栈底。C.运行中SP寄存器动态跟踪栈顶位置。D.压栈和弹出都是以字节为单位。18.关于8086/8088微机系列,下列说法哪个是正确的()A.一个存储单元由16个二进制位组成,简称字。B.当存储一个字数据时,低字节放高地址位,高字节放低地址位。C.在内存中,可以无限分配段,且段的大小不受限制。D.段与段之间可以邻接,也可以重叠。19.1KB的存储器有()个存储单元?A.1000B.1024C.512D.25620.下列程序中,出现逻辑错误的是()。A.assumecs:codecodesegmentmovax,2addax,axmovax,4c00hint21hcodeendB.assumecs:codecodesegmentmovax,2addax,axcodeendsendC.aumecs:codecodesegmentmovax,2addax,axmovax,4c00hint21hcodeendsendD.assumecs:codecodesegmentmovax,2addax,axmovax,4c00hint21hcodeends21.对于如下程序assumecs:codecodesegmentstart:movax,codemovds,axmovax,0020hmoves,axmovbx,0s:moval,[bx]moves:[bx],alincbxloopsmovax,4c00hint21hcodeendsend下列说法正确的是()。A.指令movax,code改为movax,start对程序要实现的功能没有任何影响。B.程序不能通过编译,因为在loop指令之前,没有对寄存器cx进行设定。C.程序实现的功能是将程序的所有指令复制到内存中以0:200h为起始地址的一段内存空间中。D.程序实现的功能是用内存中以0:200h为起始地址的一段内存空间中的数据将程序的所有指令覆盖。22.在Intel8086环境下,下列说法合理的是()。A.汇编语言程序载入内存后处于64K空间以外的数据和指令将无法使用和执行。B.一个数据段命名为data,此标号代表这个数据段在内存中的起始地址。C.如果载入的程序没有返回语句,那么当程序代码执行完毕,将继续读取后续内存空间存储的指令到CPU内部作为指令执行下去,直到遇到返回指令为止。D.用DW定义进行的数据,只能够以字为单位访问。23.若将以2000H为段地址的整个段空间当作栈使用,那么寄存器SP的初始值最合理的设置是()。A.0001HB.0000HC.FFFFHD.FFFEH24.生成EXE之后用Debug加载后,查看寄存器内容如下:ds=0c3ees=0c3ess=0b4ecs=0b4fip=0000程序的起始地址的段地址是()。A.0c4eB.0c3eC.0c4fD.025.在Intel8086环境下,对指令movax,[bx]描述错误的是()。A.指令中,源操作数的段地址默认为ds中的内容B.指令中,源操作数的偏移地址为bx中的内容C.指令执行后,(al)=((ds)*16+(bx)),(ah)=((ds)*16+(bx)+1)D.指令执行后,((ds)*16+(bx))=(al),((ds)*16+(bx)+1)=(ah)二、填空题(每空2分,共30分)1.通常所说的计算机系统包括___硬件_____和___软件_____两大部分。2.8086/8088存储器分四个段,这四个段的段名所对应的段寄存器分别是__DS______、____SS____、_____CS___、__ES____。3.若要源程序从标号START开始执行,源程序结束伪指令的格式为__ENDSTART______。4.8086的地址总线有20根,寻址范围为____1M_______字节。5.汇编语言源程序需经过___编译_________程序汇编,__连接_______程序连接才能生成可执行文件。6.十进制数369转换成8位二进制数为01110001B________,转换成对应的十六进制数为__71H________。7.存储器某单元的地址表示为2314H:4132H,则它的偏移地址=__4132H_______,物理地址=__27272H________。8.movcx,4s:movax,[bx]addbx,2loops上面指令序列,当指令第一次执行到addbx,2时cx的值__5___。三、阅读程序题(每题5分,共10分)1.已知21000h处字单元的内容为BE00H,对于如下程序:(1)movax,2000h(2)movds,ax(3)movbx,1000h(4)movax,[bx](5)incbx(6)incbx(7)mov[bx],ax(8)incbx(9)incbx(10)mov[bx],ax(11)incbx(12)mov[bx],al(13)incbx(14)mov[bx],al程序执行后,内存中字单元2000:1005中的内容为__0000H____。2.assumecs:codecodesegmentstart:movax,3jmps1s:movbx,0movax,bxs1:movcx,3s2:addax,2loops2s3:movax,4c00hint21hcodeendsends上面代码执行到s3处的指令之前,ax的值是_6____。四、完善程序题(每题5分,共10分)1.完善下列程序:实现一次用内存0:0--0:15单元中的数据改写程序中定义的数据。assumecs:codesgcodesgsegmentdw0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hstart:movax,0movds,axmovbx,0movcx,8movax,ds:[bx]movcs:[bx],ax___________addbx,2loopsmovax,4c00hint21hcodesgendsendstart2.完善下列程序:实现计算123与456的乘积。assumecs:codecodesegmentmovax,0Movcx,567S:addax,234Loopsmovax,4c00hint21hcodeendsend