汇编语言程序设计第二版.docx
- 文档编号:25557067
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:18
- 大小:23.71KB
汇编语言程序设计第二版.docx
《汇编语言程序设计第二版.docx》由会员分享,可在线阅读,更多相关《汇编语言程序设计第二版.docx(18页珍藏版)》请在冰豆网上搜索。
汇编语言程序设计第二版
一、单项选择题
1、CPU发出的访问存储器的地址是(A)。
A.物理地址B.偏移地址C.逻辑地址D.段地址
2、下列指令中操作数在代码段中的是(A)。
A.MOVAL,42HB.ADDAL,BLC.SUB[BX],DID.INC[DI]
3、与MOVBX,OFFSETVAR指令完全等效的指令是(D)。
A.MOVBX,VARB.LDSBX,VAR
C.LESBX,VARD.LEABX,VAR
4、表示过程定义结束的伪指令是(A)。
A.ENDPB.ENDSC.ENDD.ENDM
5、BUF1DB3DUP(0,2DUP(1,2),3)
COUNTEQU$-BUF1
符号COUNT等价的值是(B)。
A.6B.18C.16D.8
6、下列寄存器中,作为16位寄存器的是(D)。
A.ALB.BLC.CHD.DX
7、在程序运行过程中,确定下一条指令的物理地址的计算表达式是(C)。
A.DS*16+SIB.ES*16+DIC.CS*16+IPD.SS*16+SP
8、物理地址(10FF0H)=10H,(10FF1H)=20H,(10FF2H)=30H,从地址10FF1H中取一个字的内容是(B)。
A.1020HB.3020HC.2030HD.2010H
9、将AX清零,下列指令错误的是(C)。
A.SUBAX,AXB.XORAX,AXC.ORAX,00HD.ANDAX,00H
10、完成同指令XCHGAX,BX相同功能的指令或指令序列是(D)。
A.MOVAX,BXB.MOVBX,AX
C.PUSHAXD.MOVCX,AX
POPBXMOVAX,BX
MOVBX,CX
11、JMPBX的目标地址的偏移量为(A)。
A.BX的内容B.BX所指向的内存单元的内容
C.IP+BX的内容D.IP+[BX]
12、可用作寄存器间接寻址或基址、变址寻址的地址寄存器,正确的是(D)。
A.AX,BX,CX,DX B.DS,ES,CS,SS
C.SP,BP,IP,BX D.SI,DI,BP,BX
13、设SP初值为2000H,执行指令“PUSH AX”后,SP的值是(D)。
A.1FFFH B.1998H C.2002H D.1FFEH
14、汇编语言源程序中,每个语句可由四项组成,其中名字项是一个符号,下面列出的有效名字是(A)。
A.Variable B.First & ld C.0FFFFH D.‘Memphis’
15、要求将A,B两个字符的ASCⅡ码41H,42H顺序存放在连续两个字存储单元中,可选用的语句是(B)。
A.DA1 DB ‘AB’B.DA1 DW‘AB’C.DA1 DB 0ABH D.DA1 DW 0ABH
16、在汇编语言程序中,对END语句的叙述正确的是(C)。
A.END语句是一可执行语句B.END语句表示程序执行到此结束
C.END语句表示源程序到此结束D.END语句在汇编后要产生机器码
17、下面的数据传送指令中,错误的操作是(D)。
A.MOVSS:
[BX+DI],1000HB.MOVDX,1000H
C.MOVWORDPTR[BX],1000HD.MOVDS,2000H
18、当一个带符号数大于0FBH时程序转移,需选用的条件转移指令是(C)。
A.JLEB.JNLC.JNLED.JL
19、用DEBUG调试汇编语言程序时,显示某指令的地址是2F80:
F400,此时段寄存器CS的值是(B)。
A.F400HB.2F80HC.F4000HD.2F800H
20、设DS=1100H,(12000H)=80H,(12001H)=20H,(12002H)=30H,执行MOVAX,[1000H]则AX=(C)。
A.8000HB.0080HC.2080HD.8020H
21、在8086/8088系统中,约定用于形成堆栈段数据物理地址的寄存器有(A)。
A.SS,SP,BPB.SS,SP,BX
C.DS,BX,BPD.DS,SP,BP
22、有指令MOVAX,1234H,指令中的立即数1234H是存储在(B)。
A.数据段B.代码段C.附加段D.堆栈段
23、要在程序中定义缓冲区BUF,保留9个字节存储空间的语句是(C)。
A.BUFDW9B.BUFDB9
C.BUFDB9DUP(?
)D.BUFDW9DUP(?
)
24、完成将AX清零,并且使CF清零,下面错误的指令是(D)。
A.SUBAX,AXB.ANDAX,0C.XORAX,AXD.MOVAX,0
25、汇编语言源程序每个语句可以由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是(B)。
A.名字项B.操作项C.操作数项D.注释项
26、在堆栈段中,存放栈顶地址的寄存器是(B)。
A.IPB.SPC.BXD.BP
27、书写汇编语言程序时规定,对字母开头的十六进制数,其前面必须加(A)。
A.0B.DC.BD.H
28、MOV[SI][BX],AL,该指令中目的操作数采用的寻址方式是(A)。
A.基址加变址B.寄存器C.寄存器间接D.寄存器相对
29、在计算机中,以先进后出方式工作的存储空间是(D)。
A.存储器B.RAMC.ROMD.堆栈
30、已知BX=2000H,SI=1234H,则指令MOVAX,[BX+SI+2]的源操作在(A)中。
A.数据段中偏移量为3236H的字节 B.附加段中偏移量为3234H的字节
C.数据段中偏移量为3234H的字节 D.附加段中偏移量为3236H的字节
31、PSW寄存器中共有(A)位条件状态位,有(A)位控制状态位。
A.6、3 B.3、6 C.8、4 D.4、8
32、下面指令执行后,改变AL寄存器内容的指令是(D)。
A、TEST AL,02HB、OR AL,AL
C、CMP AL,BLD、AND AL,BL
33、MOV SP,3210H
PUSH AX
执行上述指令序列后,SP寄存器的值是(B)。
A、3211HB、320EHC、320FHD、3212H
34、编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有( D)。
A、CMPB、SUBC、ANDD、MOV
35、设AX=1000H
NEG AX
NOT AX
执行上述指令后,正确的结果是(B)。
A.AX=1001H B.AX=0FFFH C.AX=1000H D.AX=0111H
36、下列指令执行后对源和目的操作数均无影响的是(D)。
A.MOV[BX+2],AXB.SUBAX,2467H
C.SBB[SI],BXD.CMPAX,BX
37、8086/8088系统执行传送指令MOV时(A)。
A.不影响标志位B.影响DF方向标志
C.影响SF符号标志D.影响CF进位标志
38、若AX=-15要得到AX=15应执行的指令是(A)。
A.NEGAXB.NOTAX
C.INCAXD.DECAX
39、汇编语言程序中,反映指令操作结果的标志是(A)。
A.状态标志B.控制标志C.ZFD.DF
40、移位指令中,应先将移位次数放在(D)。
A.AXB.ALC.CXD.CL
二、简答题
1、定义子程序时如何确定其属性?
答:
(1)子程序和主程序在同一个代码段中,则子程序定义为NEAR属性。
(2)子程序和主程序不在同一个代码段中,则子程序定义为FAR属性。
(3)主程序通常定义为FAR属性,这是因为主程序被看作DOS调用的一个子程序,以便执行完返回DOS。
2、伪指令语句与指令语句的区别是什么?
答:
[指令语句]每一条指令语句在源程序汇编时都要产生可供计算机执行的指令代码(即目标代码),所以这种语句又叫可执行语句。
每一条指令语句表示计算机具有的一个基本能力,如数据传送,两数相加或相减,移位等,而这种能力是在目标程序(指令代码的有序集合)运行时完成的,是依赖于汁算机内的中央处理器(CPU)、存储器、I/O接口等硬件设备来实现的。
[伪指令语句]伪指令语句是用于指示汇编程序如何汇编源程序,所以这种语句又叫命令语句。
例如源程序中的伪指令语句告诉汇编程序:
该源程序如何分段,有哪些逻辑段在程序段中哪些是当前段,它们分别由哪个段寄存器指向;定义了哪些数据,存储单元是如何分配的等等。
伪指令语句除定义的具体数据要生成目标代码外,其他均没有对应的目标代码。
伪指令语句的这些命令功能是由汇编程序在汇编源程序时,通过执行一段程序来完成的,而不是在运行目标程序时实现的。
伪指令语句与指令语句的本质区别是指令语句有其对应的机器指令,而伪指令没有;
伪指令的主要作用是指示汇编程序如何汇编源程序。
3、子程序的参数传递有那几种方式及其各自的优缺点?
答:
(1)寄存器传递参数:
用寄存器来传递参数最直接、简便,也是最常用的参数传递方式,只要把参数存放在约定的寄存器中就行了。
但由于CPU中寄存器个数有限,所以,该方法适用于传递参数较少的情况。
需要注意的是,用于传递出口参数的寄存器不能加以保护和回恢复,用于传递入口参数的寄存器可以保护也可以不保护。
(2)存储单元传递参数:
这种方法是使用存储单元传递参数的,即主程序在存储单元建立一个参数表,存放子程序所需要的参数,在主程序中将该参数表首地址传送给子程序,子程序通过参数表去的所需参数,并把结果也存放到指定存储单元中。
这种方法适合于传递参数较多的情况。
(3)堆栈传递参数:
用堆栈传递入口参数时,要在调用子程序前把有关参数依次压栈,子程序从堆栈中取得入口参数;用堆栈传递出口参数时,要在子程序返回前,把有关参数依次压栈,主程序就可以从堆栈中取到出口参数。
这种方法也适合于传递参数较多的情况,但要特别注意避免因堆栈操作而造成子程序不能正确返回的错误。
4、试比较CALL指令和JMP指令。
答:
CALL是调用跳转,在执行到RET指令后,会返回到CALL后继续执行而JMP则是无条件跳转,是不会跳回的一般来说,执行一条CALL指令相当于执行一条PUSH指令加一条JMP指令。
5、8086/8088CPU由哪两部分组成?
它们的主要功能是什么?
答:
(1)总线接口部件BIU:
总线接口部件由段寄存器、指令指针寄存器、地址加法器、指令队列和输入输出控制电路等组成。
BIU是8086与系统总线的接口,负责CPU与存储器、I/O端口传送数据。
(2)执行部件EU:
执行部件由算术逻辑部件(ALU)、通用寄存器、标志寄存器和执行部件控制电路等组成,它负责指令的执行和数据的运算。
6、中断处理程序的典型结构包括哪几部分?
答:
(1)现场保护
(2)中断返回(3)中断嵌套(4)发中断结束命令
7、什么是中断矢量表?
它有什么作用?
答:
在8086/8088系统中,为了方便中断处理程序的管理,把所有中断处理程序的入口地址都集中在一起,构成一个中断矢量表。
而中断矢量即为中断处理程序的入口地址。
8、CPU与外设问的数据传送方式有哪几种?
它们各有什么特点?
答:
(1)查询方式:
先查询外设的状态,后进行输入/输出操作的工作方式,称为查询式输入/输出方式。
外设的状态是通过输入指令读外设的状态寄存器获得的。
每个状态寄存器都有对应的地址,称为端口地址。
(2)程序中断传送方式:
当CPU需要输入/输出数据时,先执行启动外设工作的指令,然后CPU继续执行源程序,然后当输入/输出操作完成时,由外设向CPU发出中断请求,则在收到请求信号后,暂时停止原来执行的程序,转去执行输入或输出的处理程序。
在完成外设所要进行的输入或输出的处理操作后,再返回到原来被中断的程序,继续从中断处往下执行。
这种中断输入/输出方式,实现了CPU与外设并行操作,因此极大地提高了CPU的使用效率。
(3)DMA方式:
DMA方式能摆脱CPU的直接干预,利用硬件控制设备DMA控制器,实现外部设备与内存间的直接数据传送。
9、标志寄存器中有哪些状态标志和控制标志?
它们每一位所表示的含义是什么?
答:
(1)CF进位标志,主要用来反映运算是否产生进位或借位。
(2)PF奇偶标志,用于反映运算结果中“1”的个数的奇偶性。
(3)AF辅助进位标志,记录运算时第3位(低半字节)产生的进位值。
(4)ZF零标志,用来反映运算结果是否为0.
(5)SF标志,记录运算符号的结果,它与运算结果的最高位相同。
(6)OF溢出标志,用于反映有符号运算结果是否溢出。
(7)TF追踪标志,也称单步标志。
当追踪标志为1时,CPU进入单步方式即CPU每执行一条指令后,产生一个单步中断,通常用于程序的调试;当追踪标志为0时,处理器正常工作。
(8)IF中断标志。
当IF=1时,CPU可以响应可屏蔽中断请求;当IF=0时,CPU不响应CPU外部的可屏蔽中断发出的中断请求。
(9)DF方向标志,用于在串处理指令中控制地址的变化方向。
10、8086/8088的数据寻址方式有那几种?
每种寻址方式各举一例(以源操作数为例)。
11、在指令系统中,段内、段间返回均为RET指令。
试回答:
(1)执行段内返回RET指令时,执行的操作是:
(IP)←((SP),(SP)+1)
(2)执行段间返回RET指令时,执行的操作是:
(IP)←((SP),(SP)+1)(CS)←((SP)+2,(SP)+3)
12、系统功能调用的方法如何?
举例说明。
答:
(1)将调用参数装入指定的寄存器。
(2)如需功能调用号,把它装入AH。
(3)如需子功能调用号,把它装入AL。
(4)按中断号调用DOS或BIOS。
(5)检查返回参数是否正确。
13、分别说明下列两组指令中两条指令操作的相同点和不同点
(1)SUBAX,BXCMPAX,BX
(2)ANDCX,DXTESTCX,DX
答:
(1)相同点:
都是做减法
不同点:
SUB指令将结果回送给目的操作数,CMP指令不回送给目的操作数
(2)相同点:
都是做与操作
不同点:
AND指令将结果回送给目的操作数,TEST指令不将结果回送给目的操作数
三、填空题
1、数据定义如下
X1DB10H,100,-1
X2DW10H,100,-1
X3DD?
COUNTEQUX3-X1
变量COUNT的值是9,其表示的意义是计算分配给以上变量的存储单元的个数。
2、下面程序段执行完后,AL的内容是什么?
MOVAL,10
ADDAL,AL
SHLAL,1
MOVBL,AL
SHLAL,1
ADDAL,BL
AL=_120______
3、设DS=2000H,BX=1256H,变量TABLE的偏移地址为20A1H,(232F7H)=3280H.下列指令分别执行后,IP的值各是多少?
(1)JMP BXIP=1256H
(2)JMP TABLE[BX]IP=3280H
4、MOVAX,9090H
SUBAX,4AE0H
JCL1
JOL2
JMPL3
上述程序执行后AX=45B0H,程序转向L3
5、已知数据段定义如下:
DATASEGMENT
ORG100H
BUFDW'CD',1,3DUP(4,2DUP(8,6))
VRADB4AH
DATAENDS
单独执行下列语句
LEABX,BUFBX=100H
MOVCX,VRA-BUFCX=22H(用十六进制数表示)。
6、ADW1234H
BDW5678H
:
PUSHA
PUSHB
POPA
POPB
试回答:
A.上述程序段执行后(A)=5678H,(B)=1234H。
7、设寄存器AL,BL,CL中内容均为76H,
XOR AL,0FH
AND BL,0FH
OR CL,0FH
执行上述指令序列后,AL=79h。
BL=06H,CL=7FH。
8、已知:
BX=1357H,BP=2468H,SI=1000H,DI=2000H,SS=1000H,DS=2000H,ES=3000H,试分别指出下列各指令中存储器操作数的物理地址。
MOVAL,[BP+20H]的物理地址是12488H 。
MOV[BX+DI-80H],AL的物理地址是232D7H。
MOVBL,ES:
[SI+40H]的物理地址是31040H。
9、阅读程序段:
BLOCKDB20H,1FH,08H,81H,0FFH,…
RESULTDB?
…
START:
LEASI,BLOCK
MOVCX,[SI]
INCSI
MOVAL,[SI]
LOP1:
CMPAL,[SI+1]
JNGNEXT
MOVAL,[SI+1]
NEXT:
INCSI
LOOPLOP1
MOVRESULT,AL
HLT
请问:
(1)该程序完成的功能是什么?
(2)该程序循环的次数是多少?
答:
(1)该程序完成的功能是从20H(32)个有符号数中找出最小的数送入RESULT单元中。
(2)该程序的循环次数是1FH(31)。
10、STRINGDB‘ABCDEFGHI’
:
MOVAH,01;从键盘输入字符1~9
INT21H
ANDAL,0FH
DECAL
XORAH,AH
MOVBX,OFFSETSTRING
ADDBX,AX
MOVBL,[BX]
MOVAH,02H;显示输出
INT21H
:
试回答:
(1)上述程序段的功能是什么?
(2)如从键盘输入字符‘4’,程序段有什么结果?
答:
(1)程序段功能:
根据从键盘输入的字符‘1’~‘9’,确定在显示器上显示STRING中第几个字符。
(2)显示器显示字符‘D’
四、编程题(30分)
1、设在数据段中有X,Y两变量(字节单元),试编写程序段计算(只写有关程序功能的指令):
Y=X当X>=0
Y=0当X<0
moval,x
cmpa;,0
jgeA1
moval,0
A1:
movy,al
2、试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
DATASSEGMENT
MSGDB0,0,"H","$"
CRDB13,10,"$"
TAB1DB"0123456789ABCDEF"
DATASENDS
STACKSSEGMENT
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,ES:
DATAS,SS:
STACKS
START:
MOVAX,DATAS
MOVDS,AX
MOVES,AX
MOVCX,127
MOVDL,0
MOVSI,OFFSETTAB1
MOVDI,OFFSETMSG
AG:
PUSHCX
PUSHDX
MOVAX,0
MOVAL,DL
MOVBL,10H
DIVBL
MOVBX,0
MOVBL,AH
MOVDH,[SI+BX]
MOV[DI+1],DH
MOVBL,AL
MOVDH,[SI+BX]
MOV[DI],DH
PUSHDX
MOVDX,OFFSETMSG
MOVAH,9
INT21H
POPDX
MOVAH,2
INT21H
PUSHAX
MOVDX,OFFSETCR
MOVAH,9
INT21H
POPDX
POPDX
POPCX
INCDL
LOOPAG
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
3、已知在以ARRAY为首地址的数据区中存放10个带符号字数据:
ARRAYDW1,2,-1,3,4,-2,-3,4,5,-6
编程统计ARRAY中正数项个数和负数项个数。
datasegment
arraydw1,2,-1,3,4,-2,-3,4,5,-6
P_ARYdw10dup(?
)
N_ARYdw10dup(?
);以上是定义
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
leabx,array
leasi,N_ARY
leadi,P_ARY
movcx,10
again:
cmpwordptr[bx],0;这里是比较
jlok1;>0放入OK1
jgok2;<0放入OK0
jmpok3;否则放入OK3
ok1:
movax,[bx]
mov[di],ax
adddi,2
jmpok3
ok2:
movax,[bx]
mov[si],ax
addsi,2
jmpok3
ok3:
addbx,2
deccx
jnzagain
movah,4ch
int21h
codeends
endstart
4、设X、Y、Z、W为十六位有符号数编程计算:
W←(X+Y*Z)/8-Y除法余数丢弃
若ZF=1,程序转EQ;否则转NOT_EQ。
5、X,Y,Z三个字节存储单元中各有一个无符号数,其中有两个数据相等,找出不相等的哪个数,并存入W单元中,试编写完成上述功能的程序段(只编写有关代码部分,勿需书写源程序格式)。
Moval,x
Cmpal,y
Jz//////
Cmpal,z
Jz\\\\\
Movw,al
Jmpexit
//////:
Movbl,z
Movw,bl
Jmpexit
\\\\\\:
Movbl,y
Movw,bl
Exit:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 第二