汇编语言模拟试题文档格式.docx
- 文档编号:21684568
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:36
- 大小:52.04KB
汇编语言模拟试题文档格式.docx
《汇编语言模拟试题文档格式.docx》由会员分享,可在线阅读,更多相关《汇编语言模拟试题文档格式.docx(36页珍藏版)》请在冰豆网上搜索。
B.PUSHAXD.MOVCX,AX
PUSHBXMOVBX,CX
POPAXMOVAX,BX
POPBX
13.定义宏Max,求两个数的最大数。
定义如下:
MaxMacroA,B,C
CMPA,B
JLLESS
MOVC,A
JMPDONE
LESS:
MOVC,B
DONE:
ENDM
则下列调用方式正确的是:
()
A.Maxax,bx,cx
B.CALLMaxax,2,cx
C.Max1,2,cx
D.Maxax,bl,cx
14.8086CPU的工作模式为M1,PentiumCPU复位后到引导OS之间工作模式为M2,引导OS后正常工作模式为M3,在Window98下运行一个DOS程序此时工作模式为M4。
则M1,M2,M3,M4为()
A.实模式,实模式,保护模式,保护模式
B.实模式,保护模式,保护模式,虚拟8086模式
C.虚拟8086模式,实模式,保护模式,保护模式
D.实模式,实模式,保护模式,虚拟8086模式
15.DEBUG调试程序中内存数据显示命令是()
A.U命令B.D命令C.A命令D.E命令
二.填空题。
(20分)
1.在C语言中用“unsignedchara;
signedshortb;
”定义两个变量a,b,则a为无符号字节数,b为16位补码数。
写出a,b两个变量表示的十进制数的范围。
a:
,b:
。
2.已知AX寄存器的内容为000FH,执行DIVAL后,AL的值为。
3.已知AX寄存器的内容为FFFFH,执行ANDAH,81H后,AH的值为
;
执行TESTAL,81H后,AL的值为。
4.已知(BX)=0005H,变量Buffer的偏移地址为1000H,当前(DS)=1000H。
CPU在执行MOVAX,Buffer[BX]时,寻址的物理地址为。
5.从1234号端口读入一个字节,并存放到DL寄存器的指令序列为:
6.Li(i=1,2,…,7)为已定义的标号。
现定义地址表AddrTable:
AddrTableDWL1,L2,L3,L4,L5,L6,L7。
那么指令JMPAddrTable[6]转移到的标号为:
7.两个模块中定义的PUBLIC段进行合并的条件是:
相同且相同。
8.模块1中定义了Far型的子程序GlobalFunc,在模块2中要调用GlobalFunc。
为支持模块1和模块2通讯,模块1中使用的伪指令为:
,模块2为:
9.指令序列:
MOVAX,0001H
MOVBX,0002H
PUSHAX
PUSHBX
POPECX
执行完后,32位寄存器ECX的值为:
10.根据下列数据定义伪指令,填写定义的数据在内存单元中的存放形式。
1.STRINGDB‘A’,’B’,’C’,’DEF’
DW‘GH’
2.BUFFERDW1,-1
DD1234H,2000H
3.DATADB2DUP(-1,2DUP(1,2))
三.分析下面程序段,回答指定问题。
(11分)
1.MOVBL,3EH
ANDBL,9AH
ORBL,78H
XORBL,56H
MOVCL,4
RORBL,CL
问:
执行上段程序后,BL=。
2.ORG1001H
DATA1EQUTHISBYTE
DATA2DW$,$+1,$+2,$+3
DATA3DWDATA1
MOVAL,DATA1
MOVBX,DATA2+3
MOVCX,DATA3
执行上段程序后,AL=,BX=,CX=。
3.SUBAX,AX
MOVBX,1
MOVCX,10
A:
ADDAX,BX
ADDBX,3
LOOPA
问:
执行上段程序后,AX=,BX=,CX=。
四.编写完成下述功能的程序片段。
(15分)
1.在附加段中定义了一个字节缓冲区Buffer,长度为100。
用串操作指令将这个缓冲区每个字节都置为0FFH。
2.编写程序完成下列框图功能的程序片段。
3.在C语言中定义了一个字节型无符号数组BUFFER,要求用__asm嵌入
汇编程序,来找出其中的最大值,送入变量MAX中。
C程序给出如下,编写嵌入的汇编代码。
intmain()
{
unsignedcharBUFFER[100];
//定义字节型缓冲区
unsignedcharMAX;
//保存结果
__asm{//嵌入汇编语言
//在此处编写嵌入的汇编代码
}
return0;
}
五.程序设计。
(编写完整的程序,24分)
1.Buffer缓冲区中有100个有符号Word数,查找中间是否存在数“-1”,如果存在,显示“Y”;
否则,显示“N”。
2.数据区中定义了4个Word变量X,Y,Z和Result,编写一个程序求X、Y、Z三数的平均值(不考虑余数),结果送入Result中。
要求:
求平均值部分写一个子程序Average3;
主程序和子程序之间所有参数都采用堆栈进行传递。
ES_LEFTEQU0001H;
左对齐
ES_CENTEREQU0002H;
居中对齐
ES_RIGHTEQU0004H;
右对齐
ES_MULTILINEEQU0008H;
多行显示
ES_UPPERCASEEQU0010H;
显示大写字母
ES_LOWERCASEEQU0020H;
显示小写字母
ES_PASSWORDEQU0040H;
密码框方式
ES_AUTOVSCROLLEQU0080H;
自动加垂直滚动条
ES_AUTOHSCROLLEQU0100H;
自动加水平滚动条
ES_READONLYEQU0200H;
输入框只读
3.输入框(Edit)控件是Windows窗口程序常用的一种控件,它负责接受从键盘输入的字符。
为控制Edit控件的外观特点,显示和对齐方式等,我们为它定义一些属性,每一个属性用一个Word的常数来表示,该数只有某一位(bit)为1,其它位为0。
Edit控件的所有属性用一个Word型的字来表示,该字的每一位(bit)表示一种相应属性,称该字为属性字。
Edit控件的属性定义如下:
例如属性字0009H表示Edit控件属性为左对齐且多行显示;
属性字0202H表示Edit控件属性为居中对齐且只读。
现假设AX寄存器里面存放要建立的Edit控件的属性字,该属性字包含一些初始属性。
编写一个完整的程序,对该属性字进行处理,来按顺序完成下列功能:
1.为Edit控件添加两个属性ES_LEFT和ES_MULTILINE;
2.测试Edit控件是否有属性ES_RIGHT,如果有,删除该属性;
3.测试Edit控件是否有属性ES_AUTOVSCROLL,如果有,删除该属性;
如果没有,添加该属性;
4.测试Edit控件是否同时具有ES_UPPERCASE和ES_LOWERCASE两个属性。
如果是,显示一个字符串“EditBoxStyleError!
”;
否则,显示一个字符串“EditBoxStyleRight!
5.程序结束。
程序如下:
;
定义符号常数;
你的代码如下;
模拟试题六参考答案
一.选择题(15*2=30)
CDABADADDDDDADB
二.填空(1-9,每题1’;
10题7’,2+3+2)
1.0-255,-32768-32767
2.1
3.81H,0FFH
4.11005H
5.movdx,1234inal,dxmovdl,al
6.L4
7.段名类型属性
8.publicglobalfuncexternglobalfunc:
FAR
9.00010002H
10.
‘A’
‘B’
‘C’
‘D’
‘E’
‘F’
‘H’
‘G’
01H
00H
FFH
34H
12H
20H
02H
三.分析下面程序段,回答指定问题(11’)
1.0C2H(2’)
2.01H,0710H,1001H(3’)
3.145,31,0(6’)
四.编写完成下述功能的程序片段
1.(5’)
CLD(1’)
MOVCX,100(1’)
MOVAL,0FFH(1’)
LEADI,BUFFER(1’)
REPSTOSB(1’)
2.(5’)
CMPAL,0
JGNEXT(1’)
MOVAH,-1
JMPDONE(1’)
NEXT:
CMPAL,8
JGNEXT2(1’)
MOVAH,0
JMPDONE(1’)
NEXT2:
MOVAH,1(1’)
MOVDL,AH
3.(5’)
MOVAL,BUFFER
MOVECX,100(1’)
MOVESI,0(1’)
AGAIN:
CMPAL,BUFFER[ESI]
JAENEXT(1’)
MOVAL,BUFFER[ESI]
INCESI(1’)
LOOPAGAIN
MOVMAX,AL(1’)
1.(6’)
DATASEGMENT(1’)
BUFFERDW100DUP(?
)(1’)
DATAENDS
CODESEGMENT
START:
ASSUMEDS:
DATA,CS:
CODE
MOVAX,DATA
MOVDS,AX
MOVCX,100
MOVSI,0
CMPBUFFER[SI],-1
JEFOUND(1’)
ADDSI,2(2’)
MOVAH,2
MOVDL,’N’
INT21H
FOUND:
MOVAH,2(1’)
MOVDL,’Y’
MOVAH,4CH
CODEENDS
ENDSTART
2.(9’)
DATASEGMENT(1’)
XDW?
(1’)
YDW?
ZDW?
RESULTDW?
ASSUMEDS:
MOVAX,DATA
MOVDS,AX
SUBSP,2(1’)
PUSHX(1’)
PUSHY
PUSHZ
CALLAVERAGE3
POPRESULT(1’)
AVERAGE3PROCNEAR(1’)
PUSHBP
MOVBP,SP
PUSHDX
PUSHBX
MOVAX,4[BP](1’)
ADDAX,6[BP]
ADDAX,8[BP]
CWD
MOVBX,3
IDIVBX(1’)
MOV10[BP],AX
POPBX
POPDX
POPAX
POPBP
RET6(1’)
AVERAGE3ENDP
3.(9’)
DATASEGMEMT(1’)
STRING1DB‘EditBoxStyleError$’(1’)
STRING2DB‘EditBoxStyleRight$’
ORAX,ES_LEFT(1’)
ORAX,ES_MULTILINE
TESTAX,ES_RIGHT(1’)
JZGOON
XORAX,ES_RIGHT
GOON:
(2’)
XORAX,ES_AUTOVSCROLL
TESTAX,ES_UPPERCASE(2’)
JNZRIGHT
TESTAX,ES_LOWERCASE
PUSHAX
MOVAH,9(1’)
LEADX,STRING1
INT21H
POPAX
JMPDONE
RIGHT:
MOVAH,9
LEADX,STRING2
模拟试题七
1.用来存放下一条将要执行的指令代码段地址的寄存器是()。
A.SPB.ESC.IPD.CS
2.要使串处理指令从高地址向低地址顺序连续执行,应先执行的指令是()。
A.STIB.CLCC.STDD.CLD
3.已知(AL)=41H,(AH)=5AH,CPU执行SUBAL,AH指令后,标志寄存器各位的值正确的是()
4.使状态标志位CF清零的错误指令是()。
A.SUBAX,AXB.CLCC.ORAX,AXD.MOVCF,0
5.下面的数据传送指令中,错误的操作是()。
A.MOVWORDPTR[BX],1000HC.OUT200,AL
B.MOVCX,1000HD.MOV[BP+DI],1000H
6.SAR(算术移位指令)可作一定程度上的除2运算,若AL中的内容为-3,则指令SARAL,1执行后,AL中补码数的值为()
A.-3B.-1.5C.-1D.-2
7.宏MyMacro定义如下:
MyMacroMacroA,B,C
MOVC,B
A.MyMacro[1000H],bx,cx
B.CALLMyMacroax,2,cx
C.MyMacro[1000H],[1002H],cx
D.MyMacroax,bl,1
8.执行下列指令后,SP寄存器的值正确的是()。
MOVSP,2000H
A.1FFFHB.1FFEHC.2001HD.2002H
9.完成BL+CLà
AL的错误操作是()。
A.ADDAL,BLC.XCHGAL,CL
ADDAL,CLADDAL,BL
B.ADDBL,CLD.MOVAL,BL
MOVAL,BLADDAL,CL
10.执行下面指令序列后,正确的结果是()。
MOVAH,40H
ADDAH,AH
ADCAH,AH
A.AH=00HB.AH=100HC.AH=200HD.AH=01H
11.执行下列程序段后,正确的结果是()。
MOVAL,80H
MOVBL,08H
CBW
IDIVBL
A.AH=00HB.AH=0FFHC.AH=00HD.AH=0FFH
AL=10HAL=0F0HAL=0F0HAL=10H
12.完成当BX≥0时转GREAT,当BX<
0时转LITTLE,错误的操作是()。
A.ORBX,BXC.CMPBX,0
JSLITTLEJGEGREAT
GREAT:
LITTLE:
……
B.TESTBX,8000HD.MOVAX,BX
JZGREATJSLITTLE
GREAT:
13.定义如下地址表:
ADDRTABLEDWL1,L2,L3,L4,L5,L6,则指令
JMPADDRTABLE[4]转入的标号是()
A.L2B.L3C.L4D.L5
14.下面指令组完成将字单元BUF1和BUF2的内容互换,错误的操作是()。
A.XCHGBUF1,BUF2C.MOVAX,BUF1
XCHGAX,BUF2
MOVBUF1,AX
B.MOVAX,BUF1D.MOVAX,BUF1
MOVBX,BUF2MOVBX,BUF2
MOVBUF2,AXXCHGAX,BX
MOVBUF1,BXMOVBUF1,AX
MOVBUF2,BX
15.两个模块中分别定义两个逻辑段S1,S2,下列不是S1、S2合并的必要条件的是()
A.S1、S2的组合属性必须都为PUBLIC或者STACK
B.S1、S2的对齐属性必须相同
C.S1、S2的类别必须相同
D.S1、S2的段名必须相同
1.为了方便用户使用外设,IBM-PC机提供了两种典型的例行子程序供用户编程调用,它们是和系统功能调用。
它们都是系统编制的子程序,通过方式来调用所需的子程序。
2.在算术运算中,判断无符号数运算是否溢出应根据标志位,判断有符号数运算是否溢出应根据标志位。
3.8086/8088系统中,一个20位的物理地址是由和组成的。
已知(BX)=0008H,(SI)=0002H,变量Buffer的偏移地址为1000H,当前(DS)=1000H。
CPU在执行XCHGAX,Buffer[BX][SI]时,寻址的物理地址为。
4.80386系统中,(EAX)=00001234H,(EBX)=00000002H,则操作数4[EAX][EBX*4]的地址为:
5.模块1中定义了WORD型的变量BUFFER,在模块2中要直接使用BUFFER。
6.写出对应指令,完成如下功能。
a)将AX的低四位清零,其它不变。
b)将BX的低四位置1,其它不变。
c)将CX的低四位求反,其它不变。
7.用数据定义伪指令定义数据块BLOCK,要求数据依次为:
3个BYTE型的-1,5个WORD型的0,7个DWORD型的1。
8.设有宏定义如下:
SHIFTMACROX,Y
MOVCL,X
SALY,CL
EN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 模拟 试题