第4章汇编语言程序设计.docx
《第4章汇编语言程序设计.docx》由会员分享,可在线阅读,更多相关《第4章汇编语言程序设计.docx(45页珍藏版)》请在冰豆网上搜索。
第4章汇编语言程序设计
第4章汇编语言程序设计.
第四章习题集
一、判断(正确的在括号画“√”,错误的画“×”
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,所以共有1024个中断。
[]
二、单项选择题
1.用高级语言编写的程序(C。
A、只能在基本种计算机上运行B、无需经过编译或解释,即可被计算机直接执行C、具有通用性和可移植性D、几乎不占用内存空间
2.一般地,我们将计算机指令的集合称为(B。
A.机器语言B.汇编语言C.模拟语言D.仿真语言
3.我们通常所说的“裸机”指的是(C。
A.只装备有操作系统的计算机B.不带输入输出设备的计算机
C.未装备任何软件的计算机D.计算机主机暴露在外
4.计算机的软件系统一般分为(C两大部分。
A.系统软件和应用软件B.操作系统和计算机语言
C.程序和数据D.DOS和Windows
5.计算机系统软件中的汇编程序是一种(C。
A.汇编语言程序B.编辑程序
C.翻译程序D.将高级语言转换成汇编程序的程序
6.假设V1和V2是用DW定义的变量,下列指令中正确的是:
A
A.MOVV1,20HB.MOVV1,V2
C.MOVAL,V1D.MOV2000H,V2
7.PC机所使用的标准键盘向主机发送的代码是A
A.ASCII码B.扫描码C.BCD码D.格雷码
8.8086CPU中断号为8的中断矢量存放在(C。
A.0FFFFH:
0008HB.0000H:
0008H
C.0000H:
0020HD.0020H:
0000H
9.已知变量VAR为字型,则TYPEVAR=(B。
A、1B、2C、3D、4
10.交换寄存器SI、DI的内容,正确的程序段是(AC。
A、PUSHSIB、PUSHSI
PUSHDIPUSHDI
POPSIPOPDI
POPDIPOPSI
C、MOVAX,SID、MOVAX,SI
MOVSI,AXMOVBX,DI
MOVDI,AXXCHGBX,AX
11.段定义语句以(B语句结束。
A.ENDB.ENDSC.ENDPD.ENDM12.若主程序段中数据段名为DATA,对数据段的初始化操作应为
A.MOVAX,DATAB.MOVAX,DATA
MOVES,AXMOVDS,AX
C.PUSHDSD.MOVDS,DATA
13..EXE文件产生在
A.汇编B.编辑C.用软件转换D.连接
14.定义双字变量的定义符是。
A.DWB.DQC.DDD.DT
15.下列存储器操作数的跨段前缀可省略的是。
A.DS:
[BP]B.SS:
[BP]C.ES:
[BX]D.ES:
[SI]
16.执行下列指令:
STR1DW‘AB’
STR2DB16DUP(?
CONTEQU$-STR1
MOVCX,CONT
MOVAX,STR1
HLT
后寄存器CL的值是c。
A.0FHB.0EHC.12HD.10H
17.与MOVBX,OFFSETVAR指令完全等效的指令是(D。
A.MOVBX,VARB.LDSBX,VAR
C.LESBX,VARD.LEABX,VAR
18.在段定义时,如果定位类型用户未选择,就表示是隐含类型,其隐含类型是(D。
A、WORDB、PAGEC、BYTED、PARA
19.BUFDW10HDUP(3DUP(2,10H,3,5
上述语句汇编后,为变量BUF分配的存储单元字节数是(160?
。
A、80HB、100HC、124D、192
20.在汇编语言程序的开发过程中使用宏功能的顺序是(C。
A、宏定义,宏调用B、宏定义,宏展开
C、宏定义,宏调用,宏展开D、宏定义,宏展开,宏调用
21.汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是(B。
A、名字项B、操作项C、操作数项D、注释项
22.编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有(D。
A、CMPB、SUBC、ANDD、MOV
23.为使CX=-1时,转至MINUS而编制了一指令序列,其中错误的序列是(D。
A、INCCXJZMINUSB、SUBCX,OFFFFHJZMINUS
C、ANDCX,OFFFFHJZMINUSD、XORCX,OFFFFHJZMINUS
24.假设V1和V2是用DW定义的变量,下列指令中正确的是(A.
A.MOVV1,20HB.MOVV1,V2
C.MOVAL,V1D.MOV2000H,V2
25.假设VAR为变量,指令MOVBX,OFFSETVAR的寻址方式是(C。
A.直接寻址B.间接寻址C.立即寻址D.存储器寻址
三.多项选择题(每题有多个正确答案,选出所有正确答案,多选、少选均不得分1.8086指令的操作数可能有
A.0B.1C.2D.3
2.变量定义的伪指令助记符有:
。
A.DBB.DWC.DDD.DFE.DQF.DT
3.主程序与子程序之间传递参数可通过
A.堆栈B.存储器单元C.通用寄存器D.指令队列E.其他
4.汇编语言源程序经MASM汇编后可直接生成的文件是。
A..LSTB..CRFC..EXED..OBJE..ASMF..MAP
5.过程(子程序调用的形式有(ABCD。
A、段内直接B、段内间接C、段间直接D、段间间接
四.填空题
8.设当前的SP=0FFFH,执行PUSHF指令后,SP=(0FFDH,若改为执行INT20H指令后,则SP=(0FF9H。
2.23.当要求段的首地址只能被16整除时,需选择的定位方式为。
2.二进制编码的十进制数称为BCD码,它用
BCD码有和两种格式。
1.MOVAX,((VARLT6AND40OR((VARGE6AND50,当VAR﹤6时,汇编结果源操作数为。
2.程序段VAR1DB?
VAR2DW20DUP(58H,2DUP(?
VAR3DB‘ABCD’
.
.
.
MOVAX,TYPEVAR1
MOVBX,TYPEVAR2
MOVCX,LENGTHVAR2
MOVDX,SIZEVAR2
MOVSI,LENGTHVAR3
,。
3.段定义伪指令语句用语句表示开始,以语句表示结束。
4.ARRAYDW10DUP(5DUP(4DUP(20H,40H,60H语句执行后共占字节存储单元。
5.汇编语句中,一个过程有NEAR和FAR两种属性。
NEAR属性表示主程序和子程序内转移,FAR属性表示主程序和子程序段间转移。
6.DOS系统功能号应放在寄存器中。
7.子程序又称,它可以由
8.与指令MOVBX,OFFSETBUF功能相同的指令是。
10.设有伪指令ADB01H,23H,则执行指令
BDW2DUP(0
MOVAL,TYPEA后,(AL;
MOVBL,SIZEB后,(BL。
.设有伪指令ADB01H,23H,则执行指令
BDW2DUP(0
MOVAL,TYPEA后,(AL;
MOVBL,SIZEB后,(BL。
7.根据下面的指令和伪指令序列,AX寄存器的内容
TABDB1,2,3,4,5,6
ENTRYEQU3
MOVBX,OFFSETTAB
ADDBX,ENTRY
MOVAX,WORDPTR[BX]
8.对于下面两个数据段,偏移地址为10H和11H的两个字节中的数据是一样的吗?
为什么?
DTSEGSEGMENT|DTSEGSEGMENT
ORG10H|ORG10H
DATA1DB72H|DATA1DW7204H
DB04H|DTSEGENDS
DTSEGENDS|
(。
12.将下列文件类型填入空格:
(1.obj(2.exe(3.crf(4.asm(5.lst(6.map
编辑程序输出的文件有(;
汇编程序输出的文件有(;
连接程序输出的文件有(。
4.ORG1000H
XDB12H
YDWX
ZDDY
(DS=3800H,(BX=1000H,(SI=0002H
求下列指令执行完后指定寄存器的内容
MOVAX,[1000H];
MOVAX,[BX];H
MOVAX,[BX+SI];H
MOVAX,[Y+1];
LDSSI,Y;H
6.数据段中有以下定义:
ARRAY1EQU16H
ARRAY2DW16H
请指出下面两条指令的寻址方式:
MOVAX,ARRAY1;寻址方式:
MOVAX,ARRAY2;寻址地址:
8.内存单元初始化内容为:
(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
(12000H:
2A00H=09H。
(22000H:
2A11H=0EH。
(32000H:
2A12H=0DH。
四.程序分析题
1.执行下面的程序段后,CX的内容是(3.
DAT1DB12H,34H,56H
N=$-DAT1
MOVCX,N
2.执行下面的程序段后,AX的内容是(12H,BX的内容是(3412H.
M1DB12H,34H
MOVSI,OFFSETM1
MOVAX,0
MOVAL,[SI]
MOVBX,WORDPTR[SI]
3.源程序如下:
STRDB‘ABCDEF0123456789’
MOVBX,OFFSETSTR
MOVAL,65H
PUSHAX
ANDAL,0FH
XLAT
MOVDL,AL
POPAX
ADDAL,08H
DAA
MOVDH,AL
CMPDH,32H
执行上面程序段后,(DL=(,(DH=(。
46H73H
4.源程序如下:
MOVAX,SEGTABLE;TABLE为表头
MOVES,AX
MOVDI,OFFSETTABLE
MOVAL,‘0’
MOVCX,100
CLD
REPNESCASB
问:
1该段程序完成什么功能?
2该段程序执行完毕之后,ZF和CX有几种可能的数值?
各代表什么含义?
(1从目的串中查找是否包含字符‘0’,若找到则停止,否则继续重复搜索。
(2ZF=1,说明已找到字符
ZF=0,说明未找到字符
CX0,说明中途已找到字符退出
CX=0,且ZF=0说明串中无字符‘0’
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个字节存储单元内容是什么?
1,0,3,2,5,4,7,6,9,8
6.源程序如下:
MOVAL,38H
MOVBL,49H
CALLSUBO
INCAL
DECCL
┇
SUBOPROC
ADDAL,BL
MOVCL,AL
DAA
RET
SUBOENDP
上述程序段运行后,AL=________87h__________,CL=_______81h_________7.源程序如下:
DA3EQUWORDPTRDA4
DA4DB0ABH,89H
┇
SHRDA3,1
MOVDX,DA3
SHLDA4,1
MOVCX,DA3
上述程序段运行后,CX=________44aah_____,DX=______44d5h_________
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
TYPEPA=(1TYPEPB=(3SIZEPA=(1SIZEPB=(2SIZEPC=(2
14.源程序如下:
MOVCL,4
MOVAX,[2000H]
SHLAL,CL
SHRAX,CL
MOV[2000H],AX
试问:
若程序执行前,数据段内(2000H=09H,(2001H=03H,则执行后有(2000H=_____,(2001H=______。
本程序段的功能_________________________。
(2000H=39H(2分(2001H=00H(2分
将(2000H,(2001H两相邻单元中存放的未组合型BCD码压缩成组合型BCD码,并存入
(2000H单元,0(2001H(2分
15.阅读程序,并完成以下要求(10分
DA4DB0ABH,89H
DA3EQUWORDPTRDA4
┇
SHRDA3,1
MOVDX,DA3
SHLDA4,1
MOVCX,DA4
上述程序段运行后,CX=,DX=
16.阅读程序,并完成以下要求(10分
MOVCL,04H
MOVDX,1234H
MOVAX,5678H
SHLDX,CL
MOVBL,AH
SHLAX,CL
SHRBL,CL
ORDL,BL
a给程序段加上注释;b(DX=,(AX=
c由上面的结果可以看出该程序的功能是:
左移动4位
17.源程序如下:
(6分
MOVCX,9
MOVAL,01H
MOVSI,1000H
NEXT:
MOV[SI],AL
INCSI
SHLAL,1
LOOPNEXT
试问:
执行本程序后有:
AL=_____;SI=______;CX=______;
本程序的功能是______________________________。
0(1分1009H(1分0(1分
对数据段内1000H~1008H单元置数,依次送入1,2,4,8,16,32,64,128,0共九个(3分
3.设某数据段:
DATASEGMENT
ORG20H
NUM1=8
NUM2=NUM1+10H
DA1DB'COMPUTER'
DB0AH,0DH
COUNTEQU$-DA1
DA2DW'CO','MP','UT','ER'
DATAENDS
试回答:
(1DA1的偏移地址是:
__20H_________________
(2COUNT的值是____________10_______________________
(3DA2+5字节单元的内容是_____T_____________________
18.用减法实现除法。
X是被除数,Y是除数,处理结束后商存放在RESULT,余数存放
在XYMOD。
.MODELSMALL.386.STACK.DATAXDW7YDW2.DATA?
RESULTDW?
XYMODDW?
.CODE
.STARTUP
MOVAX,X
MOVBX,Y
MOVCX,0
.WHILE_____SUBAX,BX
_____.ENDW
MOVRESULT,CX
MOVXYMOD,AX
.EXIT
END
①AX>=BX②INCCX
19.从BUF开始的11个单元中存放着11个整数,找出这11个数中正数并且是偶数的个
数存入R中。
DATASEGMENT
BUFDB–2,5,-3,6,100,0,-20,-9,8,-110,21
RDW?
DATAENDS
CODESEGMENT
BEGIN:
MOVAX,DATA
LEABX,BUF
MOVCX,N
被除数
除数商720
521
322
余数
→123←商
图4-15用减法实现除法示意图
LOPA:
CMP[BX],BYTEPTR0
TEST[BX],BYTEPTR1
INCAX
NEXT:
INCBX
DECCX
MOVR,AX
MOVAH,4CH
INT21H
CODEENDS
END
①$-BUF
②ASSUMECS:
CODE,DS:
DATA
③MOVDS,AX
④MOVAX,0
⑤JLENEXT
⑥JNZNEXT
⑦JNZLOPA
⑧BEGIN
五.简答题
1.变量和标号有何区别?
变量有哪些属性?
已有MOVAL,INF[BP+SI]与MOVAL,ES:
INF[BP+SI]两条指令,试问:
其源操作数采用何种寻址方式?
是字或是字节操作?
两条指令有何区别?
源操作采用基址+变址寻址方式是字节操作
MOVAL,INF[BP+SI]—访问的是堆栈段
MOVAL,ES:
INF[BP+SI]—访问的是附加段,实现了段超越
2.有变量定义的伪指令