请编制程序,其功能是:内存中连续存放着20个无符号字节数序列,请将它们排成升序(从小到大)。 例如:( y0 e& H) C1 G/ F+ n$ Z R
内存中有 01H,04H,02H…(假设后17个字节均大与04H)
- x1 {4 h; ]# q6 K 结果为 01H,02H,04H…(后跟17个字节,按从小到大的顺序排列)
/ x( _, p7 f/ e; I, q' Y 部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。
" C9 Q% A- X! e$ J 填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令, 但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
- E) T# i/ Q+ A: _; L 对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处, 请加以修改。6 c* m8 q- Z: Q) t8 ^ j
试题程序: ^! R+ M1 l( W. m+ C
EXTRN LOAD:FAR,SAVE:FAR
- W' n$ L, F% \6 A( H4 j N EQU 20
4 x/ ?5 ]2 k% y2 o0 b! l STAC SEGMENT STACK
2 _; O7 N, ?9 `2 { DB 128 DUP(?)( j d7 y, i, M) y( Z/ _
STAC ENDS
9 u& {# @8 M' R1 I; p( N, F* Z! _( a DATA SEGMENT
6 b p. c5 s' O7 ]& r1 ~ SOURCE DB N DUP(?)
6 V) |: N, Q: ?) c2 M RESULT DB N DUP(0)
. ~/ \. c9 S! R NAME0 DB 'INPUT1.DAT',04 F- }3 @! S- t/ D% Q p( f6 O' i
NAME1 DB 'OUTPUT1.DAT',0
7 a3 A* u/ `7 _% { DATA ENDS
4 t; B0 @ Y& a: W. |( L. F CODE SEGMENT
& k/ O' I. n& ]) f0 C) b ASSUME CS:CODE,DS:DATA,SS:STAC
U& y" W/ f& U4 G( W' A" t* ^ START PROC FAR( |7 J+ Q; `% [
PUSH DS& h1 ~' `6 @# ]1 b& C) i- r% Q# x
XOR AX,AX1 h* K0 K" b! c: L q; R
PUSH AX# ^ E7 U# s* z, A, G. |' @5 i
MOV AX,DATA, r7 `; i* u8 G
MOV DS,AX
( t N+ V H" I% l& v/ u8 u/ s LEA DX,SOURCE ;数据区起始地址
C$ I7 }7 C8 k% k LEA SI,NAME0 ;原始数据文件名/ }* \; b3 c% R* y J
MOV CX,2*N ;字节数
7 a4 Q- L. L4 b) E7 W" v CALL LOAD ;从'INPUT1.DAT'中读取数据- ]% G$ v V2 K: R2 q
;****BEGIN****9 J' d. E% }9 s/ k8 x Q( T& G
LEA SI,SOURCE
7 N0 C2 U+ Y0 @' S! a, s LEA DI,RESULT' k# _6 I) ~& _. T# Q$ B
MOV CX,N
& d- }* [% e. [" ` NEXT0: MOV AL,[SI], U* W1 |# ~0 O% J" ~- s, A" s
MOV [DI],AL9 g9 ^& y# J! J+ _" }3 w& L2 ]. I
INC SI2 ^, o: |8 E% s
___________________________8 M% }5 M) @& M9 |$ u
LOOP __________________
9 W6 V9 o0 Z3 a% ^. ] CLD
2 f' N3 ~$ n9 C9 N5 P) S MOV BX,_______________* E9 ]: u0 w% P
NEXT1: LEA SI,RESULT& m3 @) B# ^, k& M2 v) Q# o/ M
MOV CX,BX
! I3 z2 f9 D. G NEXT2: LOD_________________________
0 s/ V1 Q6 ~8 S7 h; C CMP [SI],AL
& E3 O* d# P4 r0 ^( P JAE ___________________
7 d" J) l6 m3 C. Z/ q XCHG [SI],______________
6 s4 I* y0 g1 [ MOV [SI-1],AL4 l* c: i% r- {. d
NEXT3: LOOP ___________________
7 K# J3 i4 N# S% o8 L DEC ___________________! g$ [: R5 |4 r; l4 j, K
JNZ ___________________
: f ?, J& u7 f6 j: g& [ ;****END****+ S4 z) B9 S5 ^0 Z+ e0 Z" }+ g
LEA DX,RESULT ;结果数据区首址! O4 B6 B% D& |6 W
LEA SI,NAME1 ;结果文件名8 o. L7 s9 T1 t9 T( A& M* @: g! q
MOV CX,N ;字节数
3 V( P6 ~, @8 D Z CALL SAVE ;保存结果到文件/ }) `! b* g8 D. z
RET4 ?& n- u5 z g+ y
START ENDP
7 m( h# a! a0 C* I% K CODE ENDS, m! c% ~" u5 _% P) w3 t8 X0 l( ^
END START |