还剩10页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
汇编语言面试高频题目及详细答案
一、单选题(每题2分,共20分)
1.下列哪条是汇编语言中的数据定义指令?()A.MOVAX,BXB.ADDAX,BXC.DB10HD.CALLSUB【答案】C【解析】DB是定义字节(byte)的指令
2.在8086汇编语言中,哪个寄存器用于存储栈指针?()A.AXB.BXC.SPD.BP【答案】C【解析】SP(StackPointer)寄存器用于存储栈顶的地址
3.下列哪条指令用于将立即数10H移入AL寄存器?()A.MOVAX,10HB.MOVAL,10HC.MOVBX,10HD.MOVCL,10H【答案】B【解析】MOVAL,10H将立即数10H移入AL寄存器
4.在汇编语言中,哪个指令用于跳转到标签Label?()A.JUMPLabelB.JMPLabelC.GOLabelD.CALLLabel【答案】B【解析】JMP是跳转指令,用于无条件跳转到指定的标签
5.下列哪条指令用于将AX寄存器的值与BX寄存器的值相加,结果存回AX寄存器?()A.ADDAX,BXB.SUBAX,BXC.MULBXD.DIVBX【答案】A【解析】ADDAX,BX将AX和BX的值相加,结果存回AX
6.在8086汇编语言中,哪个段寄存器用于存储代码段地址?()A.DSB.ESC.SSD.CS【答案】D【解析】CS(CodeSegment)寄存器用于存储代码段地址
7.下列哪条指令用于将BX寄存器的值减去10H,结果存回BX寄存器?()A.SUBBX,10HB.ADDBX,10HC.INCBXD.DECBX【答案】A【解析】SUBBX,10H将BX的值减去10H,结果存回BX
8.在汇编语言中,哪个指令用于将AX寄存器的值左移一位,最高位进CF寄存器?()A.SHLAXB.SHLAX,1C.SARAXD.ROLAX【答案】B【解析】SHLAX,1将AX的值左移一位,最高位进CF寄存器
9.下列哪条指令用于将AX寄存器的值右移一位,最低位进CF寄存器?()A.SHRAXB.SHRAX,1C.SARAXD.RORAX【答案】B【解析】SHRAX,1将AX的值右移一位,最低位进CF寄存器
10.在汇编语言中,哪个指令用于调用子程序?()A.JUMPSUBB.CALLSUBC.GOSUBD.EXECSUB【答案】B【解析】CALL是调用子程序的指令,用于跳转到指定的子程序
二、多选题(每题4分,共20分)
1.以下哪些是8086汇编语言中的数据传送指令?()A.MOVB.ADDC.PUSHD.POPE.CMP【答案】A、C、D【解析】MOV、PUSH、POP是数据传送指令,ADD和CMP不是
2.以下哪些是8086汇编语言中的逻辑运算指令?()A.ANDB.ORC.XORD.ADDE.SUB【答案】A、B、C【解析】AND、OR、XOR是逻辑运算指令,ADD和SUB是算术运算指令
3.以下哪些是8086汇编语言中的跳转指令?()A.JMPB.JZC.JNCD.ADDE.SUB【答案】A、B、C【解析】JMP、JZ、JNC是跳转指令,ADD和SUB是算术运算指令
4.以下哪些是8086汇编语言中的堆栈操作指令?()A.PUSHB.POPC.MOVD.CALLE.RET【答案】A、B、D、E【解析】PUSH、POP、CALL、RET是堆栈操作指令,MOV不是
5.以下哪些是8086汇编语言中的算术运算指令?()A.ADDB.SUBC.MULD.DIVE.AND【答案】A、B、C、D【解析】ADD、SUB、MUL、DIV是算术运算指令,AND是逻辑运算指令
三、填空题(每题4分,共20分)
1.在8086汇编语言中,用于存储堆栈段地址的段寄存器是______【答案】SS
2.下列指令______用于将立即数10H移入BL寄存器【答案】MOVBL,10H
3.下列指令______用于将AX寄存器的值与BX寄存器的值相加,结果存回AX寄存器【答案】ADDAX,BX
4.下列指令______用于将BX寄存器的值减去20H,结果存回BX寄存器【答案】SUBBX,20H
5.下列指令______用于将AX寄存器的值左移两位,最高位进CF寄存器【答案】SHLAX,2
四、判断题(每题2分,共10分)
1.两个正数相加,和一定比其中一个数大()【答案】(√)【解析】两个正数相加,和一定比其中一个数大
2.两个负数相加,和一定比其中一个数小()【答案】(√)【解析】两个负数相加,和一定比其中一个数小
3.在8086汇编语言中,SP寄存器用于存储栈顶的地址()【答案】(√)【解析】SP寄存器用于存储栈顶的地址
4.在汇编语言中,JMP指令用于调用子程序()【答案】(×)【解析】JMP是无条件跳转指令,CALL用于调用子程序
5.在汇编语言中,ADD指令用于将两个寄存器的值相减()【答案】(×)【解析】ADD指令用于将两个寄存器的值相加,SUB指令用于相减
五、简答题(每题5分,共15分)
1.简述8086汇编语言中的段寄存器及其作用【答案】8086汇编语言中的段寄存器包括CS、DS、ES、SSCS(CodeSegment)用于存储代码段地址,DS(DataSegment)用于存储数据段地址,ES(ExtraSegment)用于存储扩展段地址,SS(StackSegment)用于存储堆栈段地址
2.简述8086汇编语言中的堆栈操作指令及其作用【答案】8086汇编语言中的堆栈操作指令包括PUSH和POPPUSH指令用于将数据压入堆栈,POP指令用于将数据从堆栈中弹出
3.简述8086汇编语言中的跳转指令及其作用【答案】8086汇编语言中的跳转指令包括JMP、JZ、JNC等JMP指令用于无条件跳转到指定的地址,JZ指令用于在零标志位为真时跳转到指定的地址,JNC指令用于在进位标志位为假时跳转到指定的地址
六、分析题(每题10分,共20分)
1.分析以下8086汇编语言代码的功能```assemblyMOVAX,1000HMOVBX,2000HADDAX,BXMOVCX,AX```【答案】该代码的功能是将AX和BX寄存器的值相加,结果存回AX寄存器,然后将AX寄存器的值移入CX寄存器具体步骤如下-将立即数1000H移入AX寄存器-将立即数2000H移入BX寄存器-将AX和BX的值相加,结果存回AX寄存器-将AX寄存器的值移入CX寄存器
2.分析以下8086汇编语言代码的功能```assemblyMOVAX,3000HMOVBX,4000HSUBAX,BXMOVDX,AX```【答案】该代码的功能是将AX和BX寄存器的值相减,结果存回AX寄存器,然后将AX寄存器的值移入DX寄存器具体步骤如下-将立即数3000H移入AX寄存器-将立即数4000H移入BX寄存器-将AX和BX的值相减,结果存回AX寄存器-将AX寄存器的值移入DX寄存器
七、综合应用题(每题25分,共25分)编写一段8086汇编语言代码,实现将AX寄存器的值与BX寄存器的值相加,并将结果存储在CX寄存器中如果结果大于1000H,则将DX寄存器的值设置为1,否则设置为0【答案】```assemblyMOVAX,1000HMOVBX,2000HADDAX,BXMOVCX,AXCMPCX,1000HJGSET_DX_1SET_DX_0:MOVDX,0JMPENDSET_DX_1:MOVDX,1END:```该代码的功能是将AX和BX寄存器的值相加,并将结果存储在CX寄存器中如果结果大于1000H,则将DX寄存器的值设置为1,否则设置为0具体步骤如下-将立即数1000H移入AX寄存器-将立即数2000H移入BX寄存器-将AX和BX的值相加,结果存回AX寄存器-将AX寄存器的值移入CX寄存器-比较CX寄存器的值与1000H-如果CX寄存器的值大于1000H,则将DX寄存器的值设置为1-如果CX寄存器的值不大于1000H,则将DX寄存器的值设置为0
八、完整标准答案
一、单选题
1.C
2.C
3.B
4.B
5.A
6.D
7.A
8.B
9.B
10.B
二、多选题
1.A、C、D
2.A、B、C
3.A、B、C
4.A、B、D、E
5.A、B、C、D
三、填空题
1.SS
2.MOVBL,10H
3.ADDAX,BX
4.SUBBX,20H
5.SHLAX,2
四、判断题
1.√
2.√
3.√
4.×
5.×
五、简答题
1.8086汇编语言中的段寄存器包括CS、DS、ES、SSCS用于存储代码段地址,DS用于存储数据段地址,ES用于存储扩展段地址,SS用于存储堆栈段地址
2.8086汇编语言中的堆栈操作指令包括PUSH和POPPUSH用于将数据压入堆栈,POP用于将数据从堆栈中弹出
3.8086汇编语言中的跳转指令包括JMP、JZ、JNC等JMP用于无条件跳转到指定的地址,JZ用于在零标志位为真时跳转到指定的地址,JNC用于在进位标志位为假时跳转到指定的地址
六、分析题
1.该代码的功能是将AX和BX寄存器的值相加,结果存回AX寄存器,然后将AX寄存器的值移入CX寄存器具体步骤如下-将立即数1000H移入AX寄存器-将立即数2000H移入BX寄存器-将AX和BX的值相加,结果存回AX寄存器-将AX寄存器的值移入CX寄存器
2.该代码的功能是将AX和BX寄存器的值相减,结果存回AX寄存器,然后将AX寄存器的值移入DX寄存器具体步骤如下-将立即数3000H移入AX寄存器-将立即数4000H移入BX寄存器-将AX和BX的值相减,结果存回AX寄存器-将AX寄存器的值移入DX寄存器
七、综合应用题```assemblyMOVAX,1000HMOVBX,2000HADDAX,BXMOVCX,AXCMPCX,1000HJGSET_DX_1SET_DX_0:MOVDX,0JMPENDSET_DX_1:MOVDX,1END:```该代码的功能是将AX和BX寄存器的值相加,并将结果存储在CX寄存器中如果结果大于1000H,则将DX寄存器的值设置为1,否则设置为0具体步骤如下-将立即数1000H移入AX寄存器-将立即数2000H移入BX寄存器-将AX和BX的值相加,结果存回AX寄存器-将AX寄存器的值移入CX寄存器-比较CX寄存器的值与1000H-如果CX寄存器的值大于1000H,则将DX寄存器的值设置为1-如果CX寄存器的值不大于1000H,则将DX寄存器的值设置为0。
个人认证
优秀文档
获得点赞 0