汇编语言程序设计习题集.docx
《汇编语言程序设计习题集.docx》由会员分享,可在线阅读,更多相关《汇编语言程序设计习题集.docx(25页珍藏版)》请在冰豆网上搜索。
汇编语言程序设计习题集
第四章汇编语言程序设计习题集
一、单项选择题
1.用高级语言编写的程序( )。
A.只能在基本种计算机上运行B.无需经过编译或解释,即可被计算机直接执行
C.具有通用性和可移植性D.几乎不占用内存空间
2.一般地,我们将计算机指令的集合称为( )。
A.机器语言B.汇编语言C.模拟语言D.仿真语言
3.我们通常所说的“裸机”指的是( )。
A.只装备有操作系统的计算机B.不带输入输出设备的计算机
C.未装备任何软件的计算机D.计算机主机暴露在外
4.计算机的软件系统一般分为( )两大部分。
A.系统软件和应用软件B.操作系统和计算机语言
C.程序和数据D.DOS和Windows
5.计算机系统软件中的汇编程序是一种( )。
A.汇编语言程序 B.编辑程序
C.翻译程序 D.将高级语言转换成汇编程序的程序
6.假设V1和V2是用DW定义的变量,下列指令中正确的是:
( )
A.MOVV1,20HB.MOVV1,V2
C.MOVAL,V1D.MOV2000H,V2
7.PC机所使用的标准键盘向主机发送的代码是( )
A.ASCII码B.扫描码C.BCD码D.格雷码
8.8086CPU中断号为8的中断矢量存放在( )。
A.0FFFFH:
0008HB.0000H:
0008H
C.0000H:
0020HD.0020H:
0000H
9.已知变量VAR为字型,则TYPEVAR=( )。
A.1B.2C.3D.4
10.汇编语言源程序经MASM汇编后可直接生成的文件是( )。
A..LST B..CRF C..EXE D..OBJ E..ASM F..MAP
11.段定义语句以(B)语句结束。
A.ENDB.ENDSC.ENDPD.ENDM
12.若主程序段中数据段名为DATA,对数据段的初始化操作应为( )。
A.MOVAX,DATA B.MOVAX,DATA
MOVES,AX MOVDS,AX
C.PUSHDS D.MOVDS,DATA
13..EXE文件产生在( )之后。
A.汇编 B.编辑 C.用软件转换 D.连接
14.定义双字变量的定义符是( )。
A.DW B.DQ C.DD D.DT
15.假设VAR为变量,指令MOVBX,OFFSETVAR的寻址方式是( )。
A.直接寻址B.间接寻址C.立即寻址D.存储器寻址
16.执行下列指令:
STR1 DW ‘AB’
STR2 DB16DUP(?
)
CONT EQU$-STR1
MOV CX,CONT
MOV AX,STR1
HLT
后寄存器CL的值是( )。
A. 12H B.0EH C. 0FH D.10H
17.与MOVBX,OFFSETVAR指令完全等效的指令是( )。
A.MOVBX,VAR B.LDSBX,VAR
C.LESBX,VAR D.LEABX,VAR
18.在段定义时,如果定位类型用户未选择,就表示是隐含类型,其隐含类型是( )。
A.WORD B.PAGE C.BYTE D.PARA
19.BUFDW10HDUP(3DUP(2,10H),3,5)
上述语句汇编后,为变量BUF分配的存储单元字节数是( )。
A.80H B.100H C.124 D.192
20.在汇编语言程序的开发过程中使用宏功能的顺序是( )。
A.宏定义,宏调用 B.宏定义,宏展开
C.宏定义,宏调用,宏展开 D.宏定义,宏展开,宏调用
21.汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是( )。
A.名字项 B.操作项 C.操作数项 D.注释项
22.编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有( )。
A.CMP B.SUB C.AND D.MOV
23.为使CX=-1时,转至MINUS而编制了一指令序列,其中错误的序列是( )。
A.INCCXJZMINUS B.SUBCX,OFFFFHJZMINUS
C.ANDCX,OFFFFHJZMINUS D.XORCX,OFFFFHJZMINUS
24.假设V1和V2是用DW定义的变量,下列指令中正确的是( ).
A.MOVV1,20HB.MOVV1,V2
C.MOVAL,V1D.MOV2000H,V2
二.多项选择题(每题有多个正确答案,选出所有正确答案,多选.少选均不得分)
1.变量定义的伪指令助记符有:
( )。
A.DB B.DW C.DD D.DF E.DQ F.DT
2.主程序与子程序之间传递参数可通过( )进行。
A.堆栈 B.存储器单元 C.通用寄存器 D.指令队列 E.其他
3.交换寄存器SI.DI的内容,正确的程序段是( )。
A.PUSHSIB.PUSHSI
PUSHDIPUSHDI
POPSIPOPDI
POPDIPOPSI
C.MOVAX,SID.MOVAX,SI
MOVSI,AXMOVBX,DI
MOVDI,AXXCHGBX,AX
4.过程(子程序)调用的形式有( )。
A.段内直接B.段内间接C.段间直接D.段间间接
三.填空题
1. 23.当要求段的首地址只能被16整除时,需选择的定位方式为__ _。
2.程序段 VAR1 DB?
VAR2 DW20DUP(58H,2DUP(?
))
VAR3 DB‘ABCD’
.
.
.
MOV AX,TYPE VAR1
MOV BX,TYPE VAR2
MOV CX,LENGTHVAR2
MOV DX,SIZEVAR2
MOV SI,LENGTHVAR3
AX= ,BX= ,CX= ,DX= ,SI= 。
3.段定义伪指令语句用 语句表示开始,以 语句表示结束。
4.ARRAY DW10DUP(5DUP(4DUP(20H,40H,60H)))语句执行后共占 字节存储单元。
5.汇编语句中,一个过程有NEAR和FAR两种属性。
NEAR属性表示主程序和子程序 ,FAR属性表示主程序和子程序 。
6.DOS系统功能号应放在 ah 寄存器中。
7.子程序又称 过程,它可以由 语句定义,由 ret语句结束,属性可以是 或 。
8.与指令MOV BX,OFFSETBUF功能相同的指令是 。
9.设有伪指令ADB01H,23H,则执行指令
BDW2DUP(0)
MOVAL,TYPEA后,(AL)=;
MOVBL,SIZEB后,(BL)=。
10.根据下面的指令和伪指令序列,AX寄存器的内容。
TABDB1,2,3,4,5,6
ENTRYEQU3
MOVBX,OFFSETTAB
ADDBX,ENTRY
MOVAX,WORDPTR[BX]
11.将下列文件类型填入空格:
(1).obj
(2).exe(3).crf(4).asm(5).lst(6).map
编辑程序输出的文件有 ;
连接程序输出的文件有 。
12.数据段中有以下定义:
ARRAY1EQU16H
ARRAY2DW16H
请指出下面两条指令的寻址方式:
MOVAX,ARRAY1;寻址方式:
MOVAX,ARRAY2;寻址地址:
四、判断(正确的在括号画“√”,错误的画“×”)
1.汇编语言程序语言必须由四部分组成。
( )
2.汇编语言源程序中所使用的变量,必须在代码段中先定义,后引用。
( )
3.在汇编语言中,一般伪指令语句放在代码段中 ( )
4.逻辑操作符AND、OR、XOR或NOT,只能用于数字表达式。
( )
5.符号定义语句不占内存单元,变量定义语句占内存单元。
( )
6.汇编语言源程序中至少有一个代码段。
( )
7.伪指令是指示性语句,不产生机器目标代码。
( )
8.伪指令BVAR:
DB‘ABCD’,200DUP(?
)是合法伪指令。
( )
9.伪指令DAT1DB7,8,9,10与DAT1DW07H,08H,09H,0AH所预置的数据是一样的。
( )
10.8086CPU的中断向量表共占有1024个字节(00000H-003FFH),所以共有256个中断。
( )
五.程序分析题
1.执行下面的程序段后,CX的内容是( )
DAT1DB12H,34H,56H
N=$-DAT1
MOVCX,N
2.执行下面的程序段后,AX的内容是( ),BX的内容是( ).
M1DB12H,34H
MOVSI,OFFSETM1
MOVAX,0
MOVAL,[SI]
MOVBX,WORDPTR[SI]
3. 源程序如下:
STR DB ‘ABCDEF0123456789’
MOV BX ,OFFSET STR
MOV AL ,65H
PUSHAX
AND AL ,0FH
XLAT
MOVDL,AL
POPAX
ADDAL,08H
DAA
MOVDH,AL
CMPDH,32H
执行上面程序段后,(DL)=(),(DH)=()。
4.源程序如下:
MOVAX,SEGTABLE;TABLE为表头
MOVES,AX
MOVDI,OFFSETTABLE
MOVAL,‘0’
MOVCX,100
CLD
REPNESCASB
问:
1)该段程序完成什么功能?
( )
2)该段程序执行完毕之后,ZF和CX有几种可能的数值?
各代表什么含义?
( )
5.源程序如下:
DATASEGMENT
S9DB0,1,2,3,4,5,6,7,8,9
DATAENDS
┇
LEASI,S9
LEA,DI,S9+1
MOVCX,5
LOP:
MOVAL,[SI]
XCHGAL,[DI]
MOV[SI],AL
ADDSI,2
ADDDI,2
LOOPLOP
上述程序段运行后,S9开始的10个字节存储单元内容是什么?
( )
6.源程序如下:
MOVAL,38H
MOVBL,49H
CALLSUBO
INCAL
DECCL
┇
SUBOPROC
ADDAL,BL
MOVCL,AL
DAA
RET
SUBOENDP
上述程序段运行后,AL=( ),CL=( )
7.源程序如下:
DA3EQUWORDPTRDA4
DA4DB0ABH,89H
┇
SHRDA3,1
MOVDX,DA3
SHLDA4,1
MOVCX,DA3
上述程序段运行后,CX=( ),DX=( )
8.下面程序是将10个8位无符号数按递减次序排序,请将程序填写完整。
DATASEGMENT
ARRAYDB05H,78H,FFH,7BH,00H
DB8CH,20H,A0H,F0H,60H
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
MAINPROCFAR
START:
PUSHDS
XORAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
AB1:
MOVSI,OFFSETARRAY
MOVBL,0
MOVCX,10
( )
AGAIN:
MOVAL,[SI]
INCSI
CMPAL,[SI]
( ) CD1
MOVAH,[SI]
MOV[SI],AL
DECSI
MOV[SI],AH
INCSI
MOVBX,1
CD1:
LOOPAGAIN
DECBL
( )AB1
RET
MAINENDP
CODEENDS
ENDSTART
9.下面的程序段是统计AX中16位二进制数1的个数,并将结果放在CX中,填空使程序完成预定的功能。
XORCX,CX
L1:
ANDAX,AX
JZSTOP
SHLAX,1
( )
INCCX
L2:
JMPL1
STOP:
HLT
10.下面的程序段是求8个无符号数累加和,最后结果用双字表示,存在YAH和YAL单元,填空使程序完成预定的功能。
DATASEGMENT
TABLEDW34,789,67,78,345,89,78,60
YAHDW0
YALDW0
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,0
XORAX,AX;清AX
MOVBX,OFFSETTABLE
MOVCX,8
CLC
LP:
ADDAX,[BX]
()
()
DON:
INCBX
INCBX
LOOPLP
MOVYAL,AX;存和
MOVYAH,DX
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
11.两个非组合BCD数(BY0,BY1)进行十进制减法,并将差求绝对值后保存在SD单元。
MOVAL,BY0
CMPAL,BY1
JNCL1
MOVAH,BY1
MOVBY1,AL
MOVAL,AH
L1:
SUBAL,BY1
()
MOVSD,AL
12.附加段有一块长50个字的数据区,首址为DEST,现将数据区初始化为0FFFFH。
LEADI,DEST
MOVCX,50*2
CLD
MOVAL,0FFH
()
13.下面是某数据段定义,在表中标出各字节单元的值,并回答问题。
DATASEGMENT
PADB1
PBDW5
PPEQU2
PCDBPPDUP(0)
DATAENDS
偏移
值
+0
01H
+1
05H
+2
00H
+3
00H
+4
00H
TYPEPA=()TYPEPB=()
SIZEPA=( )SIZEPB=()
SIZEPC=()
14.源程序如下:
MOVCL,4
MOVAX,[2000H]
SHLAL,CL
SHRAX,CL
MOV[2000H],AX
试问:
①若程序执行前,数据段内(2000H)=09H,(2001H)=03H,则执行后有(2000H)=_____,(2001H)=______。
②本程序段的功能_________________________。
15.阅读程序,并完成以下要求(10分)
MOVCL,04H
MOVDX,1234H
MOVAX,5678H
SHLDX,CL
MOVBL,AH
SHLAX,CL
SHRBL,CL
ORDL,BL
A)(DX)= ,(AX)=
B)由上面的结果可以看出该程序的功能是:
16.源程序如下:
(6分)
MOVCX,9
MOVAL,01H
MOVSI,1000H
NEXT:
MOV[SI],AL
INCSI
SHLAL,1
LOOPNEXT
试问:
①执行本程序后有:
AL=_____;SI=______;CX=______;
②本程序的功能是______________________________。
17.设某数据段:
DATASEGMENT
ORG20H
NUM1=8
NUM2=NUM1+10H
DA1DB'COMPUTER'
DB0AH,0DH
COUNTEQU$-DA1
DA2DW'CO','MP','UT','ER'
DATAENDS
试回答:
(1)DA1的偏移地址是:
_________________
(2)COUNT的值是____________________________
(3)DA2+5字节单元的内容是______________________
18.从BUF开始的11个单元中存放着11个整数,找出这11个数中正数并且是偶数的个数存入R中。
DATASEGMENT
BUFDB–2,5,-3,6,100,0,-20,-9,8,-110,21
N=
RDW?
DATAENDS
CODESEGMENT
BEGIN:
MOVAX,DATA
LEABX,BUF
MOVCX,N
LOPA:
CMP[BX],BYTEPTR0
TEST[BX],BYTEPTR1
INCAX
NEXT:
INCBX
DECCX
MOVR,AX
MOVAH,4CH
INT21H
CODEENDS
END
19.对于下面两个数据段,偏移地址为10H和11H的两个字节中的数据是一样的吗?
为什么?
DTSEGSEGMENT|DTSEGSEGMENT
ORG10H|ORG10H
DATA1DB72H|DATA1DW7204H
DB04H|DTSEGENDS
DTSEGENDS|
()。
20.内存单元初始化内容为:
(2000H:
2A00H)--(2000H:
2A02H)分别为0FH、0EH、0DH,(2000H:
2A10H)--(2000H:
2A12H)分别为09H、08、07H。
执行下列程序后,请填写存储单元的内容:
MOVAX,2000H
MOVDS,AX
MOVES,AX
MOVSI,2A10H
MOVDI,2A00H
CLD
MOVCX,3
L:
MOVAL,[DI]
MOVSB
DECSI
MOV[SI],AL
INCSI
LOOPL
HLT
(1)2000H:
2A00H= 。
(2)2000H:
2A11H= 。
(3)2000H:
2A12H= 。
六.简答题
1.有变量定义的伪指令如下:
NUMSDW18DUP(4DUP(5),23)
VARDB'HOWAREYOU!
',0DH,0AH
试问:
NUMS、VAR变量各分配了多少存储字节?
1、在指令系统中,段内、段间返回均为RET指令。
试回答:
(1)执行段内返回RET指令时,执行的操作是?
(2)执行段间返回RET指令时,执行的操作是?
3.ARYDW10DUP(?
)
┇
MOVAL,TYPEARY .;
MOVBL,LENGTHARY ;
MOVCL,SIZEARY ;
上述MOV指令序列执行后的结果是什么?
4. 已知某数据段定义如下:
DSEGSEGMENT
ORG00H
DAT1DW 4 ,26
ORG06H
DAT2DW 5678H
DB‘AB’
DSEGENDS
要求:
用内存分配示意图,说明该数据段的存储器分配情况。
5.读程序,并回答问题
DATASEGMENT
TABLEDB0,1,4,9,16,25,36,49,64,81,100
XADDB3
YADDB?
DATAENDS
STACKSEGMENTSTACK'STACK'
STADB16DUP('STACK')
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK