|
东 北 大 学 继 续 教 育 学 院- f: i/ ]) L. s0 A$ o+ J9 m, @9 S
f T9 x! P6 c 汇编语言程序设计 试 卷(作业考核 线上) B 卷
( ]( h0 U' n. r2 Y# S6 i- u 学习中心: 院校学号: 姓 名: ' H) O, g8 V8 K1 W, G: L- z
3 u0 S4 t; |" k& s5 ~ {8 l
(共 6 页) - Z6 Y. B: Z! D
总分/ Q& h# L( d/ y: t6 U' z
题号
D: B. H( z( V' E- Y. F! z一
0 }' f' k6 @# s, }- @' b3 g二
. K+ X6 r3 u# V1 C; U三& K2 y2 J! n# G; |3 n) J8 C4 W
四1 q. ^, Y! {1 h( h a6 [+ k
五4 _1 q5 u3 v8 o$ L1 p9 s R$ j
六1 r% \# q! X) [7 u4 M- B' z
+ w1 @& g* d0 N+ T! N$ U2 V# r得分
/ a2 D! y. b5 x$ v" ~6 i8 c9 T, B: Q1 v# ^9 t# b+ _
% U! a1 g! E9 |, Z/ v; _) R
7 i0 K5 `4 Q" b
7 p6 x2 M7 M$ K$ y/ N+ F. d7 x6 l$ i+ m& ?# {/ n8 z$ E* n6 t, m) T* k
% p9 j9 I! V+ k! B2 Y) I2 l
: \4 m4 y7 v. V1 ^4 ~
一、单项选择题(从四个备选资料中选出一个正确的资料填在题干的括号内)(20分)( i9 n8 E0 a( P9 B1 W
: {/ I6 l7 p2 z
( )1. 指令MOV AL,[BX]的源操作数的寻址方式为?
u$ ^4 `# ]' e4 L- @ A. 基址寻址 B. 寄存器间接寻址
* ]% `& D0 p- S- l, A C. 变址寻址 D.基址变址寻址
5 ~; ~1 c/ ~% `- h0 |( )2.确定下列哪些数据在汇编语言中的表示是错误的?6 R. J/ [0 T5 U% D
A. 2 AND 3*5 B. 2+10B " P8 y+ n( [0 M4 Q
C. AX+3 D. 10H SHL 2
" g: G* y" R" M( )3.若栈顶指针SP的值为100H,当执行完指令CALL AX后,SP的值为?- O, G' k, M0 [$ O5 [+ z2 s7 y
A. 00FCH B. 0098H
2 C! e5 t( o% b- V/ |; q2 a C. 00FEH D. 0102H
4 J5 c! @$ E d* [3 T5 ~* K' S W( )4. 已知在寄存器 AX和 BX 中分别存放着一个带符号数据,在满足条件 AX≥BX 时转到标号OK去执行,能实现该功能的程序段是?! y" z4 v0 j/ G H) m z' T
A. CMP AX,BX B. CMP AX,BX
' A' D2 T$ Y* V7 y7 u JAE OK JNB OK: M8 E4 M9 x( X& [$ x
C. CMP AX,BX D. CMP AX,BX$ I* f# \' J0 J. T
JG OK JGE OK. l; g7 Z5 p7 T j
( )5. 下列程序段在语法上是正确的是?3 P/ k2 @+ ^2 k ?
A. X1 DB ‘ABCD’ B. X1 DW ‘ABCD’
' Y% V! `1 _5 {' `' y C. X1 DD ‘ABCD’ D. X1 DB 1234H! x* n$ {1 p+ z0 n
( )6. 已知AL=87H,BL=34H, 则指令ADD AL,BL执行后,OF和CF的值分别为?
/ t( ], z& y( K, T+ _ A. 0,0 B. 0,1 ; `9 S. i& p# g$ z1 y
C. 1,0 D. 1,11 M" y4 d5 a- y. W- d
( )7. 已知AL,BX中各存放一个无符号数,计算AL和BX的乘积,用下述哪个程序段?
/ q2 g/ \; E" L- R A. MUL BX B. IMUL BX- @$ g' w5 x# X7 ]% j. N( k0 p
C. CBW D. XOR AH,AH
! R4 o" w+ N) w0 w( O9 ] MUL BX MUL BL
2 [3 N( p: J3 i" a. N9 K9 a( ) 8. NEXT是程序中某指令语句标号,下述哪个程序段不能实现转移到NEXT语句执行。
. J$ g3 s% e, f% i3 k+ y A. JMP NEXT B. MOV BX, OFFSET NEXT$ f$ J% P/ E P3 h* {$ U0 M
JMP BX
; E2 F1 `5 I n6 Q$ D0 J C. MOV BX, NEXT D. LEA AX, NEXT
2 q% L) `! w: Y3 C( T6 }4 \# W JMP BX JMP AX
6 {0 K g6 e0 r+ H( )9. 初始化8259A时,ICW2的值为18H,当IR3端有中断请求时,8259A送出的中断方式码是什么?
! i( p. |" U/ X1 \# `8 L A. 10H B. 13H C. 18H D. 1BH?
' Y t& \# v I; \% J. p2 f( )10. 在两个8259A级联的中断系统中,从8259A连接在主8259A的IR5上,主8259A和从8259A的ICW3应设置为多少?
1 k- b7 ^ `) I A. 20H,05H B. 10H,05H C. 05H,05H D. 20H,20H?
8 K6 ?. V7 t& h
! n, [/ R1 F! c% I2 H" s二、判断题(判断每题正误,对的在题后括号内划“√”,错的划“×”)。(10分)) K8 |/ H" L2 x W- i/ T
1. MOV DS, 2000H ( ) 6. LEA BX, AX ( )# J, t5 z0 z! O! a, s4 o/ \- c4 L
2. MOV SI,[SI] ( ) 7. OUT DX,AL ( )4 _$ F0 d [! d" i
3. IN AL, 200H ( ) 8. JS [BX] ( ) , _1 H x& O7 _/ `* b5 l& F
4. PUSH AL ( ) 9. LOOP AX ( )
; |+ X" B/ P7 G" | 5. XCHG AX, 1234H ( ) 10. CALL AX ( )
9 u. Y6 n/ R! a( N# _- L; P 8 Y! _ |% } B Q
三、谋学网(www.mouxue.com)。(20分)
7 C) }+ k# A" h9 R/ f4 y1. 已知:BX=100H,BP=200H,SI=300H,DS=1000H,SS=2000H,CS=3000H,指出下述指令中存储器操作数的有效地址及实际地址。(6分)4 P0 l& m( A% Q- b) M0 [+ W3 W
( m; I7 g6 i0 |
指 令
/ q+ u o* m, k* l9 t* h4 }# y/ U有效地址: l) C& H- R4 m2 W, d$ d; S4 {5 B
实际地址$ b9 X/ X* M; g' u0 w- r( v! J
MOV AL,CS:[SI+100H]
0 h! D. J% w: _! b
( q2 A6 @1 L/ Z9 ]* e1 x4 v3 c2 U6 l8 X/ x( @$ j2 X0 v3 n; [
MOV AL,[BP+200H]$ O: U+ b v. \ S9 S! n
7 y7 B; Y3 z7 g5 Z& g* X) v
$ v1 E' F: m- H8 l: ~MOV [BX+SI-100H],AL/ @" V9 e7 j/ e) s2 t9 c3 n
) f, P2 K ]" j9 d9 b' l2 Y# X( Z1 X" k! _8 V2 k7 G" {
' o5 a6 M2 u2 W2. 写出下述两条数据定义伪指令语句经过汇编后的内存分配情况。(4分)& A2 `1 Q! K/ q9 H* L
DATA1 DB -32,‘XY’
L2 ^* P6 |1 I6 Z% W DATA2 DW -32,‘XY’
- _8 T; r/ L3 Z& v6 H, ~; X0 }. u6 A1 a
/ V" j- `/ Z- P DATA1 DATA2. \- ]3 ^& m2 U9 b2 |
# K7 }; d$ r1 I7 o" q2 p
9 ~! }& l& g- B3 _& g( E# u
; s0 D& _3 n5 T8 ^# I3 n
; L% w' Z" y) ?3 {% I1 o+ }2 j# M2 P6 n( h
, }# i5 D6 ~+ L/ L9 P \0 m
( Q) V' K! F3 r/ E3 k* ^# Z
1 i& Q+ v* l \4 D
[$ l3 I! ~9 G& g; S3. 已知部分中断向量表的内容给出如下, 则方式码为13H的中断服务程序的入口偏移地址为( ),段地址为( )。(4分)
5 R0 w! |/ F0 b$ X3 @' x9 I5 ^C>DEBUG
) \) E. i* ^3 l$ Y; A-d 0:0
% E* h( a) j9 ] K* v0000:0000 9E 0F C9 00 65 04 70 00-16 00 C1 08 65 04 00 00
( t# T* P' x6 ?0000:0010 65 04 70 00 54 FF 00 F0-00 80 00 F0 6F EF 00 F0 ) J' f. H* L1 [6 `/ s6 K
0000:0020 00 00 00 C8 28 00 C1 08-6F EF 00 F0 6F EF 00 F0
! i! Y$ J+ T2 X0000:0030 6F EF 00 F0 6F EF 00 F0-9A 00 C1 08 65 04 70 00
0 H {% p [4 p v* E0000:0040 07 00 70 C8 4D F8 00 F0-41 F8 00 F0 97 25 58 FD ' z2 S" W$ L, M/ d1 @, S" {$ {
0000:0050 39 E7 00 F0 40 02 2D 06-2D 04 70 00 28 0A 76 06 . ^) x; s" [8 y8 L \3 S9 A& k) X
0000:0060 A4 E7 00 F0 2F 00 82 09-6E FE 00 F0 04 06 76 06 2 l5 Y" j1 M8 Z2 m7 c) {+ }4 ~
0000:0070 1D 00 00 C8 A4 F0 00 F0-22 05 00 00 C6 57 00 C0 * Y! G# l7 ^; S% _/ Q0 ~
; |8 I) B7 C/ z- W- Z0 J! Q! q3 @7 m6 V6 v! ^
4.依据下述子程序说明文件把子程序补充完整。(6分)3 V3 B/ v* B j/ Y' d
(1)子程序名:MSUB: Y. _* m9 P! A: q9 n/ B7 `& W
(2)子程序功能:求两个多字节数据之差
/ h0 [6 Y4 I" O/ p, f' l5 Q (3)入口条件:两个数据的低字节地址分别在SI和DI中,数据长度在CL中
# q. s9 {0 G; ^; p3 u (4)出口条件:差的低字节地址在SI中
7 c3 q9 K, p" L( b( [ (5)受影响的寄存器:F
( Q7 K6 T0 G& |$ d MSUB PROC NEAR
* p7 G& b0 Y6 e+ G( [, N m PUSH AX
, Q- @+ z$ B; w% t; V* U8 f PUSH DI
; O; X% ?2 P! S9 ^3 P7 j) l PUSH SI5 [0 J+ J ^& [. H! B
PUSH CX
" @6 k2 ^$ [ a3 _/ r% S$ ] CLC
5 _) Q: m/ n, ~5 g AGAIN:MOV AL,[DI]
) B; M4 R- ]$ e& o" X6 N$ W ( )
8 U1 n W1 l' ?* z0 N$ I ( )( }% y5 q- y" u$ m, x' I+ H: w
( )8 T; H# \8 z# d: R/ Q0 J
DEC CL" z9 f4 }6 |, \& n9 T: _6 ?
JNZ AGAIN
I' b3 C- ?* a. I. p8 A$ Q7 h POP CX2 ^6 T' g1 S) Q3 b" I
POP SI9 i, l) p" J+ r* u0 X5 B* G% Y
POP DI5 n/ L# c2 p+ n4 a# P8 y
POP AX- [- j; V% ^# [3 A
RET
5 O8 z6 [9 L/ t% f9 a/ i MSUB ENDP
* u9 s: ~4 ], }; c3 }3 s, i; K
. ^6 O6 R8 { E. Q+ r0 e四、改错题。(10分)
~$ F' q9 o: B( _! h$ p1 f 下列程序有错, 请将它们找出并改正过来。已知程序欲完成的功能是从两个带符号数中选出较大者送入MAX单元, 若二者相同, 将MAX清0。
( B- V8 a H4 j 要求:不必抄题,直接在试题上修改。在错误的部分下面划一条线,然后在本行的后面给出正确的资料即可。
: W% N' S2 [! J, l0 l1. SEGA SEGMENT% I8 S8 _$ \& z4 b% e
4. DAX: DB A0H
' R5 p; R P& {9 F4 }8. DAY DB 1000H
$ O( `3 ^9 j+ f2 o12. MAX DB 0
$ [: A; Y; H7 E2 I& Z) ^15. SEGA ENDS* {2 Y0 i) t0 j; Z
18. CSEG SEGMENT; Z* T, N3 W0 f. N, J
21. ASSUME CS:CSEG; DS:SEGA
6 l3 C- g2 C& C8 t4 ], Z25. BEGIN:MOV DS,SEGA
8 M; Z' k' }+ Y% G6 J7 v9 y27. MOV AL,DAX/ w( O" u% Y4 i6 d/ i, y
29. CMP AL, DAY
$ [4 t/ b1 z1 o; l- H+ e4 K0 x33. JA XGY; E/ O* { ~# g8 I4 ^* }
35. JZ ZERO9 V% L* J/ Y: J4 x' g
40. MOV AL,DAY/ e a: Q0 ]8 P
43. XGY: MOV MAX,AL/ N& b0 ]. I5 K. Y; k) ~3 A8 h2 B
47. ZERO MOV AL,4CH3 x5 H9 o P$ [# N4 g. |1 b
49. INT 21
$ Y/ n4 [. d6 m0 P0 i50. CSEG END
8 ?9 \/ n0 A$ V8 o9 K56. END START
/ n: u2 ?; \+ k& p$ J
% O: U5 _, K/ `0 K( @4 Z8 v
; R% b3 z6 o4 y五、谋学网(www.mouxue.com)(25分):用尽可能少的指令编写完成下列功能的程序段
- l" g' y2 E. g" Z @- F9 x9 d' s1. 已知DX和AX联合存放一个32位整数(DX存放高16位),将该数据逻辑右移一位。
% t0 c* @3 |$ z1 Z v" J6 Y+ u, Z. c6 m6 t: H
, @( ?) M' ?7 ]) B6 A. _3 i$ X
T6 E2 B/ `$ N# G+ Q; k' H" m3 P& c1 g& m) ]1 U6 T3 B+ Q
8 y3 m# D6 O8 m; J' Z7 j
3 V' k6 Z% D; |- i E- Y8 t5 r2.将寄存器AL的第i位置1,其它位状态不允许改变,已知i在CL中。
9 W+ ^& p. R G& z6 }4 P7 _1 _4 |/ U
( C2 |3 {+ i+ `8 v$ X
6 B$ X% d+ R) ~* t2 h
# s9 \$ ^6 d4 t
1 r* z2 _4 f. t+ j; ]* y E
1 Q z! q) `8 t4 g
2 ?. w$ w2 n* t
4 h, U) P4 @6 }: o7 ~2 v6 J ^1 M3.将AL中的字符配成偶校验码。
: d# @' W' j* p+ |
! x4 U2 t2 E& r) t4 Y0 j8 \2 ]& p
6 }+ ~; D$ d7 S7 m* P+ x( x E
1 G' c: u% U6 h& N: \
; b% H& l3 x6 ?, v; E" a3 D1 A: A0 ^
4 A! u( }7 F/ q' Y2 |
0 J. P7 U' H. {6 H" d R: L; q2 Y: {) `3 L, a+ T" ^. a' I
+ s; g. K# n3 j( N1 Z
# y. t' b2 }0 N, F4. 已知AL,BL中各存放一个带符号数,如果两数同正,则将AH清0;如果两数同负,则将AH置1;否则将AH置全1。
- c, U! M* O& n( c* E/ T1 ^8 E' B, o
?: u) W# i& ~$ @; I
1 b7 Y0 q( J$ S' m2 d4 B% _; }( F4 y! y
" p. m7 U/ s" X# C8 _- H; c9 z; k: C
3 A" ^" k6 }# D9 g
1 @1 M9 h. V" B% B& w0 N5 I( n
. v+ v: I9 s: a' j, P9 b/ `5 ~
$ L5 i& _ {$ w* C
5 v8 I0 l |8 }' n/ C& n. q$ i' J/ r, a6 d# V
! B" {) Y+ O' G6 z2 m. J9 c8 m
! D* I. d. Z( P3 h' Z6 {: j. d; ~
5 c: h! N$ o, ^' |) A& w
* l$ r+ H5 z! J) C
5.已知中断服务程序的入口地址为SEVER,对应的中断方式码为10H,写出将其入口地址写入中断向量表的程序段。
8 h7 q# A+ W F2 Z/ K * N0 l! v% P4 s- a" ~" @
$ N% i" U" S, d$ o& f
$ f2 q5 {& J3 t/ G) y3 Z% o; H/ ~& p
' [6 i( F( c9 m2 ^; H$ t2 o1 k7 A
6 `7 g& `" |/ E$ P
* n+ N8 e6 K- U7 Z8 w
* g) A7 m j' H. j+ o5 C& |- ~" f
G: d% a8 m$ w+ B
3 E. [7 D, f0 q+ e k, v* m( b* A9 K
) M) ~* D( U7 \" p
: o& ~7 E+ ?; l k. u+ ^: H8 V
( P) g( t/ s; \3 N/ o; i
6 p/ V4 h! r |, ~. f3 ~1 O2 E$ P- I* m/ L
六、程序设计题。(15分)# ~" w0 Z2 t- O9 v: s
已知一组带符号字节数据存放在内存DATA开始的连续单元中,数据个数在CNT单元存放。编制程序求出该组数据的平均值,并将其存入AVE单元。9 g; s1 v! ~6 F* T2 X0 N @
4 P" }; W7 H* M/ Z5 f3 `0 u
& N F8 t) }. E# O4 n% P4 o n: ?$ h# i! W8 \9 M
& D, u( ^: j* X7 ^
9 \: H p$ w H4 S5 a4 c) p7 a3 U
9 C8 J0 ?) O' ~
6 u" j3 s- {2 C/ P: t: F9 M& S) ~6 f$ D/ o: O2 L) C! T
: ~* _$ s" r( z* u: @1 v/ v. H2 U
; [" x7 I9 l) [' h
$ b2 n) O8 v$ @5 p
, z- y. |+ F) G4 W4 e' N7 v2 G6 K1 L8 E' J" G8 D; }
4 b6 Q, n: v- }$ G& Q, l5 d2 B
* h! D6 V* }8 o+ Y+ [" l/ t8 r0 |3 {
! h" Y, W) I5 _, b0 G2 I9 X' S/ X/ O: \2 l3 ]+ Z
7 N9 j" Y4 W$ q9 z5 Y# g) q! O. I& A- R* o
0 a, Z5 [& S1 h' r9 h3 R
9 e# t' o) V J8 F2 ]1( H2 U O b4 j5 c8 e
课程名称: 汇编语言程序设计 ! b8 Z$ J& a; W) H* o& f- I
2 ]: r, H2 a( s! j0 i0 }
|
|