計(jì)算機(jī)等級(jí)考試三級(jí)PC上級(jí)題精選21-30(3)

字號(hào):

上機(jī)題之23
    以下內(nèi)容為程序代碼:
    ;* 請(qǐng)編制程序PROG1.ASM, 其功能是: 內(nèi)存中連續(xù)存放著十六個(gè)
    ;* 10位二進(jìn)制數(shù)DB9 DB8 … DB0,每個(gè)二進(jìn)制數(shù)均用兩個(gè)字節(jié)表示,其
    ;* 存放格式均為
    ;* DB9 DB8 DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0
    ;* │←─── 低地址字節(jié) ───→│ │←──高地址字節(jié)──→│
    ;* 請(qǐng)按序?qū)⒚總€(gè)10位無(wú)符號(hào)二進(jìn)制數(shù)轉(zhuǎn)換成以下格式
    ;* DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 DB9 DB8
    ;* │←─── 低地址字節(jié)───→│ │←──高地址字節(jié)──→│
    ;* 轉(zhuǎn)換結(jié)果按原序存放在內(nèi)存中。
    ;* 例如:
    ;* 內(nèi)存中有 C048H,4091H,0080H,……
    ;* 結(jié)果為 23H,01H,45H,02H,00H,02H,……
    ;* 部分程序已給出,其中原始數(shù)據(jù)由過(guò)程LOAD從文件INPUT1.DAT
    ;* 中讀入SOURCE開(kāi)始的內(nèi)存單元中。運(yùn)算結(jié)果要求從RESULT開(kāi)始存放,
    ;* 由過(guò)程SAVE保存到OUTPUT1.DAT文件中。
    ;* 填空BEGIN和END之間已給出的源程序使其完整 (空白已用橫線
    ;* 標(biāo)出,每行空白一般只需一條指令,但采用功能相當(dāng)?shù)亩鄺l指令亦
    ;* 可), 或刪除BEGIN和END之間原有的代碼并自行編程來(lái)完成要求的
    ;* 功能。
    ;* 對(duì)程序必須進(jìn)行匯編, 并與IO.OBJ鏈接產(chǎn)生PROG1.EXE執(zhí)行文
    ;* 件,最終運(yùn)行程序產(chǎn)生結(jié)果(無(wú)結(jié)果或結(jié)果不正確者均不得分)。調(diào)
    ;* 試中若發(fā)現(xiàn)整個(gè)程序中存在錯(cuò)誤之處,請(qǐng)加以修改。
     EXTRN LOAD:FAR,SAVE:FAR
    N EQU 16
    STAC SEGMENT STACK
     DB 128 DUP (?)
    STAC ENDS
    DATA SEGMENT
    SOURCE DW N DUP(?)
    RESULT DB N*2 DUP(0)
    NAME0 DB ’INPUT1.DAT’,0
    NAME1 DB ’OUTPUT1.DAT’,0
    DATA ENDS
    CODE SEGMENT
     ASSUME CS:CODE,DS:DATA,SS:STAC
    START PROC FAR
     PUSH DS
     XOR AX,AX
     PUSH AX
     MOV AX,DATA
     MOV DS,AX
     LEA DX,SOURCE ; 數(shù)據(jù)區(qū)起始地址
     LEA SI,NAME0 ; 原始數(shù)據(jù)文件名
     MOV CX,N*2 ; 字節(jié)數(shù)
     CALL LOAD ; 從 ’INPUT1.DAT’中讀取數(shù)據(jù); **** BEGIN ****
     MOV DI,OFFSET RESULT
     MOV BX,0
     MOV CH,N
    PRO: MOV AH,BYTE PTR SOURCE[BX]
     mov al,byte ptr source[bx+1]
     ;MOV AL,________________
     MOV DL,AH ; 10位無(wú)符號(hào)二進(jìn)制數(shù)高八位
     MOV DH,AL ; 10位無(wú)符號(hào)二進(jìn)制數(shù)低二位
     MOV CL,2
     shl ax,cl
     ;SHL AX,__
     shl dx,cl
     ;SHL DX,__
     MOV AL,DH
     mov [di],ah
     mov [di+1],al
     ;MOV [DI],__
     ;MOV [DI+1],__
     ADD DI,2
     ADD BX,2
     DEC CH
     JNZ PRO
    ; **** END ****
     LEA DX,RESULT ; 結(jié)果數(shù)據(jù)區(qū)首址
     LEA SI,NAME1 ; 結(jié)果文件名
     MOV CX,N*2 ; 結(jié)果字節(jié)數(shù)
     CALL SAVE ; 保存結(jié)果到文件
     RET
    START ENDP
    CODE ENDS
    END START
    input1.dat 內(nèi)容如下:
    FF C0 F0 C0 FF 80 FF 40 FF 00 FA 40 FA 80 AA 40 CD 40 11 C0 00 00 31 80 31 40 66 40 66 C0 33 40
    output1.dat 內(nèi)容應(yīng)當(dāng)如下:
    FF 03 C3 03 FE 03 FD 03 FC 03 E9 03 EA 03 A9 02
    35 03 47 00 00 00 C6 00 C5 00 99 01 9B 01 CD 00