計算機等級考試三級PC上級題精選31-40(3)

字號:

上機題之33
    以下內(nèi)容為程序代碼:
    ;* 請編制程序PROG1.ASM, 其功能是: 在遞增的有序字節(jié)數(shù)組中
    ;* 插入一個正整數(shù), 并按指定的數(shù)組個數(shù)存入內(nèi)存區(qū)中。假設(shè)數(shù)組
    ;* 元素均為正數(shù)。
    ;* 例如, 將02H插入下面的數(shù)組中:
    ;* 01H,03H,04H,05H,....
    ;* 結(jié)果為 01H,02H,03H,04H,05H,....
    ;* 部分程序已經(jīng)給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT
    ;* 中讀入SOURCE開始的內(nèi)存單元中, 轉(zhuǎn)換結(jié)果要求從RESULT開始存放,
    ;* 由過程SAVE保存到文件OUTPUT1.DAT中。
    ;* 填空BEGIN和END之間已經(jīng)給出的一段源程序使其完整,填空處已
    ;* 經(jīng)用橫線標出, 每個空白一般只需要填一條指令或指令的一部分(指
    ;* 令助記符或操作數(shù)), 考生也可以填入功能相當(dāng)?shù)亩鄺l指令, 或刪去
    ;* BEGIN和END之間原有的代碼并自行編程來完成要求的功能。
    ;* 對程序必須進行匯編,并與IO.OBJ鏈接產(chǎn)生PROG1.EXE執(zhí)行文件,
    ;* 最終運行程序產(chǎn)生結(jié)果(無結(jié)果或結(jié)果不正確者均不得分)。
    EXTRN LOAD:FAR,SAVE:FAR
    N EQU 10
    DSEG SEGMENT
    MIN DB -1
    SOURCE DB N DUP(?)
    X EQU 2 ; 插入的數(shù)
    RESULT DB N DUP(0)
    NAME0 DB ’INPUT1.DAT’,0
    NAME1 DB ’OUTPUT1.DAT’,0
    DSEG ENDS
    SSEG SEGMENT STACK
     DB 256 DUP (?)
    SSEG ENDS
    CSEG SEGMENT
     ASSUME CS:CSEG,SS:SSEG,DS:DSEG
    START PROC FAR
    PUSH DS
    XOR AX,AX
    PUSH AX
     MOV AX,DSEG
    MOV DS,AX
     MOV ES,AX
    LEA DX,SOURCE
    LEA SI,NAME0
     MOV CX,N
     CALL LOAD
    ; *** BEGIN ***
     LEA BX,SOURCE
     MOV SI,N-2
     ADD BX,SI
     MOV SI,0
     MOV AL,X
    LP: cmp al,[bx+si]
     ;CMP __,[BX+SI]
     JGE INS
     MOV DL,[BX+SI]
     mov [bx+si+1],dl
     dec bx
     ;MOV [BX+SI+1],___
     ;DEC _____________
     JMP LP
    INS: mov [bx+si+1],al
     ;MOV _________,AL
     CLD
     LEA SI,SOURCE
     LEA DI,RESULT
     MOV CX,N
     rep movsb
     ;___ MOVSB
    ; *** END ***
     LEA DX,RESULT
     LEA SI,NAME1
     MOV CX,N
     CALL SAVE
     RET
    START ENDP
    CSEG ENDS
     END START
    input1.dat 內(nèi)容如下:
    01030405060708090A0B
    output1.dat 內(nèi)容應(yīng)當(dāng)如下:
    01 02 03 04 05 06 07 08 09 0A