请编制程序,其功能是:内存中连续存放着20个无符号字节数序列,请将它们排成升序(从小到大)。 例如:
& ~+ p7 t T4 D) ?) a4 i 内存中有 01H,04H,02H…(假设后17个字节均大与04H)
4 m+ Z) h2 W |: C! B9 W( O 结果为 01H,02H,04H…(后跟17个字节,按从小到大的顺序排列)
2 c8 l, \6 x) L( K7 f* C% G 部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。( J3 l5 Q4 w8 R- p: m! x4 r# p( O
填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令, 但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。6 c d% K# Q: z8 _
对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处, 请加以修改。
' q" N1 {" W% q5 S 试题程序:: a+ D6 I3 Z& }- m$ W' ^ B
EXTRN LOAD:FAR,SAVE:FAR
" D% p7 M* f( D, R, q8 u N EQU 20
$ D1 `1 D* S' y" M6 j: y& ] STAC SEGMENT STACK0 c) e3 N) [4 a7 l- d
DB 128 DUP(?)
, B8 }" q# g U% B5 P STAC ENDS _/ N' a7 Z. k5 t& b
DATA SEGMENT
; L0 O1 K, s: G! n3 ^# f2 U SOURCE DB N DUP(?)8 ~) L7 b y" I0 i) c
RESULT DB N DUP(0)/ ]: K) m* R9 I5 _% _: z
NAME0 DB 'INPUT1.DAT',0: J1 e3 c. f, H
NAME1 DB 'OUTPUT1.DAT',02 M) l8 S) H" t3 ]5 n
DATA ENDS& C1 F) l# f2 U/ R! S" c/ c
CODE SEGMENT( p7 Y1 x( K. k( }9 S1 t
ASSUME CS:CODE,DS:DATA,SS:STAC) D# O# L" I- I4 ?$ n/ i/ n
START PROC FAR
! U, ]2 q \, E/ ` PUSH DS
1 r# f, |# o& J3 y' o2 k t/ R XOR AX,AX1 u* I; G) @5 W% Y0 w2 N" h8 I
PUSH AX/ ^$ E' b( d0 ~* G. f) k2 i
MOV AX,DATA
. f; z" x3 i4 r$ J+ d MOV DS,AX5 D( e; L7 ~6 d6 h/ @
LEA DX,SOURCE ;数据区起始地址- _& `4 T* s) h( S& A5 T
LEA SI,NAME0 ;原始数据文件名: B6 Z y5 z' i# P- n) g* S1 e1 m
MOV CX,2*N ;字节数5 j1 M$ ?. `9 o5 k, z9 v
CALL LOAD ;从'INPUT1.DAT'中读取数据" e' `& W: g' r
;****BEGIN****# W: L. V9 }2 Z7 o
LEA SI,SOURCE: n' N: ^1 @, g8 {- D% T& Y
LEA DI,RESULT
6 D: _% R" I$ { MOV CX,N
6 c% F0 F+ |5 G NEXT0: MOV AL,[SI]
' J# \2 [6 J5 ]: r! q: E9 s MOV [DI],AL3 p- B, v R7 o9 [- j# ]+ ]% c
INC SI! J8 s& | P4 ~
___________________________
8 n6 P! a, S" e- ^: z4 V% R LOOP __________________) d4 W5 y% i, D5 x
CLD
" n6 z" g% N0 N$ b MOV BX,_______________; l* E4 g4 w" N# g8 \3 U
NEXT1: LEA SI,RESULT: |% R N! S2 ~: c9 f
MOV CX,BX- d4 M' K" [0 k
NEXT2: LOD_________________________
/ p& x' {+ q1 W/ g# H% @1 J% a$ f CMP [SI],AL
, P6 m+ B* |$ H4 D JAE ___________________. t4 c8 [2 u! R6 k4 v, y
XCHG [SI],______________
4 X4 x3 I; N; n4 [7 g MOV [SI-1],AL8 }! R# {$ e( t0 G
NEXT3: LOOP ___________________7 N* M, |, L& |9 O' d
DEC ___________________/ ^) f- R; w, M- s
JNZ ___________________: z6 P# Y! A" }9 f& b
;****END****/ f; {6 {! O" R5 [+ d" h# @! T# u
LEA DX,RESULT ;结果数据区首址
* O; g, F/ Z9 f# I# g' c) } LEA SI,NAME1 ;结果文件名) o7 s" q( R/ ]: z& Q0 e
MOV CX,N ;字节数4 R9 o5 u7 w/ U) O2 A9 u
CALL SAVE ;保存结果到文件
& W3 N2 D; F+ S( ~ RET0 f x. \# }( ?5 {9 c1 p' l
START ENDP
3 I+ T5 ^+ L: X V9 A- m9 N9 ` CODE ENDS
8 f4 z: x- t2 J, D- N: H END START |