1、《汇编语言程序设计试题及答案》合集 汇编语言程序设计试题及答案 1.对于有符号数来说,下列哪个值最大(D) A:0F8H B:B C:82 D:123Q 2.下列有关汇编语言中标号命名规则中,错误是(D) A:一般由字母打头字符、数字串构成 B:标号长度不能超过31个字符 C:?和$不能单独作为标号 D: .号不可位于标号首 3.8088/8086存储器分段,每个段不超过(D ) A.64K个字
2、 B.32K个字节 C.1兆个字节 D.64K个字节 4.寻址指令MOV CX, [BX + DI + 20]使用是哪一种寻址方式(B) A:寄存器寻址 B:相对基址变址寻址 C:变址寻址 D:基址变址寻址 5.若AX= - 15要得到AX=15应执行指令是(A ) A.NEG AX B.NOT AX C.INC AX D.DEC AX 6.8086/8088系统执行传送指令MOV时( A) A.不影响
3、标志位 B.影响DF方向标志 C.影响SF符号标志 D.影响CF进位标志 7.若规定一种操作数中若干位维持不变,若干位置“1”,可以使用(B) A:NOT B:OR C:AND D:XOR 8.下列指令中段默认为堆栈段是( C) A.MOV AX,[BX+SI+10] B.ADD AX,ES:[SI] C.SUB [BX],[BP][DI] D. MOV DX,[1000H] 9.有关8086/8088微机系列,下列说法哪个是对(D)
4、 A:一种存储单元由16个二进制位构成,简称字。 B:当存储一种字数据时,低字节放高地址位,高字节放低地址位。 C:在内存空间中,可以无限分派段,且段大小不受限制。 D:段与段之间可以邻接,也可以重叠。 10.下列有关堆栈说法,错误是(D) A:以“先入后出”为原则。 B:栈区最高地址单元前一种单元为栈底。 C:运行中SP寄存器动态跟踪栈顶位置。 D:压栈和弹出都是以字节为单位。 11.表达过程定义结束伪指令是( A) A.ENDP B.ENDS C.END D.ENDM 12.BUF1 DB 3 DU
5、P(0,2 DUP (1,2),3) COUNT EQU $-BUF1 符号COUNT等价值是( B) A.6 B.18 C.16 D.9 13.下列标志位中,可以用来判断计算成果正负是(B) A:PF B:SF C:DF D:OF 14.下列指令对是( CD) A. MOV [100H], [BX] B.MOV DS, ES C. ADD
6、V[BX], CX D.MOV AX, 34H 15.下列哪个寄存器是属于指针寄存器(C) A:SI B:DX C:SP D:ES 二、填空题 (每题4 分,共 20 分) 1. 下列程序段求数组FLD平均值,成果在AL中。请将程序填写完整(不考虑溢出) FLD DW 10, -20, 30, -60, -71, 80, 79, 56 _LEA SI,FLD______ MOV CX, 8 XOR AX, AX R1:__ADD AX ,
7、[SI]_____ ADD SI, 2 LOOP R1 MOV CL, 8 IDIV CL HLT 2.MOV AX, 1090H SUB AX, 4AE0H JC L1 JO L2 JMP L3 上述程序执行后AX=___C5B0____,程序转向_____L1__ 3.假设寄存器AX=1234H,DX=0A000H MOV BX, 0 MOV CX, BX SUB CX, AX SBB BX, DX MOV AX, CX MOV DX, BX 上述程序段执行后AX=___0EDCCH____ ,DX=__5FFFH_____ 4.MOV AX, 234H MOV CL
8、 3 ROL AX, CL DEC AX MOV CX, 4 MUL CX 此段程序执行完后,(AX)= ___467CH____ , (CX)= _____4__ 5.DA1 DB 83H,72H,61H,94H,5AH ┇ MOV CX,WORD PTR [DA1] AND CX,0FH MOV AL,[DA1+3] SHL AL,CL 上述指令序列执行后,AL=___0A0H____,CL=___03H____。 三、简答题 (每题4 分,共 20 分) 1.如TABLE为数据段中0100单元
9、符号名,其中寄存内容为0FF00H,试问如下两条指令有什么区别?指令执行后,AX寄存器内容是什么? MOV AX,TABLE MOV AX,OFFSET TABLE 2.对于下面数据定义 TAB1 DW 10 DUP(?) TAB2 DB 10 DUP(?) TAB3 DB ‘1234’ ┇ MOV AX,SIZE TAB1 MOV BL,SIZE TAB2 MOV CL,SIZE TAB3 三个寄存器中值分别为多少? 4.已知某个人计算机0000:0080~0000:00B0区域内容如下: 0000:0080 CC A1 C
10、8 00 80 89 A8 98 65 43 35 23 12 45 C4 00 0000:0090 A4 78 98 56 90 00 00 78 49 03 28 B7 B8 9C A2 B8 0000:00A0 CC A1 C3 00 80 89 A8 98 65 43 35 23 12 45 C4 00 0000:00B0 2A 1B C8 04 00 33 11 23 DC 41 54 BB 90 45 33 01 试求执行软中断指令INT 23H时,系统将转移到哪里进入中断服务程序。 5.试计算逻辑地址4017:000A,4015:0002A和4010:0007
11、A对应物理地址。这三个物理地址阐明了什么问题? 四、编程题 (每题30 分,共 30分) 1.试编制一程序,记录DT_W字数组中正数、负数和0个数,并分别保留在C1,C2和C3变量中。 汇编语言程序设计试题及答案 一. 名词解释(本大题共5小题,每题3分,共15分)试解释下列名词含义。 1. 逻辑地址:逻辑地址由两个16位地址分量构成,其中一种为段基值,另一种为偏移量,两个分量均为无符号数编码。物理地址=段基值×16+偏移量 2. 物理地址:CPU通过地址总线向外发送20位地址,在访问内存单元前,CPU必须先将CPU内部逻辑地址转换为物理地址。 3. 标志寄存器:标志寄存
12、器(Flag Register)又称程序状态字(Program Status Word),是8086/088中唯一按位操作寄存器,该寄存器为16位,有效标志位共9位。其中,CF,PF,AF,ZF,SF,OF为状态标志,用于反应近来一次影响标志位算术或逻辑运算中运算过程、运算成果某些性质;TF,IF,DF为控制标志,用于控制CPU对某些特定事件处理方式以及CPU工作模式。 4. 存储器寻址方式:发生在指令执行周期,需要在执行周期内单独启动总线操作来完毕。比寄存器寻址、立即数寻址速度都慢。 5. 补码:计算机系统内部用于表达带符号数一种编码,正整数补码为其真值自身,负整数补码为其真值变反加1成
13、果。 二. 计算题(本大题共5小题,每题4分,共20分)试按照各小题规定给出计算成果。 1. 将十进制数100分别转换为二进制、十六进制数,它们表达形式分别为多少? 解:二进制为 01100100B,十六进制为64H。 2. 假设(DS)=0B00H,(BX)=0210H,对于指令MOV DS:120H[BX],AL,其目操作数物理地址为多少? 解:EA=(BX)+0120H=0330H,物理地址=(DS)*16+EA=B330H 3. 假设(BX)=0210H,(DI)=0060H,对于指令ADD DL,[BX][DI],其源操作数偏移量为多少? 解:偏移量=(BX)+(D
14、I)=0270H 4. 假设目前(SP)=0060H,持续执行5条PUSH指令后,(SP)=? 解:(SP)=0060H – 5*2 =0060H -000AH = 0056H 5. 对于一种十进制数 – 65,其二进制补码表达形式为多少? 解:先求二进制真值-01000001,变反加一补码为 三. 排错题(本大题共4小题,每题5分,共20分)每题列出了一条指令,判断该指令有无语法错误,假如存在语法错误,请指出详细错误原因,判断对给2分,分析对给3分,判断错误不给分。 1. PUSH 5588H 错误,操作数不能用立即数; 2. MOV DS, 1720H 错误,MO
15、V指令不能对段寄存器直接传送立即数; 3. ADD AX, CL 错误,寄存器长度不匹配; 4. AND AX,[DX] 错误,DX不用于存储器寻址。 四. 程序分析题(本大题共6小题,每题5分,共30分)每题列出了一段小程序片段和有关存储单元初始值,请按题目规定分析各程序片段运行成果。(寄存器中内容请使用十六进制形式给出) 1. 阅读如下程序片段 MOV AL,4CH MOV BL,0B5H ADD AL,BL 执行上述程序片段后,(AL)= 01H (1分),(BL)= 0B5H (1分), CF= 1 (1分),OF=
16、 0 (1分),PF= 0 (1分) 2. 阅读如下程序片段 MOV AL,0F3H MOV DL,0C4H ADD AL,DL AND AL,0FH 执行上述程序片段后,(AL)= 07H (1分),(AF)= 不确定 (1分), CF= 0 (1分),OF= 0 (1分),PF= 0 (1分) 3. 阅读如下程序片段 MOV AL,7EH MOV CL,04H ROL AL,CL 执行上述程序片段后,(AL)= 0F9H (2分),(CL)= 0
17、4H (1分), CF= 1 (1分),OF= 无意义 (1分) 4. 阅读如下程序片段 MOV AX,0632H MOV BX,0C202H SUB AX,BX INC AX 执行上述程序片段后,(AX)= 4431H (2分),(CF)= 1 (2分), OF= 0 (1分) 5. 阅读如下程序片段,假设(DS)=0100H,字节单元(01024H)=56H,字节单元(01025H)=28H MOV BX,0024H LEA BX,[BX] OR BX,0 ADC
18、 BX,[BX] 执行上述程序片段后,(BX)= 287AH (3分),(CF)= 0 (2分), OF= 0 (1分) 6. 阅读如下程序片段,假设(SP)=0064H MOV AX,0001H MOV BX,0002H PUSH AX PUSH BX POP AX POP BX 执行上述程序片段后,(AX)= 0002H (2分),(BX)= 0001H (2分), (SP)= 0064H (1分) 五. 程序设计题(本大题共2小题,第一小题7分,第二小题8分,
19、共15分) 1. 试编写一程序片段,实现BL高4位与低4位互相互换(7分) 解:MOV CL,4; ROL BL,CL 2. 试编写一程序片段,不使用乘除法指令,实现((AX)*5+14)/ 2功能(AX中数据理解为补码)(8分) 解:MOV BX,AX MOV CX,2 SAL AX,CX ADD AX,BX ADD AX,14 SAR AX,1 汇编语言程序设计试题及答案 六. 名词解释(本大题共5小题,每题3分,共15分)试解释下列名词含义。 6. 寄存器:计算机系统内,位于CPU内部存储单元,CPU访问此类存储单元不需要使用
20、总线。 7. 物理地址:CPU通过地址总线向外发送20位地址,在访问内存单元前,CPU必须先将CPU内部逻辑地址转换为物理地址。 8. 段基值:逻辑地址一种构成部分,用于指示一种段在内存中起始地址。 9. 寻址方式:指令获取操作数方式。 10. 补码:计算机系统内部用于表达带符号数一种编码,正整数补码为其真值自身,负整数补码为其真值变反加1成果。 七. 计算题(本大题共5小题,每题4分,共20分)试按照各小题规定给出计算成果。 6. 将十进制数100分别转换为二进制、十六进制数,它们表达形式分别为多少? 答案:二进制为 01100100B,十六进制为64H 7.
21、 假设(DS)=0C00H,(BX)=0210H,对于指令MOV DS:100H[BX],AL,其目操作数物理地址为多少? 答案:EA = (BX)+0100H = 0310H,物理地址 = (DS)*16 + EA = 0C000H + 0310H = 0C310H 8. 假设(BX)=0100H,(SI)=0020H,对于指令ADD DL,[BX][SI],其源操作数偏移量为多少? 答案:EA = (BX)+(SI)+ 0 = 0120H 9. 假设目前(SP)=0060H,持续执行5条PUSH指令后,(SP)=? 答案:每执行一条PUSH指令,(SP)被
22、减2,因此执行5条PUSH指令后,(SP)=0060H – 5*2 =0060H -000AH = 0056H 10. 对于一种十进制数 – 80,其二进制补码表达形式为多少? 答案:首先求得二进制真值为 – 01010000B,负数补码为变反加1成果,即 B 八. 排错题(本大题共4小题,每题5分,共20分)每题列出了一条指令,判断该指令有无语法错误,假如存在语法错误,请指出详细错误原因,判断对给2分,分析对给3分,判断错误不给分。 5. MOV CS, 0600H 参照答案:错误,不能使用MOV指令传递立即数给CS 6. PUSH 074CH
23、参照答案:错误,单操作数指令不能使用立即数 7. ADD AX, CL 参照答案:错误,寄存器长度不匹配 8. OR BX,[CX] 参照答案:错误,CX不能用于存储器寻址 九. 程序分析题(本大题共6小题,每题5分,共30分)每题列出了一段小程序片段和有关存储单元初始值,请按题目规定分析各程序片段运行成果。(寄存器中内容请使用十六进制形式给出) 7. 阅读如下程序片段 MOV AL,4CH MOV BL,86H ADD AL,BL 执行上述程序片段后,(AL)= 0D2H (1分),(BL)= 86H (1
24、分), CF= 0 (1分),OF= 0 (1分),PF= 1 (1分) 8. 阅读如下程序片段 MOV AL,0F3H MOV DL,0C4H ADD AL,DL AND AL,0FH 执行上述程序片段后,(AL)= 07H (1分),(AF)= 不确定 (1分), CF= 0 (1分),OF= 0 (1分),PF= 0 (1分) 注意:逻辑运算指令中,除NOT指令外,CF、OF均置0,AF为不确定 9. 阅读
25、如下程序片段 MOV AL,6FH MOV CL,04H ROL AL,CL 执行上述程序片段后,(AL)= 0F6H (2分),(CL)= 04H (1分), CF= 0 (1分),OF= 不确定 (1分) 注意:移位指令中,当指令移位次数不小于1时,OF为不确定 10. 阅读如下程序片段 MOV AX,0632H MOV BX,0C202H SUB AL,BL SBB AH,BH INC AX 执行上述程序片段后,(AX)= 4431H (2分),(
26、CF)= 1 (2分), OF= 0 (1分) 注意:INC指令不影响CF标志位 11. 阅读如下程序片段,假设(DS)=0100H,字节单元(01024H)=56H,字节单元(01025H)=28H MOV BX,0024H LEA BX,[BX] AND BX,0FFH ADC BX,[BX] 执行上述程序片段后,(BX)= 287AH (3分),(CF)= 0 (2分), OF= 0 (1分) 12. 阅读如下程序片段,假设(SP)=0064H MOV
27、 AX,0001H MOV BX,0002H PUSH AX PUSH BX POP AX POP BX 执行上述程序片段后,(AX)= 0002H (2分),(BX)= 0001H (2分), (SP)= 0064H (1分) 十. 程序设计题(本大题共3小题,每题5分,共15分)(注:不是唯一答案) 3. 试编写一程序片段,实现BL高4位与低4位互相互换(5分) 参照解答: MOV CL, 4 ROL BL, CL 4. 试编写一程序片段,不使用乘除法指令,实现((AX)*5
28、14)/ 2功能(AX中数据理解为补码)(5分) 参照解答: MOV BX, AX MOV CL, 2 SAL AX, CL ADD AX, BX ADD AX, 14 SAR AX, 1 5. 试编写一完整程序,实现H与0A435C218H两个32位无符号数相加功能。(规定编写完整源程序,含程序框架)(5分) 参照解答: DATA SEGMENT VAR1 DD H VAR2 DD 0A435C218H VAR3 DD ? DATA ENDS STACK1 SEGMENT STACK DW 4
29、0H DUP(0) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK1 BEGIN: MOV AX, DATA MOV DS, AX MOV AX, VAR1 ADD AX, VAR2 MOV VAR3, AX MOV AX, VAR1+2 ADC AX, VAR2+2 MOV VAR3+2, AX MOV AH, 4CH INT 21H CODE ENDS END BEGIN






