汇编主观试题库.docx
《汇编主观试题库.docx》由会员分享,可在线阅读,更多相关《汇编主观试题库.docx(23页珍藏版)》请在冰点文库上搜索。
汇编主观试题库
汇编主观试题
填空题
1.假设(DS)=2000H,(ES)=3000H,(SS)=4000H,(SP)=100H,(BX)=200H,(SI)=1,(DI)=2,(BP)=256,字变量ARRAY偏移地址为0050H,
(20250H)=1234H,(40100H)=00A0H,(40102H)=2200H。
填空回答下列问题。
(1)MOVAX,[BP][DI];源操作数物理地址=H
指令执行后(AX)=H
(2)POPAX;源操作数物理地址=H
指令执行后(AX)=H
(3)LEADI,ARRAY;源字段的寻址方式是
指令执行后(DI)=H
(4)JMPBX;指令执行后(IP)=H
(5)ADDAL,BYTEPTRARRAY[BX];源字段的寻址方式是
指令执行后(AL)=H
2.假设(CS)=1000H,(DS)=2000H,(ES)=3000H,(SS)=4000H,(SP)=100H,(BX)=200H,
(SI)=1,(20200H)=400H,(30200H)=1400H,(20202H)=0004,(20204H)=202H,
(21400H)=1234H,(21405H)=5678H。
执行下列程序段(注意:
不是单条指令),填空回答问题:
MOVBP,256;源字段的寻址方式是
;指令执行后(BP)=H
PUSHES:
[BX];源操作数物理地址=H
MOVDI,3[BX][SI];(DI)=H
DECSI;源字段的寻址方式是
;指令执行后(SI)=H
INC[DI];目的操作数物理地址=H
MOVAX,[DI];(AX)=H
ADD-2[BP],AX;目的操作数物理地址=H
POPBX
MOVAX,[BX+SI];程序段执行完后,(AX)=H
3.假设数据区数据定义如下:
ORG100H
ADB‘34’
BDD1
XLABELBYTE
YDW‘AB’
执行下列程序段并填空。
LEADI,B;(DI)=H
MOVAX,WORDPTRA;(AX)=H
MOVBX,OFFSETX;(BX)=H
LEABP,Y;(BP)=H
MOVCL,X;(CL)=H
注:
1,2,3,4的ASCII码为31H,32H,33H,34H;
A,B,C,D的ASCII码为41H,42H,43H,44H。
4.假设数据区数据定义如下:
ORG200H
ADB‘AB’
BDB4DUP(1,2,3)
XLABELBYTE
YDW‘12’
执行下列程序段并填空。
LEASI,B;(SI)=H
MOVAX,WORDPTRA;(AX)=H
LEABX,X;(BX)=H
MOVDI,OFFSETY;(DI)=H
MOVDL,X+1;(DL)=H
注:
1,2,3,4的ASCII码为31H,32H,33H,34H;
A,B,C,D的ASCII码为41H,42H,43H,44H。
5.分析下列指令并填空:
MOVBH,38H
ADDBH,2FH
执行后,(BH)=,CF=,PF=,
AF=,ZF=,SF=。
6.分析下列指令并填空:
MOVAL,9CH
MOVDH,64H
ADDAL,DH
执行后,(AL)=,CF=,PF=,
AF=,ZF=,SF=。
7.分析下列指令并填空:
MOVAX,34F5H
ADDAX,95EBH
执行后,(AX)=,CF=,PF=,
AF=,ZF=,SF=。
8.分析下列指令并填空:
MOVBX,0AAAAH
ADDBX,5556H
执行后,(BX)=,CF=,PF=,
AF=,ZF=,SF=。
9.分析下列指令并填空:
MOVAX,94C2H
MOVBX,323EH
ADDAX,BX
MOVDX,AX
执行后,(DX)=,CF=,PF=,
AF=,ZF=,SF=。
10.已知程序段如下:
MOVAX,5678H
MOVCL,4
RORAX,CL
INCAX
MOVCX,2
MULCX
INT20H;程序结束
试问:
程序结束时,AX和DX的内容是什么?
11.下列程序段中的每条指令执行完后,AX寄存器的内容是什么?
MOVAX,0;(AX)=
DECAX;(AX)=
ADDAX,7FFFH;(AX)=
ADDAX,2;(AX)=
NOTAX;(AX)=
SUBAX,1;(AX)=
ADDAX,8000H;(AX)=
SUBAX,1;(AX)=
ANDAX,58D1H;(AX)=
SALAX,1;(AX)=
SARAX,1;(AX)=
NEGAX;(AX)=
RORAX,1;(AX)=
12.假设数据区数据定义如下:
ORG100H
ADW‘34’
BDD1
CDB5DUP(3DUP(0,1,2))
ORG13EH
XLABELWORD
YDB‘ABCD’
ZDWX+4,Y
NEQU70
阅读下列程序段并填空。
LEADI,C;(DI)=H
MOVAX,A;(AX)=H
LEABX,X;(BX)=H
MOVCX,Z;(CX)=H
LEADX,Z;(DX)=H
MOVSI,Z+2;(SI)=H
MOVBP,N;(BP)=H
MOVX+1,35H;(H)=35H
MOVAX,X+2;(AX)=H
MOVY+2,2;(H)=2
MOVAX,WORDPTRY+2;(AX)=H
13.假设X和X+2单元的内容为双精度数P,Y和Y+2单元的内容为双精度数Q,下列程序段使2P>Q时(AX)=1,2P≤Q时(AX)=2,请在下列程序段中填空。
MOVDX,X+2
MOVAX,X
ADDAX,X
DX,X+2
CMPDX,Y+2
L2
LI
CMPAX,Y
L2
L1:
MOVAX,1
EXIT
L2:
MOVAX,2
EXIT:
MOVAH,4CH
INT21H
14.下列程序段求双字长数的绝对值。
双字长数在A和A+2单元中,结果存放在B和B+2单元中。
请在下列程序段中填空。
MOVAX,A
MOVDX,A+2
TESTDX,
JZSTORE
NEG
NEG
SBBDX,
STORE:
MOV,AX
MOV,DX
15.分析下列程序的功能,写出堆栈最满时各单元的地址及内容。
SSEGSEGMENT‘STACK’AT1000H;堆栈的段地址为1000H
DW128DUP(?
)
TOSLABELWORD
SSEGENDS
;--------------------------------------------
DSEGSEGMENT
DW32DUP(?
)
DSEGENDS
;---------------------------------------------
CSEGSEGMENT
MAINPROCFAR
ASSUMECS:
CSEG,DS:
DSEG,SS:
SSEG
START:
MOVAX,SSEG
MOVSS,AX
MOVAX,DSEG
MOVDS,AX
MOVAX,4321H
CALLHTOA
RETN:
MOVAH,4CH
INT21H
MAINENDP
;---------------------------------------------
HTOAPROCNEAR
CMPAX,15
JLEB1
PUSHAX
PUSHBP
MOVBP,SP
MOVBX,[BP+2]
ANDBX,0FH
MOV[BP+2],BX
POPBP
MOVCL,4
SHRAX,CL
CALLHTOA
B1:
POPAX
B2:
ADDAL,30H
JLPRT
ADDAL,07
PRT:
MOVDL,AL
MOVAH,2
INT21H
RET
HTOAENDP
CSEGENDS
;;---------------------------------------------
ENDSTART
16.已知堆栈段寄存器SS的内容是0F0A0H,堆栈指针SP的内容是00B0H,先执行两条PUSH指令把8057H和0F79BH分别入栈,然后执行一条POP指令,试填出堆栈的初始状态以及每条指令执行后,堆栈的物理地址、堆栈内容以及SP内容的变化。
堆栈地址堆栈单元堆栈单元堆栈单元堆栈单元
()
()
()
()
SP
初始状态
PUSH
PUSH
POP
17.现有程序如下,主程序存放在段地址为18F4H的代码段中,请将程序运行到①、②、③、④、⑤、⑥处时堆栈的情况填入空格中,可用寄存器或标号来表示。
CODE1SEGMENT
START:
……
MOVAX,18E4H
MOVSS,AX
MOVSP,40H;①
…
PUSHAX
PUSHBX;②
CALLFARPTRSUBP1;③
BACK1:
……
……
CODE1ENDS
;--------------------------------------
CODE2SEGMENT
……
SUBP1PROCFAR
……
CALLNEARPTRSUBP2;④
BACK2:
……
RET4;⑥
SUBP1ENDP
;---------------------------------------
SUBP2PROCNEAR
……
RET;⑤
SUBP2ENDP
CODE2ENDS
ENDSTART
物理地址
堆栈
堆栈
堆栈
堆栈
堆栈
堆栈
(SP)=
①
②
③
④
⑤
⑥
18.将下列文件类型填入空格:
(1).exe
(2).asm(3).obj(4).crf(5).map(6).lst
编辑程序输出的文件有;
汇编程序输出的文件有;
连接程序输出的文件有。
简答题
19.假设(DS)=2000H,(ES)=3000H,(SS)=4000H,(SP)=100H,(BX)=200H
(DI)=2,(BP)=256,字变量ARRAY偏移地址为0050H,(30200H)=1234H,
(40100H)=0104H,(40102H)=0106H。
写出下列各条指令单独执行后相关寄存器
或存储单元的内容.
(1)MOVAX,[BP+DI]
(2)POPAX
(3)PUSHES:
[BX]
(4)LEADI,ARRAY
(5)JMPBX
20.现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(21200)=2AH,(21201)=4CH,(21202)=65H,(21203)=0B7H,试说明下列各条指令单独执行完后,相关寄存器或存储单元的内容。
(1)MOVAX,[1200H]
(2)ADDBX,[BX]
(3)SUBBH,BYTEPTR[BX+1100]
(4)XCHGBX,[BX][SI]
(7)SAR1100[BX][SI],1
21.假设(AX)=2000H,(BX)=1200H,(SI)=0002H,(DS)=3000H,(31200H)=50H,(31201H)=02H,(31202H)=0F7H。
请写出下列各条指令单独执行后,相关寄存器或存储单元的内容。
(1)ADDAX,1200H
(2)MOV[BX],AX
(3)SARBYTEPTR[SI+1200H],1
(4)JMPWORDPTR[BX]
(5)DECBYTEPTR[1200H]
22.假设(AX)=2000H,(BX)=1200H,(SI)=0002H,(DI)=0001H,(DS)=3000H,(SS)=3000H,(SP)=1000H,(31200H)=50H,(31201H)=02H,(31202H)=0F7H,(31203)=90H。
请写出下列各条指令单独执行后,相关寄存器或存储单元的
内容。
(1)SUBAX,BX
(2)PUSHAX
(3)ROLBYTEPTR[BX+SI+1],1
(4)JMPBX
(5)XORBYTEPTR[1200H],11H
23.试分析下列程序段执行完后,A单元的内容是什么?
DATASEGMENT
ADW0
BDW0
CDW230H,54,20
DATAENDS
CODESEGMENT
……
LEABX,C
MOVAX,[BX]
MOVB,AX
MOVAX,2[BX]
ADDAX,B
MOVA,AX
……
CODEENDS
24.执行下列指令后,AX寄存器中的内容是什么?
TABLEDW10,20,30,40,50
ENTRYDW3
┇
MOVBX,OFFSETTABLE
ADDBX,ENTRY
MOVAX,[BX]
25.执行下列指令后,AX寄存器中的内容是什么?
TABLEDW50,40,30,20,10
ENTRYDW5
┇
LEABX,TABLE
ADDBX,ENTRY
MOVAX,[BX]
26.已知程序段如下:
MOVAX,1234H
MOVCL,4
ROLAX,CL
DECAX
MOVCX,4
MULCX
INT20H;程序结束
试问:
程序结束时,AX和DX的内容是什么?
27.假设(CS)=24F6H,(IP)=634AH,请问:
(1)它们所指示的是什么段?
(2)它们所指示的存储单元保存的是数据还是指令?
(3)它们所表示的逻辑地址是多少?
(4)它们所表示的偏移地址是多少?
(5)它们所表示的物理地址是什么?
(6)它们所表示的段的最低地址是多少?
(7)它们所表示的段的最高地址是多少?
28.假设(DS)=12FAH,(SI)=54AEH,请问:
(1)它们所指示的是什么段?
(2)它们所指示的存储单元保存的是数据还是指令?
(3)它们所表示的逻辑地址是什么?
(4)它们所表示的偏移地址是多少?
(5)它们所表示的物理地址是什么?
(6)它们所表示的段的最低地址是多少?
(7)它们所表示的段的最高地址是多少?
29.已知下列程序段:
ADDAL,BL
JOL1
JCL2
CMPAH,BH
JGL3
JBL4
JMPL5
若给定AX和BX的值如下,说明程序的转向。
(1)(AX)=14C8H,(BX)=808DH
(2)(AX)=3F23H,(BX)=50D0H
30.对于下面两个数据段,偏移地址为100H和101H的两个字节中的数据是什么?
(1)DTSEGSEGMENT
ORG100H
DATADB10H,20H
DTSEGENDS
(2)DTSEGSEGMENT
ORG100H
DATADW1020H
DTSEGENDS
31.已知下列程序段:
ADDAL,BL
JOL1
JCL2
CMPAH,BH
JGL3
JBL4
JMPL5
若给定AX和BX的值如下,说明程序的转向。
(1)(AX)=D082H,(BX)=9F70H
(2)(AX)=427BH,(BX)=60DCH
32.已知下列程序段:
ADDAL,BL
JOL1
JCL2
CMPAH,BH
JGL3
JBL4
JMPL5
若给定AX和BX的值如下,说明程序的转向。
(1)(AX)=3F23H,(BX)=50D0H
(2)(AX)=0042H,(BX)=FF3DH
33.已知下列程序段:
ADDAL,BL
JOL1
JCL2
CMPAH,BH
JGL3
JBL4
JMPL5
若给定AX和BX的值如下,说明程序的转向。
(1)(AX)=0082H,(BX)=FF70H
(2)(AX)=3F42H,(BX)=503DH
34.已知下列程序段:
ADDAL,BL
JOL1
JCL2
CMPAH,BH
JGL3
JBL4
JMPL5
若给定AX和BX的值如下,说明程序的转向。
(1)(AX)=147BH,(BX)=80DCH
(2)(AX)=42C8H,(BX)=608DH
35.说明下列程序段的算术功能:
MOVCH,DL
MOVCL,4
SARDX,CL
SALCH,CL
SHRAX,CL
ORAH,CH
36.下列程序段中的X、N、M、RESULT均为数据段中的变量,其中N和M中分别存放数据10和20:
XORAX,AX
MOVBX,M
SUBBX,2
NEXT:
ADDAX,X[BX]
SUBBX,2
JGENEXT
MOVRESULT,AX
RET
问:
(1)这个程序段完成什么工作?
(2)定义一个适合这段程序的数据段。
37.下列程序段中的X、N、M、RESULT均为已定义的变量,其中N和M中分别存放数据100H和200H:
SUBAX,AX
LEABX,X
MOVCX,N
NEXT:
ADDAX,[BX]
ADDBX,2
DECCX
JGNEXT
MOVRESULT,AX
RET
问:
(1)这个程序段完成什么工作?
(2)定义一个适合这段程序的数据段。
38.分析下列程序并回答问题。
DATASEGMENT
CHARDB‘WHATTIMEISIT?
’,0
DATAENDS
;
CODESEGMENT
MAINPROCFAR
ASSUMECS:
CODE,DS:
DATA
START:
PUSHDS
SUBAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
;
MOVBX,OFFSETCHAR
CALLSEARCH
RET
MAINENDP
;
SEARCHPROCNEAR
NEXT:
TEST[BX],0FFH
JZRETURN
CMP[BX],‘A’
JNEPRINT
RETURN:
RET
PRINT:
INCBX
MOVAH,02;显示字符功能
MOVDL,‘N’
INT21H
JMPNEXT
SEARCHENDP
CODEENDS
ENDSTART
(1)该程序的功能是什么?
(2)该程序的运行结果是什么?
39.下列程序的功能是从键盘输入一串字符并回显在下一行,如:
键盘输入:
ABCDE(回车)
回显:
ABCDE
请指出程序中的错误,并改正之。
DATASEGMENT
MAXDB10
LENDB?
STRINGDB10DUP(0)
DATEENDS
;--