|
东 北 大 学 继 续 教 育 学 院9 j* O- K* w7 f- j+ W6 p
1 G- i* y: \0 z% }) Y" { 汇编语言程序设计 试 卷(作业考核 线上) B 卷! F" e. n }9 ]3 T5 N
学习中心: 院校学号: 姓 名: " Z9 Q$ Q7 t6 b ]
% _5 T- Y7 C- N: M
(共 6 页)
0 Y8 ^" L# g. U1 R$ ?/ |3 [$ E( T" f总分 题号 一 二 三 四 五 六
& {9 {" p* k; Z2 K$ e' }' l; v# y 得分
, S& k: z/ p' n' F/ V7 a1 h6 r0 V8 a' A* i! v8 Z- i3 N3 L; ~
一、单项选择题(从四个备选资料中选出一个正确的资料填在题干的括号内)(20分)- B% i+ r1 I" q% M: B+ q
7 b2 |# t- a: y% t7 t; p+ G( )1. 指令MOV AL,[BX]的源操作数的寻址方式为?8 v! U4 r3 G: {+ T, d2 O5 g, \
A. 基址寻址 B. 寄存器间接寻址
3 J: W) |4 i( o6 n3 p" fC. 变址寻址 D.基址变址寻址
/ F3 q1 O$ q9 e( )2.确定下列哪些数据在汇编语言中的表示是错误的?, H& r2 B" Y, c6 V2 c
A. 2 AND 3*5 B. 2+10B + Z5 U6 o2 P; y
C. AX+3 D. 10H SHL 25 W# W, X! x6 S+ M
( )3.若栈顶指针SP的值为100H,当执行完指令CALL AX后,SP的值为?
6 |; W' n$ c6 EA. 00FCH B. 0098H
# R) U4 K) v2 k% l& H6 LC. 00FEH D. 0102H# w( g3 ?7 _ k- P/ H
( )4. 已知在寄存器 AX和 BX 中分别存放着一个带符号数据,在满足条件 AX≥BX 时转到标号OK去执行,能实现该功能的程序段是?( J+ ]4 N2 l0 n! n0 u# g
A. CMP AX,BX B. CMP AX,BX
- c, }6 N8 I0 m9 O JAE OK JNB OK
) T0 @% V$ B' l% }8 L% M# e2 E C. CMP AX,BX D. CMP AX,BX
1 G) @# K+ s) f$ O JG OK JGE OK
' ]% A1 o' b+ O0 Z8 _" @# V% R( )5. 下列程序段在语法上是正确的是?( E7 F. v X$ K
A. X1 DB ‘ABCD’ B. X1 DW ‘ABCD’. c% Q' T% z& V$ A+ Y- p" i/ s% h
C. X1 DD ‘ABCD’ D. X1 DB 1234H
! _' }6 q1 R: S" E( )6. 已知AL=87H,BL=34H, 则指令ADD AL,BL执行后,OF和CF的值分别为?( |( X6 ]2 @+ U& }6 O' N6 M
A. 0,0 B. 0,1 ( \! v/ c- l+ {' S
C. 1,0 D. 1,1
# N% W: N( B, q8 w) o4 O* Z( )7. 已知AL,BX中各存放一个无符号数,计算AL和BX的乘积,用下述哪个程序段?
$ j; [- b3 [ c- e A. MUL BX B. IMUL BX
8 A: X, ~! U* D/ J6 a0 c+ V7 | C. CBW D. XOR AH,AH
; K9 @0 \ }/ H$ w' j" v- k$ P, ? MUL BX MUL BL8 _9 o; ~5 x% ~5 ?: U
( ) 8. NEXT是程序中某指令语句标号,下述哪个程序段不能实现转移到NEXT语句执行。9 \8 j. E) c9 n0 N# L# s! F1 ^
A. JMP NEXT B. MOV BX, OFFSET NEXT
8 H ?1 z) J6 ^5 Y) w JMP BX
! e9 S& P7 {5 }2 R! O. C C. MOV BX, NEXT D. LEA AX, NEXT; N; L6 ]+ K! T" V
JMP BX JMP AX
8 J: t& _. X2 g1 s' I- [( )9. 初始化8259A时,ICW2的值为18H,当IR3端有中断请求时,8259A送出的中断方式码是什么?: | L; j9 P1 N+ D* e+ G+ [, w
A. 10H B. 13H C. 18H D. 1BH?
6 ^* e' r4 u$ S( )10. 在两个8259A级联的中断系统中,从8259A连接在主8259A的IR5上,主8259A和从8259A的ICW3应设置为多少?
2 c) m( f# }4 E- J& |A. 20H,05H B. 10H,05H C. 05H,05H D. 20H,20H?
, }5 v' ], v# T; u" Y: x! a3 d, F: C* [5 n5 u; T
二、判断题(判断每题正误,对的在题后括号内划“√”,错的划“×”)。(10分)
7 o& M; `3 E+ g. s1. MOV DS, 2000H ( ) 6. LEA BX, AX ( )
) L2 _2 E/ D# l# R/ x2. MOV SI,[SI] ( ) 7. OUT DX,AL ( )+ v2 _7 R+ p+ O* r9 Q
3. IN AL, 200H ( ) 8. JS [BX] ( ) # @; x \3 `" }- k! k- `& t
4. PUSH AL ( ) 9. LOOP AX ( )
; N8 r0 H6 S$ y4 D# ^8 ]5. XCHG AX, 1234H ( ) 10. CALL AX ( ); ~2 X/ v% g& c& r1 O6 s
8 }0 A6 {% y, ?& n3 ]5 y- s J
三、谋学网(www.mouxue.com)。(20分): w9 D+ f# ~, V8 g" n+ ?" \; w" m
1. 已知:BX=100H,BP=200H,SI=300H,DS=1000H,SS=2000H,CS=3000H,指出下述指令中存储器操作数的有效地址及实际地址。(6分) S G! @" O/ _+ X- z3 [( b: l
# i; i: i, ]* m, I
指 令 有效地址 实际地址5 E v2 i% \$ m
MOV AL,CS:[SI+100H]
* z% G F- G4 A" {8 h+ HMOV AL,[BP+200H] 7 J( D" Y: b% j0 a* K. C
MOV [BX+SI-100H],AL
& d6 E1 @: c- n* j% H9 U- _2 @
2. 写出下述两条数据定义伪指令语句经过汇编后的内存分配情况。(4分)& k1 k. Y/ U% K& e5 i4 }
DATA1 DB -32,‘XY’
: {# f* y8 D( o DATA2 DW -32,‘XY’1 l' a. C, E2 J$ \, z
0 g2 m6 v5 ?# j- V) F9 h. i
DATA1 DATA2
$ B' e* G4 _8 G( h& I6 @" M, m / x! R& p; B# x. y7 c; [
! T9 T, }; K4 e) x. W) R1 Y v& s B
" j$ o8 F, A1 G3 I, g" q3. 已知部分中断向量表的内容给出如下, 则方式码为13H的中断服务程序的入口偏移地址为( ),段地址为( )。(4分)
* J- C" w" l: W: P# i+ tC>DEBUG
; v& A. ?+ O- R9 |1 W! U5 T: w-d 0:0: I$ R) v# y! d z( r
0000:0000 9E 0F C9 00 65 04 70 00-16 00 C1 08 65 04 00 00
. |, ^( h0 `5 W& ~, s/ T' A0000:0010 65 04 70 00 54 FF 00 F0-00 80 00 F0 6F EF 00 F0
2 T; A4 X+ h- E9 q0000:0020 00 00 00 C8 28 00 C1 08-6F EF 00 F0 6F EF 00 F0 ; c' V4 D7 q) T% x& ^; O
0000:0030 6F EF 00 F0 6F EF 00 F0-9A 00 C1 08 65 04 70 00
8 y: Z& _, c& d; P7 [% M V6 Q" i0000:0040 07 00 70 C8 4D F8 00 F0-41 F8 00 F0 97 25 58 FD
2 y7 B9 |' L5 A0000:0050 39 E7 00 F0 40 02 2D 06-2D 04 70 00 28 0A 76 06
% P% S' ~. d2 D0000:0060 A4 E7 00 F0 2F 00 82 09-6E FE 00 F0 04 06 76 06 # s5 g# y( O. {
0000:0070 1D 00 00 C8 A4 F0 00 F0-22 05 00 00 C6 57 00 C0 9 a' p* g- Q- U. R7 f8 m% y; }
+ I+ r6 y6 d) U6 Z1 M
4.依据下述子程序说明文件把子程序补充完整。(6分)* d( i- Q0 U, j8 @$ O0 T
(1)子程序名:MSUB9 A, a2 B4 t" h# A
(2)子程序功能:求两个多字节数据之差% [( y8 n1 v- H7 u w3 Y
(3)入口条件:两个数据的低字节地址分别在SI和DI中,数据长度在CL中& ~7 ~3 L. L. v3 p
(4)出口条件:差的低字节地址在SI中, b+ f$ c/ \ P
(5)受影响的寄存器:F . _% t% m+ u* J9 n
MSUB PROC NEAR, `/ e7 C) @( D/ e$ W- d' }2 x
PUSH AX: W6 B; A9 [5 d7 d3 f
PUSH DI
8 J1 T5 l- V: }9 c l) [ Z PUSH SI
/ s3 h5 f; I1 @9 E( K8 R PUSH CX
* n6 t' T3 w( t8 h, F& ] CLC
) A0 W. @" e' s& ~ AGAIN:MOV AL,[DI], k4 o' M. O ^
( )
$ }. T8 n5 C k J: u" x ( )
' q3 l6 X; {" { ( )5 F# k. F8 D Z$ D
DEC CL2 {& P0 \) z) n
JNZ AGAIN1 M9 Z2 t ]8 x+ A) g, B
POP CX
& i. s) P7 d# b8 V. f$ | POP SI- i1 P' D0 ]7 L6 _' T& A
POP DI3 |# ~, `! w9 U! b/ P$ k) u
POP AX4 _- e: x/ {/ ~* ^$ P
RET
' s7 b5 K' G' m# F MSUB ENDP
+ `) G2 E& n# m, M. `; _; @8 T3 k, U9 Y( G
四、改错题。(10分)
* m0 s% b5 B" N# h" `# {! ~2 G" n$ |下列程序有错, 请将它们找出并改正过来。已知程序欲完成的功能是从两个带符号数中选出较大者送入MAX单元, 若二者相同, 将MAX清0。
6 x# h% y+ f0 F9 ^* N要求:不必抄题,直接在试题上修改。在错误的部分下面划一条线,然后在本行的后面给出正确的资料即可。6 P4 o9 k# C% ^9 F6 ~/ |
1. SEGA SEGMENT
4 O, Z& |1 \. K0 Y0 J4 o. i4. DAX: DB A0H( V7 a! n) a+ J5 ]* c
8. DAY DB 1000H
1 [6 }4 ]$ [4 q3 R- K1 k1 U: N, S" E12. MAX DB 0
1 X8 r+ P0 c. B3 X6 H [15. SEGA ENDS
$ f7 [: v$ ~" p+ s' k18. CSEG SEGMENT4 m; a) l9 i0 X, d% n, R
21. ASSUME CS:CSEG; DS:SEGA% G& \* [3 P F9 L
25. BEGIN:MOV DS,SEGA ( q( }& _: ?; s# }( O5 l
27. MOV AL,DAX
3 v) K1 ~5 F6 I+ ?29. CMP AL, DAY
% j5 z" e+ _8 Y% T: j. _, D33. JA XGY& N* K4 \, r: x" V0 m
35. JZ ZERO0 ^/ j# J+ z0 r7 ?
40. MOV AL,DAY, \3 F) O% Y. R) |2 {+ N9 m: i6 I
43. XGY: MOV MAX,AL8 s) p$ \8 T( v; z2 ^
47. ZERO MOV AL,4CH( a( f i5 a) J- t1 s) M: C
49. INT 21
# d( Q6 U0 O# |6 ?8 L2 N50. CSEG END
% j- O: T& f5 N8 W2 W56. END START
6 e6 t K9 [; f4 i& `
5 s+ h; Q, _4 }, o7 Y$ u五、谋学网(www.mouxue.com)(25分):用尽可能少的指令编写完成下列功能的程序段
3 |( k( |% O' C H' Q: Y9 T1. 已知DX和AX联合存放一个32位整数(DX存放高16位),将该数据逻辑右移一位。
2 @' K5 _' _1 j" L$ B
) ]* }1 N! \) e: g; r$ U! U3 _2 F; i/ {# o% @! Z* O+ V
k. g, Q& A2 `# `# ]8 r# G$ _' ?8 f, d* I. A
( k& p" W' ^+ r2 u% O
# f) }. @9 E) H E1 o ~
2.将寄存器AL的第i位置1,其它位状态不允许改变,已知i在CL中。
+ f2 e( V: X% u5 L
( r% E" u; E( S" m
+ U, a) K5 N) h+ w" @! L$ C; K( Z( N0 B0 A5 Z
' k, C7 z" t$ _& ^) i1 C* \$ W+ b
0 r( e8 C/ |( w" R9 J) v* l( t
% `6 b' W2 E9 r) _& `
$ F" p; Q5 {' C' B) M9 d+ `7 Y7 e
3.将AL中的字符配成偶校验码。
$ c' o7 j8 Z% p9 u6 {' I2 s8 l3 ^* v
1 X1 g" u/ @2 J+ x) |- D4 p1 J" @/ z O
8 N6 Z [! @2 O" W4 Z5 _. [8 s6 U1 w7 b: P
7 w, m& }9 c2 E: ~- o
- Y* `9 A ~* E) P
, T) ~' f- `+ y
& _: T/ L' ~# m# h( x( C
# _. K) W0 D4 v8 e3 ?5 s
# a6 N. e) Z m$ i: s. B4 _" E
4. 已知AL,BL中各存放一个带符号数,如果两数同正,则将AH清0;如果两数同负,则将AH置1;否则将AH置全1。+ Q7 k6 v0 F7 `9 Q) h/ f7 H
q2 V3 e7 X4 F0 B" M9 @0 n* x5 y2 J) U1 B# a7 Z& a* o" x
l3 z2 G& J; }7 L2 u
; Z; z2 t0 U. w9 _
6 e4 k* r8 Y6 s/ U" R f/ |& [2 R3 C: `
' Y) r/ S9 r' |1 c1 L
0 n, _* i, x$ A9 m5 |
- K: s/ m- M" P) }' d: _; t1 U" j+ c9 o" p. x
; |! M# R- i! K) C5 w' ~$ f) D: v9 f
) R* U% n' N0 |6 b/ X- [
; D% X" b" W# g* [& g1 A8 [+ Z) |" a# _7 S
5.已知中断服务程序的入口地址为SEVER,对应的中断方式码为10H,写出将其入口地址写入中断向量表的程序段。8 @% x4 N5 Q- ^
+ N( c) w* O* f1 t
- j8 b( v# k& [9 W2 r5 W
, [: s9 E. N6 N* e5 ~& q: s; ~- n) [
0 u: e! f9 a+ _. V0 c& f
2 P* j5 ^8 j# B: a5 G7 L
9 ~& z: P3 Z( K1 c" ~* T& J! |. M+ F0 I5 L( ]5 @, ]
/ c' _# b: h, z0 z% ^) m& l
( `9 G" U9 r& g- e* O# a( |' U- T8 R- l& X% }% B( C
0 a6 m9 D2 e, b9 j8 V8 f5 p
3 x' W5 d7 b& d) _) m \$ F+ T! p* U7 N
0 @; v5 W( ?+ A Q) R
六、程序设计题。(15分)0 t% k& P8 j. ^7 o" J5 q8 ~
已知一组带符号字节数据存放在内存DATA开始的连续单元中,数据个数在CNT单元存放。编制程序求出该组数据的平均值,并将其存入AVE单元。8 f* b1 j5 ?7 ]: G6 d0 m
, M0 J! w! K- ^1 N1 @3 }
, I5 G& l5 R( `0 }
4 D: g7 l( u8 R) Q2 k. [7 _
9 y9 C+ S \8 ?. ~! ?
: {1 H. w5 e! N) `$ B; k' Y( H
! Y [5 m9 l; l+ `( r
6 `; `* b, U1 G( A& \( Z
7 B X' p$ ]( z1 t' b% { Y. H
$ c$ r5 t4 J9 @+ {) |/ g6 O* S' o. m7 R) {7 n
/ o3 I- S' u4 B& W# A" ^" w
) \) a: N% Y0 k' B8 }+ t- V2 x
- @5 I6 Z5 l, A& F8 H) f- {
8 U! |: u$ e; @( Y, Q
9 Z5 h' X- l9 R; E( Q! _) O1 m: D" r3 A9 c
|
|