汇编语言程序设计课程.docx
《汇编语言程序设计课程.docx》由会员分享,可在线阅读,更多相关《汇编语言程序设计课程.docx(33页珍藏版)》请在冰豆网上搜索。
![汇编语言程序设计课程.docx](https://file1.bdocx.com/fileroot1/2023-4/16/40707dd7-b83b-4e79-9e3f-adbd23fb41ef/40707dd7-b83b-4e79-9e3f-adbd23fb41ef1.gif)
汇编语言程序设计课程
汇编语言程序设计复习参考题一
一、填空(每空1分,共20分)。
1、8086CPU有_20_根地址线,可直接寻址_1M_字节的存储空间。
2、-1的8位二进制补码是__0FFH_。
3、IBM-PC系列微机可访问的外设端口的地址范围是从___0___到__3FFH__。
4、在8086CPU中,当_M/-IO=1时,访问存储器,当_M/-IO=0时,访问I/O端口。
5、在8086CPU中,对I/O端口的寻址有_存储器编址方法_和_I/O端口编址方法_。
6、在8086CPU指令系统中,要获得数组变量所占的总字节数,使用__SIZE__运算符,要获得数组变量的元素个数,使用_LENGTH_运算符,要获得变量的类型数字,使用__TYPE__运算符。
7、符号‘$’代表___当前位置计数器___的现行值,定位伪指令ORG是把某一个值赋给__当前位置计数器__,表示以给定值作起始偏移量。
8、若一个数据块的起始地址为70A0H:
DDF6H,则这个数据块起始地址的实际地址为__7E7F6H__。
9、如果一条指令使用标号,那么该标号就是这条指令的__首__地址,且它代表该指令的__第一字节__的地址。
10、在宏汇编语言中,宏指令的使用过程是__定义__、__调用__、__展开__。
二、单项选择题(每空1分,共20分)
1、两个非组合型BCD码数据相加后,执行加法校正指令AAA是,首先检查是否需要校正。
需要校正的条件有:
AF=1、CF=L和(D)。
A.AL中高四位数的值>9B.AL中高四位数的值<9
C.AL中低四位数的值<9D.AL中低四位数的值>9
2、8086的I/O空间段寄存器使用的是(B)
A.DSB.没必要C.ESD.SS
3、I/O端口间接寻址方式是将被寻址的端口地址存放在(A)
A.DXB.AXC.BXD.CX
4、8086/8088CPU的输入指令是将输入设备的一个端口中的数据传送到(B)
A.IPB.AL/AXC.BPD.BX/CX
5、I/O设备的数据端口是(C)
A.32B.64C.8/16D.16/32
6、为了保证用户程序执行完后能正常返回DOS,常使用的一种方法是在程序执行的最后一条指令为RET。
但使用该方法要在程序执行前进行一系列的保护操作(B)
A.MOVAX,DATA
MOVDS,AX
MOVES,AX
B.PUSHDS
MOVAX,0
PUSHAX
C.MOVAH,4CH
INT21H
D.MOVAX,DATA
MOVDS,AX
PUSHAX
7、不用立即数,也不用任何存储单元中的数据,能完成AX←-1,BX←0,CX←1的程序段是(A)
A.XORAX,AX
MOVBX,AX
INCAX
MOVCX,AX
NEGAX
B.ORAX,AX
MOVBX,AX
INCAX
MOVCX,AX
NEGAX
C.ANDAX,AX
MOVBX,AX
INCAX
MOVCX,AX
NEGAX
D.XORAX,AX
MOVBX,AX
DECAX
MOVCX,AX
NEGAX
8、DADW‘AB’,‘CD’
DB1DB‘X’
……
则执行指令语句XCHFDB1,BYTEPTRDA后,结果DB1中的内容是(B)
A.‘A’B.42HC.41HD.’C’
9、下列伪指令中可以用来定义变量的是(A)
A.TYPEB.DBC.WORDD.BYTE
10、在汇编过程中不产生指令代码,只用来指示汇编程序如何汇编的指令是(B)
A.宏指令B.伪指令C.机器指令D.汇编指令
11、下面伪指令定义后,其变量对应的物理地址是(A)
ORG0100H
BUFDB10DUP(?
)
CONDW2DUP(?
)
A.BUFDS:
0100H
CONDS:
010AH
B.BUFDS:
010AH
CONDS:
0101H
C.BUFDS:
0110H
CONDS:
011CH
D.BUFDS:
0100H
CONDS:
0101H
12、在ASSUME伪指令设定了段寄存器后,无需在程序段中用指令完成赋值的寄存器是(A)
A.CSB.DSC.ESD.AX
13、指令代码的地址存放在寄存器(C)中
A.DS,SIB.ES,DIC.CS,IPD.BX,BP
14、指令PUSHAX的正确操作是(C)
A.SP←SP+1
AH→(SP)
SP←SP+1
AL→(SP)
B.SP←SP-1
AL→(SP)
SP←SP-1
AH→(SP)
C.SP←SP-1
AH→(SP)
SP←SP-1
AL→(SP)
D.以上均不正确
15、在取MOVBX0125H指令的源操作数时,使用的逻辑地址时(A)
A.CS:
IPB.DS:
0125HC.ES:
0125HD.无
16、在8086/8088中,可以分为两个独立的8位寄存器使用的寄存器是(B)
A.AX,DI,BP,SIB.AX,BX,CX,DX,F
C.SI,DI,BP,SP,IPD.CS,ES,DS,SS
17、设SP的初值为200H,执行指令”PUSHAX”后,SP的值为(D)
A.198HB.200HC202HD.1FEH
18、伪指令“ENDP”告诉汇编程序(B)
A.宏定义结束B.过程定义结束C.段定义结束D.用户程序结束
19、ADDAL,BL
AAA
设执行前(AX)=0535H,(BL)=39H,则执行上述指令后,AX中的内容为(A)
A.0604HB.0574HC.0104HD.056EH
20、设(SS)=1E56H,(SP)=38H,则执行指令“RET6”后,SP的值以及SP所指向的存储单元的物理地址分别是(D)
A.3FH,1E5A0HB.42H,1E5C6H
C.39H,1E5E2HD.42H,1E5A2H
三、判断改错题(判断正误,正确的划上“√”,错误的划上“×”,并改正错误。
每题3分,共15分)
1、MOVAX,0FFH
MOVCS,AX(×)
改:
MOVAX,0FFH
MOVDS,AX
2、MOVAX,100
ADDAX,[BX]
DAA(×)
改:
MOVAL,100
ADDAL,[BX]
DAA
3、…
A1DB10H
A2DB?
…
CMPA1,A2(×)
改:
…
A1DB10H
A2DB?
…
MOVAL,A1
CMPAL,A2
4、DATA0DB100
…
MOV[DATA0],AX
PUSHAX
…(×)
改:
DATA0DW100
…
MOV[DATA0],AX
PUSHAX
…
5、MOVAL,01H
OUT2F8H,AL(×)
改:
MOVAL,01H
MOVDX,2F8H
OUTDX,AL
四、写出下面程序段的运行结果或功能(20分)
1、DESGSEGMENTAT1000H
ORG6
VAR1DB2,8
ORG$+2
VAR2DW569AH
DB‘1234’
DESGENDS
画出上面程序的内存分配图:
答案:
2
8
-
-
9AH
56H
‘1’
‘2’
‘3’
‘4’
1000:
0006H
2、MOVDL,31H
MOVAH,2
INT21H
指出该程序段的功能:
(2分)
答案:
显示数字1
3、CLC
MOVCX,0FFFFH
INCCX
执行该程序段后,CX=__0__,ZF=_____1____。
4、MOVAL,100
CMPAL,100
执行该程序段后,AL=_____100____,CF=_____0_____。
5、下列程序段完成什么功能?
DATA1DB300DUP(?
)
DATA2DB100DUP(?
)
……..
MOVCX,100
MOVBX,200
MOVSI,0
MOVDI,0
L1:
MOVAL,DATA1[BX][SI]
MOVDATA1[DI]
INCSI
INCDI
LOOPL1
答案:
将DATA1的后100个字节传输到DATA2开始的存储单元中。
四、编程(20分)
计算表达式Z=(X
+2Y+Y
)/2,设X,Y均为单字节正整数,结果Z为字数据。
写完整的程序,完成给定的功能。
(设X=23H,Y=0F6H)
答案:
TITLECALCULATEZ=(X
+2Y+Y
)/2
DATASEGMENT
XDB23H
YDB0F6H
ZDW?
DATAENDS
STACKSEGMENTPARASTACK‘stack’
DB100DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
STARTPROCFAR
BEGIN:
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVAL,X
MOVAH,0
MOVBL,Y
MOVBH,0
MULAL
MOVCX,AX
MOVAX,BX
MULAL
ADDBX,BX
ADDAX,BX
ADDAX,CX
DIVAX,2
MOVZ,AX
RET
STARTENDP
CODEENDS
ENDBEGIN
汇编语言程序设计复习参考题二
一、填空(每空1分,共20分)。
1、在PC系列微机中,从00000H至003FFH内存中存放着_中断向量表___。
2、设堆栈指针(SP)=2200H,此时若将AF、AX、BX、CX依次压入堆栈后,(SP)=_21F8H_。
1、8086/8088CPU寻址外设端口的两种寻址方式为直接寻址和间接端口寻址。
2、凡地址能被_16_整除的单元可定义为段的起始单元。
3、程序段MOVAL,64H
MOVBL,-1
CMPAL,BL
ADDAL,AL
执行后,(AL)=_C8H_,(BL)=_0FFH_,CF=_0__。
4、程序段
MOVAL,40H
ADDAL,AL
ADCAL,AL
ADCAL,AL
执行后,(AL)=_01H_,CF=__0___。
5、在8086/8088CPU串操作寻址中,隐含使用变址寄存器SI、DI。
若_DF=0_时,SI、DI自动增量,否则自动减量。
6、在8086/8088CPU基址变址寻址操作中,当基址寄存器选用BP时,隐含使用的段寄存器是__SS___,当选用BX时,隐含使用的段寄存器是__DS__。
7、OFFSET用于获得一个变量或标号在其段内的___偏移量___。
8、在8086/8088指令系统中,__组合型BCD码__是一个字节表示两个BCD码,__非组合型BCD码_是一个字节的低4位表示一个BCD码,高4位通常为0000或0011等。
9、在用指令MUL进行字节乘法时,一个操作数隐含使用寄存器_AL_,运算所得结果隐含地存放在寄存器_AX__。
10、执行CALL指令,对标志寄存器_无影响_。
11、在编写子程序时,必须注意一个子程序执行的最后一条指令一定是还回指令__RET_,用以还回到调用该子程序的断点处。
二、单项选择题(每空1分,共20分)
1、二进制数10000000为带符号的补码时,表示(A).
A.-128B.-0C.-127D.128
2、在计算机内,字符均用ASCII码表示,一个字符在存储器中占用(B)
A.4BITB.1个字节C.一个字D.一个双字
3、在计算机内,机器数均用()来表示
A.原码B.反码C.补码D.ASCII码
4、BCD码是二进制编码的十进制数,一个16位的十进制数或非组合BCD码在机内要占用(C)个字节单元
A.4B.8C.16D.32
5、8086CPU产生存储单元的物理地址是由(B)组合产生的
A.CS和IPB.段基址和偏移地址C.SS和SPD.有效地址和相对地址
6、标志位(D)用于控制串操作的方向(增量或减量)
A.AFB.PFC.IFD.DF
7、8086CPU访问(读/写)一次存储器或I/O接口所用的时间,称为一个(C)
A.基本指令执行时间B.时钟周期C.总线周期D.指令周期
8、8086的基本总线周期长度是(D)(不含等待)
A.3TB.TIC.一个指令周期D.4T
9、8086CPU寻址I/O端口是,若要访问1024个字节端口或512个字节端口时,至少要使用(C)根地址线
A.4B.8C.10D.16
10、指令PUSHDS的目的操作数是(D)寻址方式
A.寄存器B.寄存器间接C.直接D.隐含(固定)
11、已知(SI)=0004H,(DS)=8000H,(80004H)=02H,(80005H)=C3H,指令LEAAX,[SI]执行后,(AX)=(B)
A.0002HB.0004HC.02HD.C302H
12、已知(AL0=A3H,指令CBW执行后,(AX)=(B)
A.00A3HB.FFA3HC.0FA3HD.A300H
13、(D)是一种能被计算机识别和执行的语言
A.汇编语言B.高级语言C.算法语言D.机器语言
14、八位微计算机用补码所能表示的数的范围是(A)
A.-128~127B.-127~127C.0~255D.0~256
15、八位微处理器的地址线AB为16条,则能组合成(A)种不同的地址码
A.2
B.2
-1C.2
D.2
-1
16、两个八位二进制数00000110和11111100相加,则(C)成立
A.视为两个无符号数相加时,发生溢出,视为两个带符号数相加时,发生溢出
B.视为两个无符号数相加时,不发生溢出,视为两个带符号数相加时,发生溢出
C.视为两个无符号数相加时,发生溢出,视为两个带符号数相加时,不发生溢出
D.视为两个无符号数相加时,不发生溢出,视为两个带符号数相加时,不发生溢出
17、8086CPU内部由两个独立的工作部件构成,它们是(A)
A.执行部件和总线接口部件B.执行部件和地址、数据缓冲器
B.运算器和控制器C。
运算器和寄存器阵列
18、已知(AL)=36H,(BL)=02H,执行指令MULBL后,AH和AL的值分别为(B)
A.(AH)=03H,(AL)=2AHB.(AH)=00H,(AL)=6CH
C.(AH)=FFH,(AL)=6CHD.(AH)=03H,(AL)=6CH
19、一个存储单元的实际地址为25342H,若其段首址为234E0H,则其段内偏移地址为(B)
A.1F41HB.1F42HC.5432HD.01FAH
20、与DB‘A’,‘B’等效的指令是(A)
A.DB‘BA’B.DW‘BA’C.DW‘AB’D.DW‘A’,‘B’
三、判断改错题(判断正误,正确的划上“√”,错误的划上“×”,并改正错误。
每题3分,共15分)
1、MOVAL,512(×)改:
MOVAX,258
2、SALBX,2(×)改:
SALCL,2
3、ORAX,504HAND208H(√)
4、MOVDS,0200H(×)改:
MOVAX,0200H
MOVDS,AX
5、ADDAX,BX[SI](×)
改:
ADDAX,[BX][SI
四、写出下面程序段的运行结果或功能(每空2分,共15分)
1、已知(SP)=100H,执行指令
POPAX
PUSHCX
PUSHDX后,则(SP)=0FEH
2、已知(BX)=128,执行指令
DECBX
MOVAX,BX
NEGAX
INCAX
ADDBX,AX后
则(BX)=0001H(AX)=FF82H
3、执行指令
MOVAL,85H
SUBAL,36H
DAS
MOVBH,AL
ADDAL,36H后
则(AL)=7FH(BH)=___49H______
五、编程(30分)
1、试编写一汇编程序段,完成下面数学表达式的功能。
W=X+Y–Z(W,X,Y,Z均为双字变量)
答案:
MOVAX,X
ADDAX,Y
MOVBX,X+2
ADCBX,Y+2
SUBAX,Z
SBBBX,Z+2
MOVW,AX
MOVW+2,BX
2、设在数据段,附加段,和堆栈段中,分别定义了字变量X、Y、Z,试编制一完整的汇编语言程序,计算:
W=X+Y+Z(设X=0250H,Y=0660H,Z=0320H)
答案:
TITLECALCULATEW=X+Y+Z
DATASEGMENT
XDW0250H
WDW?
DATAENDS
STACKSEGMENTPARASTACK‘stack’
ZDW0320H
DB100DUP(?
)
STACKENDS
EXTRASEGMENT
YDW0660H
EXTRAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
EXTRA,SS:
STACK
BEGIN:
MOVAX,DATA
MOVDS,AX
MOVAX,ERTRA
MOVES,AX
MOVAX,X
ADDAX,ES:
Y
ADDAX,SS:
Z
MOVW,AX
MOVAH,4CH
INT21H
CODEENDS
ENDBEGIN
汇编语言程序设计复习参考题三
一、填空(20分,每空1分)。
1、当由逻辑地址转换为物理地址时,是将段寄存器的内容左移(4)位,再加上偏移量形成(20)位的物理地址。
2、现对一个字节/字的数求反用指令(NOT)。
3、JMP指令的段内直接寻址的目标代码为二字节长,该指令首字节偏移量为200H,那么正的相对转移能到达的最远的偏移量是(281H),负的相对转移能到达的最远的偏移量是(182H)。
4、表示宏定义结束和重复汇编结束是用伪指令(ENDM)实现。
5、在debug状态下装入可执行文件后,程序的目标代码和数据已全部送入内存指定单元,此时DS、ES将指向(程序段前缀的段基值)。
6、写出下列指令中存储器操作数的物理地址计算表达式:
(1)MOVAL,[SI]
则___PA=DS*16+(SI)______
(2)SUB40H[BX],AX
则____PA=DS*16+(40H+BX)_____
(3)INCSS:
5[BX][SI]
则____PA=SS*16+(5+BX+SI)_______
7、在8086/8088CPU中,可用与作地址指针的寄存器有(BX),(BP),(SP),(SI)和DI。
8、8086/8088在程序中表达一个存储单元地址是用逻辑地址,逻辑地址是由(段基址)和(偏移地址)两部分组成。
9、若CS=5200H,某条指令第一字节物理地址为5A230H,当CS=7800H时,该条指令第一字节物理地址是(80230H)。
10、输入输出的控制方式有(程序控制)、(中断)、(DMA)。
二、单项选择题(20分)
1、执行下列指令时,需要使用段寄存器DS的是(B)
A.PUSHFB.MOV[BX],AXC.SAHFD.MOV[BP],CX
2、SP=F000H,BH=20H,BL=08H,执行PUSHBX指令后(D)
A.SP=0F002H,(0F001H)=20H,(0F002H)=08H
B.SP=0EFFEH,(0EFFFH)=08H,(0EFFEH)=20H
CSP=0EFFFH,(0F000H)=20H,(0F002H)=08H
D.SP=0EFFEH,(0EFFFH)=20H,(0EFFEH)=08H
3、下列语句有语法错误的语句是(A)
A.MOVAX,[BX][BP]
B.ADDAX,[BX]
C.CMP[BX],0FH
D.LEASI,20H[BX]
3、取MOVBX,0123H指令的源操作数时,使用的逻辑地址是(C)
A.无B.DS:
0123HC.CS:
IPD.ES:
0123H
5、两个非组合型BCD码数据相减后,执行减法校正指令AAS时,首先检查是否需要校正。
需要校正的条件有(D)
A.AL中的数>9,且AF=1
B.AL中低四位的数>9,且AF=1
C.AL中的数>9,或AF=1
D.AL中低四位的数>9,或AF=1
6、用REPNECMPSB指令作两个字符串比较时,如果CX≠0,比较结束,原因是(