《汇编语言程序设计》模拟试题答案
一、单选题: 1 C 16 B 31 B 46 A 61 D 76 B 91 B 2 A 17 C 32 D 47 A 62 A 77 C 92 B 3 D 18 B 33 D 48 D 63 B 78 C 93 A 4 A 19 C 34 A 49 A 64 D 79 A 94 A 5 B 20 A 35 B 50 C 65 D 80 C 95 D 6 A 21 D 36 B 51 C 66 C 81 A 96 A 111 B A 7 A 22 C 37 B 52 A 67 D 82 B 97 C 112 A D 8 D 23 B 38 D 53 A 68 C 83 C 98 D 113 D A 9 C 24 C 39 D 54 D 69 B 84 A 99 D 114 B D 10 A 25 D 40 D 55 C 70 B 85 D B 115 B B 11 D 26 A 41 A 56 D 71 C 86 D D 116 A A 12 D 27 D 42 D 57 A 72 B 87 D A 13 A 28 D 43 C 58 D 73 C 88 D C 14 D 29 D 44 B 59 A 74 A 89 D C 15 A 30 D 45 B 60 A 75 B 90 B C 100 101 102 103 104 105 117 118 A D D A 119 120 D C B B 106 107 108 109 110 A A D A C C A B B B 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 C B D C B C A C D B A D A D D 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 C B B C B C C B C B B C C A D 166 167 168 169 170 171 172 173 174 175 176 176 177 178 179 D B C 180 181 182 D A C
二、填空题:
1. 20H 2.立即数 3. 55 4. DS*10H+SI+20H 5. AX
6. 64K 7. 23456H 8. 指令性、指示性、宏指令 9. 相对基址变址 10. IP、CS 11. 6DH、9BH 12. 0、10H 13. 2000H、120H 三、简答题:
1.(1) (IP)←((SP),(SP)+1) (2) (IP)←((SP),(SP)+1) (CS) ←((SP)+2,(SP)+3) 2.(1) MOV CX ,LENGTH DAT1 (2) MOV CX,DAT2-DAT1 3. 12488H 232D7H 31040H 4. A. CX不能做间址寄存器
B. 源操作数和目的操作数不能同时为存储器操作数 C. 标号没有BYTE 属性
D. 循环次数大于1时应先至于CL中
A C B B D C C B C D A C 1
E. 没有指定移位次数
5. AX=5030H AX=0503H
6. 9,计算分配给以上变量的存储单元的个数 7. A =5678H B =1234H
8.(1) 20H (2) 0AH (3) ‘U’ 9. 把DAT1中的后十个元素放到DAT2中 10.(1)为VAR3分配4个字节单元; (2)为VAR4 分配10个字节单元。 11.(1) IP=_1256H_ (2) IP=3280H_
12. AND AL,0FEH;OR AL,4H;XOR AL,0FAH 13. POP DX
POP CX POP BX
POP AX
14.(1)SBB AX,0520H (2)MOV AX,SEG TABL 15. ① LEA SI,D1
② MOV SI,OFFSET D1
③ MOV SI,D2
16. (1)21500H (2)22500H-21500H=1000H (3)64K 因为分段要求最大为64K 17. BX=100H CX=22H 18.(1)相同点:都是做减法
不同点:SUB指令将结果回送给目的操作数,CMP指令不回送给目的操作数 (2)相同点:都是做与操作
不同点:AND 指令将结果回送给目的操作数,TEST指令不将结果回送给目的操作数 19.A. 没有区别
B. 第一条指令是短跳转,第二条指令是近跳转;
C. 第一条指令BX的内容作为偏移地址,而第二条指令是把BX的内容送给AX; D. 第一条指令是DX和CX相减结果送给DX,第二条指令也是把DX和CX相减,但不影响每个寄存器的内容,只影响标志位;
E. 第一条指令目的操作数在堆栈段,第二条指令目的操作数在数据段。 20.(1)将调用参数装入指定的寄存器。 (2)如需功能调用号,把它装入AH。 (3)如需子功能调用号,把它装入AL。 (4)按中断号调用DOS或BIOS。 (5)检查返回参数是否正确。 例如:MOV AH,2
INT 21H 21. A. NOT CL
B. OR BX,0FH
C. AND AX,0FFF0H D. XOR CX,0FFF0H E. TEST DL,01001000B
2
22.第一个AND是与指令,而第二个AND是逻辑与运算。 23.(1)005CH (2)00DCH (3)05CCH 24.(1)MOV AL, 25H (2)SHL AL, 1 (3)MOV BL, 15H
(4)MUL BL
最后,(AX)=612H =1554 25. NEG DX NEG AX
SBB DX,0
26.(1) (IP)←((SP),(SP)+1)
(2) (IP)←((SP),(SP)+1) (CS)27.(AL)=2,(BL)=10,(CL)=20 28.(1)20H (2)10 (3)’U’ 29.MOV AX,ES:[9000H]
30.① 0FFFFH ② 4567H
31. MOV AX,WORD PTR DAT1+1 MOV BL,BYTE PTR DAT2+1 32. MOV CX,LENGTH DA1 MOV CX,DA2-DA1 33.(1)DB1 DW 2000H (2)CUNT EQU 2000H DB1 DW CUNT (3)DB1 DW ?
MOV DB1,2000H 34.12488H,232D7H,31040H 四、程序分析题:
1、AH= 0 ,AL= 9 2、AL= 80H ,CF= 0
3、AX= 0 ,BX= 0EDCCH 4、(1)0AH,0BH,0CH,0DH,0EH,0FH
(2)功能不变 5、DX中存放的是字符串中’$’字符的个数。 6、① BL=7 ② 本程序段是可以的。 7、① (DA2)=87 ② 不可以。
8、AL=___0FFH___,BL=__0FFH____。 9、4860H,CF=1
10、DL=_0FFH___或___0FEH___ 11、① AH=__4____,AL=___34___。 ②AH=___6___,AL=___50___ 12、AH=__5____,AL=___6___。 13、AX=0FFFFH, CF=1
14、AL=79H, BL=06, CL=7FH 15、AH=60H, AL=35H
←((SP)+2,(SP)+3)3
16、1,0,3,2,5,4,7,6,9,8
17、(DATA1)=3000H, (DATA2)=2000H 18、(CX)=44AAH, (DX)=44D5H
19、(1)该程序段已占有的存储字节数是8个字节。
(2)符号名DA4的值为2,符号名DA5的值是0026H。 20、(AX)=0012H (BX)=1221H(CX)=0200H
21、(1)在以ADRR为起始地址的数组中,查找第一个非0数据。
(2)若找到则将第一个非0数据在数组中的偏移量送入RETT单元中;若无非0数据,则将0FFH送入RETT单元中。
22、(1)子程序的功能是判别AL和BL中的数是否为异号数,当为异号时交换,否则不变。
(2)AL=77H,BL=9AH
23、(1)该程序完成的功能是从20H(32)个有符号数中找出最小的数送入RESULT单元中。
(2)该程序的循环次数是1FH(31)。
24、RESULT+2字存储单元的内容是MAX(X1, X2, … XN) BX= 100H + 2×(COUNT-1) 程序循环次数=COUNT
25、A. AX=1 B. AX=2 C. CX=20 D. DX=40 E. CX=1
26、AL=120
27、第一条指令是把AX算术左移一位;第二条指令是把DX带进位循环左移一位。 28、首先把P乘上2,然后比较2P的高16位与Q的高16位,如果前者小于后者,则把AX置上1,如果前者大于后者,则把AX置上2,如果相等,则比较2P的低16位和Q的低16位,如果前者小于等于后者,则把AX置上2,如果前者大于后者,则把AX置上1。 29、45B0H L3 30、 AX=EDCCH DX=5FFFH 31、61H DF=0
32、 AH=04H DL=2
实现DL=AX/CX AX=AX MOD CX
33、 ①(A)=5678H (B)=1234H
②SP=2000H
34、(AX)=5400H (BL)=06H (DX)=2106H 35、(BL)=0E4H (AL)=0DDH 36、(AL)=-5或0FBH
(BL)=14H或20
37、①程序段功能:根据从键盘输入的字符‘1’~‘9’,确定在显示器上显示STRING中第几个字符。
②显示器显示字符‘D’
38、①(AL)=0,②(AL)=1,③(AL)=-1 39、AX=_305FH_,CF=不变
40、HCOD和HCOD+1两字节单元内容是1和A。
41、AX=___4030H________,BX=___3040H________, CX=__0230H_______ 42、0FCH,0FEH,0FFH
43、把小写字母改成大写字母。
4
44、(AL)=__0FFH_________,CF=____1_______ 45、AX=0 BX=EDCCH
46、将DX:AX中的双字乘以16
47、0AH,0BH,0CH,0DH,0EH,0FH 48、1,0,3,2,5,4,7,6,9,8 五、程序填空题: 1、MOV CX,CUNT ADD AL,30H 2、该题有错误
3、①INC BX ②DEC CX
4、①MOV [BX],AL ②MOV AL,AH 5、 XOR AH, AL JZ ZERO
6、CMP AL, [BX] JNZ LOOP1
7、(1) ADD AL,[BX] (2) MOV AX,SUM (3) LOOP NEXT 8、(1) ADD DI,99 (2) XCHG AL,[DI]
(3) INC SI
9、LEA SI , FLD ADD AX,[SI] 10、CMP AL ,0 NEG AL 11、 ①JE K1或JZ K1
②MOV PLW,AX 12、 ①CLD ②SUB SI,2
或①STD ②ADD DI,2 13、XOR AL,0FH JNZ K1
14、SHR AL,CL
AND AL,0FH
15、 XOR AH,AL JZ ZERO
16、MOV [BX] AL, MOV AH,AL
17、 CMP AL,ARRAY[DI] A2:LOOP A1 18、 MOV CX,CUNT ADD AL,30H
5