計算機等級考試三級PC上級題精選11-20(11)

字號:

上機題之20
    以下內(nèi)容為程序代碼:
    ;* 請編制程序PROG1.ASM, 其功能是: 將十個無符號字節(jié)數(shù)據(jù)中高
    ;* 4位和低4位所表示的十六進制數(shù)分別轉(zhuǎn)換為ASCII碼, 并按照先低位
    ;* 后高位的順序存放在指定的內(nèi)存區(qū)中。
    ;* 例如:
    ;* 內(nèi)存中有 61H,4AH,5BH,.....
    ;* 結(jié)果為 31H,36H,41H,34H,42H,35H,.....
    ;* 部分程序已經(jīng)給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT
    ;* 中讀入SOURCE開始的內(nèi)存單元中, 轉(zhuǎn)換結(jié)果要求從RESULT開始存放,
    ;* 由過程SAVE保存到文件OUTPUT1.DAT中。
    ;* 填空BEGIN和END之間已經(jīng)給出的一段源程序使其完整,填空處已
    ;* 經(jīng)用橫線標出, 每個空白一般只需要填一條指令或指令的一部分(指
    ;* 令助記符或操作數(shù)), 考生也可以填入功能相當?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
    SOURCE DB N DUP(?)
    RESULT DB 2*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 SI,SOURCE
     LEA DI,RESULT
     MOV CX,N
     CLD
    NEXT: LODSB
     MOV BL,AL
     and al,0fh
     ;AND AL,___
     CALL SR
     MOV AL,BL
     PUSH CX
     MOV CL,4
     shr al,cl
     pop cx
     ;SHR AL,__
     ;_____________
     CALL SR
     LOOP NEXT
     JMP EXIT
    SR PROC
     CMP AL,0AH
     JB NUM
     ADD AL,07H
    NUM: add al,30h
     ;ADD AL,___
     STOSB
     RET
    sr endp
    ;SR ____
    ; *** END ***
    EXIT: LEA DX,RESULT
    LEA SI,NAME1
     MOV CX,2*N
     CALL SAVE
    RET
    START ENDP
    CSEG ENDS
     END START
    input1.dat 內(nèi)容如下:
    124A583B464789231C26
    output1.dat 內(nèi)容應(yīng)當如下:
    32 31 41 34 38 35 42 33 36 34 37 34 39 38 33 32
    43 31 36 32