|
东 北 大 学 继 续 教 育 学 院
6 ?9 j7 ^$ T! I
. P, n+ r, Y5 P7 J$ t 汇编语言程序设计 试 卷(作业考核 线上) A 卷. F+ l5 i6 U2 R2 \& [* N$ B
学习中心:
2 s& t5 V* r; l4 W* d院校学号: 姓 名:
8 w9 y: I) X# \4 a
z4 m* D) x N* y8 x(共 6 页) " Q9 g Z k! Z, R
总分 题号 一 二 三 四 五 六 七 八 九 十! X8 {# s+ b" O; g6 b& F1 g
得分
5 O8 e0 v( Q9 _9 F; j( F- W4 _$ F' x( E% _ j8 g% A( Q {. X
一、单项选择题(从四个备选资料中选出一个正确的资料填在题干的括号内)(20分)- [# Q1 N' f. x& N: B1 [: U
8 ~6 p% A- y: S: u5 B) Y, X
( )1. 指令MOV AL,[BX+100]的源操作数的寻址方式为?5 L. e7 Q( A4 z. m' Q
A. 基址寻址 B. 寄存器间接寻址
2 W0 O3 _$ O& j. o# a' s n$ O4 NC. 变址寻址 D.基址变址寻址# R4 v5 v& Q( ~: |( V& ]$ j# ]
( )2.确定下列哪些数据在汇编语言中的表示是合法的?6 i/ z2 v3 G( h
A. 2 AND 3*5 B. 138Q
: W5 l }3 z: SC. A3H D. HIGH AX+ M! e8 q8 O* F7 o6 b
( )3.若栈顶指针SP的值为100H,当执行完指令PUSH AX后,SP的值为?! r9 H- `/ f4 D- `' V5 I
A. 00FCH B. 0098H
5 { F, R0 ]& ]8 N- L& SC. 00FEH D. 0102H
4 b4 m8 k) r) ^1 S$ N$ k0 [( )4. 已知在寄存器 AX和 BX 中分别存放着一个无符号数据,在满足条件 AX≥BX 时转到标号OK去执行,不能实现该功能的程序段是?
' A8 a+ W p9 X/ @8 v A. CMP AX,BX B. CMP AX,BX
+ H- F6 o: U4 N4 f. g2 y+ p7 y, y( m JNB OK JA OK
4 t! @% V7 \5 v% F H1 r+ [6 [: n C. CMP BX,AX D. CMP AX,BX. z" x: @, s) t V) Y& N
JBE OK JNC OK5 s- Z' R z( x$ D0 i
( )5. 下列程序段在语法上是正确的是?, K7 H3 _! u7 ?8 p
A. X1 DB ‘ABCD’ B. X1 DW ‘ABCD’
- b! n7 ^ d- e: N) e1 yC. X1 DD ‘ABCD’ D. X1 DB 1234H4 p$ A# J3 g) A+ H1 u% v/ A$ S
( )6. 已知AL=67H,BL=34H, 则指令ADD AL,BL执行后,OF和CF的值分别为?$ H; P) `- w% w: O& Q) U2 |6 u- p( N
A. 0,0 B. 0,1 9 y. K5 s: D3 ]9 ?6 R3 k( b
C. 1,0 D. 1,1
: C8 Y5 r1 z3 Z' A7 r( )7. 已知AL,BL中各存放一个无符号数,计算AL/BL的商,用下述哪个程序段?. z- R4 ]0 [! @& _3 d' N% i
A. DIV BL B. IDIV BL
* _ X1 O3 Z) [9 X C. CBW D. XOR AH,AH4 [4 W$ m' V' P: x4 p1 i
DIV BL DIV BL, H" B# P2 o0 [ f# \
( ) 8. 已知SUBR是一个属性为NEAR的子程序, 下述调用SUBR子程序的指令序列中,哪一个能实现调用SUBR的目的? : i! q! [2 s5 b. ]. U* A
A. LEA SI,SUBR B. MOV SI,SUBR- f/ o! j6 H1 |
CALL [SI] CALL SI, m# j! o$ H% \/ J. o' }
C. MOV BX, OFFSET SUBR D. MOV BX, OFFSET SUBR7 j/ u# Z; v( M& n
CALL BX CALL WORD PTR[BX]: ^% c5 H# D' N! n
( )9. 初始化8259A时,ICW2的值为15H,当IR2端有中断请求时,8259A送出的中断方式码是什么?) K$ J+ ]4 f2 w, F' \" B" ~5 f
A. 17H B. 12H C. 13H D. 10H?. }) e$ S3 b: Q! y3 }0 I
( )10. 在两个8259A级联的中断系统中,从8259A连接在主8259A的IR3上,主8259A和从8259A的ICW3应设置为多少?
( }. j' W7 ~9 |9 l0 D! M, N+ FA. 03H,08H B. 08H,03H C. 04H,03H D. 08H,08H?5 ?& \ L- e, ^
% Q3 A8 B' }3 I. p
二、判断题(判断每题正误,对的在题后括号内划“√?”,错的划“×”)。(10分)
6 ~" f- h" l, h, [9 ~, f/ [ 1. MOV DS,CS ( )? 6. MOV CS,AX ( )?
# H7 ~6 `3 A& ?1 D) z6 S8 P 2. MOV AX,DL ( )? 7. XCHG 50H,BH ( )?- I" f! J# F$ C
3. POP AL ( )? 8. SHL AX,10 ( )?8 t$ M" @* L1 h8 @9 r# {5 X7 j1 k
4. NOT 5 ( )? 9. IN AL,DX ( )
+ D2 o9 K6 m. T4 j& ~/ @" }5. IN AX,200H ( ) 10. OUT 21H,AL ( )
! V/ C: V3 ~' x) X5 w* l
1 W; O; [+ Y7 n2 T$ W三、填空题。(20分)5 t: X [3 R$ a
1. 已知:BX=100H,BP=200H,SI=300H,DS=1000H,SS=2000H,CS=3000H,指出下述指令中存储器操作数的有效地址及实际地址。(6分)
8 C3 s! {- {' m5 q& r- m0 x
0 ]% k$ b0 w1 u$ J3 r0 t& g' h指 令 有效地址 实际地址8 D1 o! }* ^1 c' j' e
MOV AL,CS:[SI-100H]
) N) P5 O3 c8 v. q3 XMOV AL,[BP+10H]
# o9 z. P( y$ [# jMOV [BX+SI+100H],AL
$ a6 D+ G; p' {8 @% q' W. u9 {: m8 i' t) ]/ A
2. 写出下述两条数据定义伪指令语句经过汇编后的内存分配情况。(4分)
7 |8 f w1 E2 k; h4 H4 f DATA1 DB -16,‘AB’
8 S% ?+ `8 o+ P DATA2 DW -16,‘AB’- {( O1 ]8 O( l
5 {/ f3 k/ S4 z3 X7 S" ?! ?2 E
DATA1 DATA2
: G' K. Q9 W; v" M9 B9 v 8 k5 Q, u w" t; X
: A5 Z/ x n% W! j/ L1 X' [% @
3 @' |- d. B0 J& [7 z3. 已知部分中断向量表的内容给出如下, 则方式码为10H的中断服务程序的入口偏移地址为( ),段地址为( )。(4分)* i# d+ T$ g, o+ ^, @
C>DEBUG
" @6 _+ f( B+ d& j. F-d 0:05 @! C) ]5 M! h! m( ?
0000:0000 9E 0F C9 00 65 04 70 00-16 00 C1 08 65 04 00 00
: R( w" t+ H! }8 V0000:0010 65 04 70 00 54 FF 00 F0-00 80 00 F0 6F EF 00 F0
2 J4 L$ V) { y+ _2 K m0 |0000:0020 00 00 00 C8 28 00 C1 08-6F EF 00 F0 6F EF 00 F0
+ P J$ [; m9 V0000:0030 6F EF 00 F0 6F EF 00 F0-9A 00 C1 08 65 04 70 00
1 [+ |' ?% {" Y {* N0000:0040 07 00 70 C8 4D F8 00 F0-41 F8 00 F0 97 25 58 FD
7 T1 d. H2 v/ E/ g" _. B0000:0050 39 E7 00 F0 40 02 2D 06-2D 04 70 00 28 0A 76 06
- ?0 Q; Z) b+ \. G2 Q0000:0060 A4 E7 00 F0 2F 00 82 09-6E FE 00 F0 04 06 76 06 U' I8 i, _; E, U
0000:0070 1D 00 00 C8 A4 F0 00 F0-22 05 00 00 C6 57 00 C0 7 n2 |+ M( X5 h1 c2 R7 t
+ C& J* @3 c% {- b: d6 e2 w4.依据下述子程序说明文件把子程序补充完整。(6分)0 e9 c; ]0 }2 e7 s% S* Q: n- \# r
1)子程序名:MSHL;
T, Z" n8 T* v9 p% C/ V" G" \/ ^2)子程序功能:多字节数据逻辑左移一位;
% ~/ b3 e- _8 N% |3)入口条件:数据低字节地址在SI中,数据长度在CX中;
) ]( R4 ^$ B7 S% k. r+ I0 F \& ~7 j4)出口条件:移后数据低字节地址在SI中;CF为移位前数据最高位状态;
9 ]% M* K7 P- o4 r- _" g, A# k5)受影响的寄存器:F。& }7 x9 G2 ]8 ~, u! {. w
MSHL PROC
, V! n6 A/ s# w$ S PUSH SI
- a3 T. u. ? c PUSH CX# w- k0 l' H: ^+ I# y; B; u! H
( )
$ O, Y+ U9 T4 H9 T* s: NMSHL1: RCL BYTE PTR [SI],1
5 g9 d4 T+ F6 E2 G2 p- |) U ( )
; [1 [: \) o% j4 b; q, n3 }5 ` F LOOP MSHL1
: ?7 X- |8 o8 y) p! y+ g POP CX. w3 h. r; q8 T8 p) ~2 o @
POP SI) }2 z( Z+ m; d% [$ n% r6 W
( )( }+ n7 f. y2 [0 l
MSHL ENDP
- W1 ]3 L, t7 R8 y# s! T7 n2 }
. O+ W% }! p: p6 X7 W% C9 v9 [四、改错题。(10分). k) ~. c: T4 _5 |0 x
下列程序有错, 请将它们找出并改正过来。已知程序欲完成的功能是从两个无符号数中选出较大者送入MAX单元, 若二者相同, 将MAX清0。
/ z* h" s E2 d' ^4 M* D0 C4 e要求:不必抄题,直接在试题上修改。在错误的部分下面划一条线,然后在本行的后面给出正确的资料即可。% Z1 J2 H5 a0 P) c7 ?* L0 ~; T
1. SEGA SEGMENT/ `5 G5 d, I3 l7 T7 ~9 {- {5 k
4. DAX: DW A0H" a, z. Y' U6 L: z, o. w6 `
8. DAY DB 1000H& a$ ]: X8 O. k
12. MAX DB 0,0' ` p0 O2 W# q: `" f
15. SEGA ENDS
; X9 T0 B& h4 V$ e5 q18. CSEG SEGMENT
* Y4 L0 V3 z: {; l0 Q" m21. ASSUME CS:CSEG;ASSUME DS:SEGA
3 k- [7 ~' N+ j& `3 B25. BEGIN:MOV DS,SEGA + A1 _5 y, V) z t" F
27. MOV AX,DAX
2 E: E- w: @+ H29. CMP AX, DAY- S" m( s# v* ^6 G' y
33. JG XGY9 I1 M. u0 Z- J i# N
35. JZ ZERO
% c- S8 s. e! ~5 r40. MOV AX,DAY
2 o, L7 ~5 ?- X2 A, {43. XGY: MOV MAX,AX
# \1 [! Q* }: a# O0 X5 j47. ZERO MOV AH,4CH9 A! K& \( i% \ v3 `5 k" J; T
49. INT 212 X4 _1 t; T" X9 C! ^2 C
50. CSEG END
/ }( s: @6 V. u8 H, u56. END START% v; q, w- H1 ^6 ?3 @; ?; y: B
) ]" s9 B! ~# s/ _0 U( W0 t
五、简答题(25分):用尽可能少的指令编写完成下列功能的程序段. V; c% s0 C1 }
1. 将寄存器AL的高4位取反,低4位不变。' O/ ]5 T( v# x8 e6 X+ T
, I$ r# T, S& r3 k
' {' U0 }. o# I' f5 e1 L. f" m* f6 x' M0 a
5 v T$ R- a# }7 j' }
2.将数据段SI指向的连续10个字节单元的内容传送到附加段DI开始的连续单元中。* \5 y, U# ?9 T" Z+ O
5 q3 N: R: e$ G8 d: T
9 F. |4 j& z# l8 V% z
. E# O& z1 x0 T0 s
5 Y6 @) G& Y; c/ P* d2 G8 Z4 }$ j" J" D7 d
s- D3 s2 X; R. F5 G
$ J! ~) r. k) E" H/ B3.将寄存器AL的第i位清0,其它位状态不允许改变,已知i在CL中。/ e2 ]- ]; L+ C0 @; x
) @$ |1 h$ I1 i. O+ M5 j( ^# d7 C* U# c1 ]+ c
4 n1 }3 g/ l: g0 B: }) n
& T8 R) {: i# P6 u" G2 N: X
) [1 y) q1 ]% v5 Q/ J$ d
& K' b( {" t1 ]+ F1 A2 v0 C* Z- A: A( {( G+ J; b
4. 已知AL,BL中各存放一个带符号数,如果两数同正,则将AH清0;如果两数同负,则将AH置1;否则将AH置全1。
2 `& K+ r% j6 M: S) q0 |* C6 x4 t( Z3 T* \; o7 B
; t2 [8 \. B% _5 {+ |" s
) ~( J) ]" T( a6 ^1 M$ D
; `2 n2 f L: @8 y8 W
6 ]+ L+ w) `, W5 p7 `0 f+ W' Q: J1 }" n
2 f( T1 w# z2 C+ R* O$ u" Z4 B* a. u$ z- V
: c# |2 s1 d! C5 x8 l# C0 [8 [8 m) U1 S7 D$ }. f( }8 [. E5 m
6 x" p+ E; D; m4 S0 h5 i$ G
# n# s6 c7 S) K r5.已知中断服务程序的入口地址为SEVER,对应的中断方式码为40H,则将其入口地址写入中断向量表的程序段。
. j- N9 B2 |" J" {2 Y# }/ h _" C6 @1 o8 M! |
( m+ i& O5 S; Z
( l* O0 ]; e6 P, p* N2 H3 N u4 r9 ~* O% J( L7 a& h( M' S! _
; Y0 a- V- V3 @5 I
7 S0 F$ N1 c6 V& E+ y$ P. @, H! p o( @3 ~
n" H$ U" _- Z) a2 O- e5 ?: b( Z* Q% l- ~1 p
- a6 y8 o9 T& H0 \! {# i
7 F& {7 N- {4 G3 y( F$ i8 S, h1 I7 I8 m0 `8 d0 b5 ~- ~
4 |* `: G' [# ~$ C) v0 o# p0 M8 L# o% |/ h
7 b( {3 x7 \* j) I/ @% V. |* o
六、程序设计题。(15分); K* U! t$ p+ L V
已知一组带符号字节数据存放在内存DATA开始的连续单元中,数据个数在CNT单元存放。编制程序求出该组数据的最大值,并将其存入MAX单元。3 t( S5 T/ P* O) D) m
$ Y f3 O! q5 E. |) @! P6 T
9 ]) A$ P* q1 c9 a: k6 N7 g$ e5 ~' }" X n9 U3 O
( x9 G/ R2 ?3 z4 Q+ @) B
8 Y9 |2 I W4 l4 U/ j
+ V$ @; `+ \8 ^0 z& } s
* D" |! n7 q- {8 m/ B! _
. }5 Z2 \" T* t# u5 E [2 ^. W( q1 z* x* U; @; K& ` k
/ t$ T7 _9 ^6 ]( o1 h, g, w+ w5 V& v! |) y2 r) E. j3 \% y
5 m# }: R; t% F& i
3 r* U2 L6 u* d. I& E7 a8 A( z) @9 W8 T: [7 a6 T0 x5 O, s
- _7 y9 N( m' N0 \" A& f9 i4 l
0 }! J2 e4 |3 o) D- F7 O* O1 u! w# \
7 r' \; E7 P, C' T2 [
! A+ W p3 j( L3 P( F ~! W
8 M2 d% y) {3 G* n
0 m6 C7 K% x1 I' q& O4 f/ a6 K& q- E) G4 w& f: s
. i u0 k9 o" }
- i6 N- W2 P6 d: U6 g4 _) i
/ Z" i& }8 i9 R: e5 x
- C" ? {* O. T8 [" j2 ]* a5 B5 p& ^* X8 i1 ]7 K& j
3 P8 j' I* t+ D W! B M
) d9 s; V: K, O/ Y/ a
+ e& J4 ?% h) R/ }3 [5 \0 T; ~4 L% l |
|