網(wǎng)站首頁(yè)
分類導(dǎo)航
試題中心
下載中心
英語(yǔ)學(xué)習(xí)
繽紛校園
考試論壇
網(wǎng)站留言
客服中心
 計(jì)算機(jī)等級(jí)考試三級(jí)PC上級(jí)題精選11-20
【字體:
計(jì)算機(jī)等級(jí)考試三級(jí)PC上級(jí)題精選11-20
http://1glr.cn 來源:考試吧(Exam8.com)整理 點(diǎn)擊: 更新:2005-7-10

PC上機(jī)題之11
以下內(nèi)容為程序代碼:

;*      請(qǐng)編制程序PROG1.ASM,其功能是:內(nèi)存中連續(xù)存放著二十個(gè)
;*  ASCII字符,如果是0~9或A~F之間的字符,請(qǐng)把它們轉(zhuǎn)換成二進(jìn)制
;*  數(shù);若為其他字符,不作轉(zhuǎn)換。
;*      例如:
;*      內(nèi)存中有
;*        30H('0'),31H('1'), 61H('a'),41H('A'),42H('B'), ...
;*      結(jié)果為   00H,01H,61H,0AH,0BH ...
;*     部分程序已給出, 其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT
;*  中讀入SOURCE開始的內(nèi)存單元中, 運(yùn)算結(jié)果要求從RESULT開始存
;*  放,由過程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間
;*  已給出的源程序使其完整(空白已用橫線標(biāo)出,每行空白一般只需
;*  一條指令,但采用功能相當(dāng)?shù)亩鄺l指令亦可),或刪除BEGIN和END
;*  之間原有的代碼并自行編程來完成要求的功能。
;*      對(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         20
STAC     SEGMENT   STACK
         DB          128 DUP (?)
STAC     ENDS
DATA     SEGMENT
SOURCE   DB          N DUP(?)
RESULT   DB          N 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              ; 字節(jié)數(shù)
           CALL        LOAD              ; 從 'INPUT.DAT'中讀取數(shù)據(jù)
;  **** BEGIN ****
           LEA         SI,SOURCE
           mov         di,offset result
           ;____         DI,OFFSET RESULT
           mov         cx,N
           ;__________________
NEXT:      MOV        AL,[SI]
           CMP        AL,'0'
           JB           INVALID
           cmp        al,'9'
           jbe        strip
           ;CMP         AL,____
           ;JBE          ____
           CMP         AL,'A'
           JB          INVALID
           cmp         al,'F'
           ja          invalid
           ;CMP         AL, ____
           ;JA           ____
           ADD         AL,9
STRIP:     AND         AL,0FH
INVALID:   MOV         [DI],AL
           ADD         SI,1
           ADD         DI,1
           loop        next
           ;LOOP        ____
;  ****  END  ****
           LEA         DX,RESULT         ; 結(jié)果數(shù)據(jù)區(qū)首址
           LEA         SI,NAME1          ; 結(jié)果文件名
           MOV        CX,N               ; 結(jié)果字節(jié)數(shù)
           CALL        SAVE              ; 保存結(jié)果到文件
           RET
START    ENDP
CODE     ENDS
         END         START

 


input1.dat 內(nèi)容如下:
33 34 23 45 75 98 46 87 41 AC 30 63 66 61 76 39 88 77 24 DE
output1.dat 內(nèi)容應(yīng)當(dāng)如下:
03 04 23 0E 75 98 0F 87 0A AC 00 63 66 61 76 09
88 77 24 DE

上機(jī)題之12
以下內(nèi)容為程序代碼:

;*      請(qǐng)編制程序PROG1.ASM, 其功能是: 計(jì)算3×10矩陣中每一列元
;*  素(八位二進(jìn)制數(shù))之和, 并將其結(jié)果存放在指定的內(nèi)存區(qū)中。
;*      例如:
;*      內(nèi)存中有 0,0,0,0,0,0,0,0,0,0(第1行),1,1,1,1,1,1,1,1,1,1
;*  (第2行),9,9,9,9,9,9,9,9,9,9(第3行)
;*      結(jié)果為    000AH,000AH,...,000AH
;*      部分程序已經(jīng)給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT
;*  中讀入SOURCE開始的內(nèi)存單元中, 轉(zhuǎn)換結(jié)果要求從RESULT開始存放,
;*  由過程SAVE保存到文件OUTPUT1.DAT中。
;*      填空BEGIN和END之間已經(jīng)給出的一段源程序使其完整,填空處已
;*  經(jīng)用橫線標(biāo)出, 每個(gè)空白一般只需要填一條指令或指令的一部分(指
;*  令助記符或操作數(shù)), 考生也可以填入功能相當(dāng)?shù)亩鄺l指令, 或刪去
;*  BEGIN和END之間原有的代碼并自行編程來完成要求的功能。
;*      對(duì)程序必須進(jìn)行匯編,并與IO.OBJ鏈接產(chǎn)生PROG1.EXE執(zhí)行文件,
;*  最終運(yùn)行程序產(chǎn)生結(jié)果(無(wú)結(jié)果或結(jié)果不正確者均不得分)。

EXTRN LOAD:FAR,SAVE:FAR
N       EQU     30
DSEG    SEGMENT
SOURCE  DB      N DUP(?)
SRC     DW      SOURCE
RESULT  DW      N/3 DUP(0)
I       EQU     3
J       EQU     10
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     BX,1
LPJ:    MOV     DX,0
        MOV     CX,1
LPI:    MOV     AL,[SI]
        mov     ah,0
        ;_______________
        ADD     DX,AX
        add     si,10
        ;ADD     SI,__
        INC     CX
        CMP     CX,I
        JBE     LPI
        MOV     [DI],DX
        add     di,2
        ;ADD     DI,____
        INC     SRC
        MOV     SI,SRC
        inc     bx
        cmp     bx,J
        ;_______________
        ;CMP     BX,____
        JBE     LPJ
;   *** END   ***
        LEA     DX,RESULT
        LEA     SI,NAME1
        MOV     CX,N*2/3
        CALL    SAVE
        RET
START ENDP
CSEG    ENDS
        END     START

 


input1.dat 內(nèi)容如下:
010101010101010101010202020202020202020204040404040404040404
output1.dat 內(nèi)容應(yīng)當(dāng)如下:
07 00 07 00 07 00 07 00 07 00 07 00 07 00 07 00
07 00 07 00

上機(jī)題之13
以下內(nèi)容為程序代碼:

;*      請(qǐng)編制程序PROG1.ASM, 其功能是: 內(nèi)存中連續(xù)存放著二十個(gè)
;*  無(wú)符號(hào)字節(jié)數(shù)序列,求出該序列的最大值和最小值。 結(jié)果存放形
;*  式為:先按原序存放二十個(gè)需處理的無(wú)符號(hào)字節(jié)序列,后跟該序列
;*  的最大值和最小值(最大值在前,最小值在后)。
;*      例如:
;*      內(nèi)存中有 01H,02H,03H, ...
;*      結(jié)果為   01H,02H,03H, ... (共二十個(gè)需處理的原無(wú)符號(hào)字
;*  節(jié)序列),后跟該序列的最大值和最小值 (最大值在前,最小值在
;*  后)。
;*     部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT
;*  中讀入SOURCE開始的內(nèi)存單元中, 運(yùn)算結(jié)果要求從RESULT開始存
;*  放,由過程SAVE保存到文件OUTPUT1.DAT中。
;*      填空BEGIN和END之間已給出的源程序使其完整(空白已用橫線
;*  標(biāo)出, 每行空白一般只需一條指令, 但采用功能相當(dāng)?shù)亩鄺l指令
;*  亦可),或刪除BEGIN和END之間原有的代碼并自行編程來完成要求
;*  的功能。
;*      對(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        20
STAC      SEGMENT   STACK
          DB          128 DUP (?)
STAC      ENDS
DATA     SEGMENT
SOURCE   DB          N DUP(?)
RESULT   DB          N 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              ; 字節(jié)數(shù)
           CALL       LOAD              ; 從 ''INPUT''中讀取數(shù)據(jù)
;  **** BEGIN ****
;  最大值放在BH中,最小值放在BL中
           LEA        SI,SOURCE
           lea        di,result
           ;LEA        ____,RESULT
           MOV       BH,[SI]             ; 第一個(gè)字節(jié)既為最大值
           MOV       BL,BH               ; 又為最小值
           MOV       [DI],BH
           add       si,1
           add       di,1     ; 或 inc di
           ;ADD        SI, ____
           ;__________________
           MOV       CX,N-1
NEXT:      MOV       AL,[SI]
           CMP       AL,BH
           jb        chkmin
           ;____       CHKMIN
           MOV       BH,AL
           JMP        ENDL
CHKMIN:    CMP       AL,BL
           JAE        ENDL
           mov       bl,al
           ;MOV       ____,AL
ENDL:      MOV       [DI],AL
           ADD       SI,1
           ADD       DI,1
           LOOP      NEXT
           mov       [di],bh
           mov       [di+1],bl
           ;MOV       [DI],____
           ;______________
;  ****  END  ****
           LEA       DX,RESULT         ; 結(jié)果數(shù)據(jù)區(qū)首址
           LEA       SI,NAME1          ; 結(jié)果文件名
           MOV      CX,2+N             ; 結(jié)果字節(jié)數(shù)
           CALL      SAVE              ; 保存結(jié)果到文件
           RET
START    ENDP
CODE     ENDS
         END       START

 


input1.dat 內(nèi)容如下:
71 A2 34 3F 39 FC 48 43 44 45 39 32 38 41 48 37 36 35 38 87
output1.dat 內(nèi)容應(yīng)當(dāng)如下:
71 A2 34 3F 39 FC 48 43 44 45 39 32 38 41 48 37
36 35 38 87 FC 32

上機(jī)題之14
以下內(nèi)容為程序代碼:

;*      請(qǐng)編制程序PROG1.ASM, 其功能是: 對(duì)一個(gè)由可打印ASCII字符
;*  (ASCII碼20H~7FH)組成的字符串可采用下列方法進(jìn)行壓縮:從串首
;*  開始向后掃描, 如某字符單獨(dú)出現(xiàn)則該字符不變, 如某字符連續(xù)出
;*  現(xiàn)n次, 則該字符用ESC(1BH),n,<原字符>三個(gè)字節(jié)來代替(假定n不
;*  超過255)。例如:
;*    原串  : 41H,43H,43H,43H,43H,43H,43H,61H,00H ("ACCCCCCa")
;*    壓縮后: 41H,1BH,06H,43H,61H,00H
;*     設(shè)內(nèi)存中從SOURCE開始有一字符串, 其以00H結(jié)束, 長(zhǎng)度不超
;*  過100。試編程對(duì)其進(jìn)行壓縮, 結(jié)果存入RESULT開始的內(nèi)存單元。
;*      部分程序已在PROG1.ASM中給出, 請(qǐng)?zhí)羁誃EGIN和END之間已給
;*  出的源程序使其完整(空白已用橫線標(biāo)出, 每行空白一般只需一條
;*  指令, 但功能相當(dāng)?shù)亩鄺l指令亦可)或刪除BEGIN和END之間原有的
;*  代碼并自行編寫程序片段來完成要求的功能。
;*     原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT中讀入SOURCE開始的內(nèi)
;*  存單元中, 結(jié)果要求從RESULT開始存放, 由過程SAVE保存到文件
;*  OUTPUT1.DAT中。
;*     對(duì)程序必須進(jìn)行匯編, 并與IO.OBJ鏈接產(chǎn)生PROG1.EXE 執(zhí)行文
;*  件, 最終運(yùn)行程序產(chǎn)生結(jié)果(無(wú)結(jié)果或結(jié)果不正確者均不得分)。

           EXTRN      LOAD:FAR,SAVE:FAR
N          EQU        100
ESC_CODE   EQU        27

STAC       SEGMENT    STACK
           DB         128 DUP (?)
STAC       ENDS

DATA       SEGMENT
SOURCE     DB         N DUP(0)
RESULT     DB         N 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
           MOV        ES,AX             ; 置附加段寄存器

           LEA        DX,SOURCE         ; 數(shù)據(jù)區(qū)起始地址
           LEA        SI,NAME0          ; 原始數(shù)據(jù)文件名
           MOV        CX,N              ; 字節(jié)數(shù)
           CALL       LOAD              ; 從 "input1.dat"中讀取數(shù)據(jù)
;  **** BEGIN ****

           LEA        SI,RESULT
           LEA        DI,SOURCE
           CLD
           INC        DI
L0:        mov        al,[di-1]
           ;____________________
           CMP        AL,0
           JE         QUIT
           MOV        CX,0FFFFH         ; SET THE COUNTER TO 0FFFFH
           rep        scasb
           ;____________________         ; 字符串重復(fù)搜索, CX=0FFFFH-n
           NEG        CX                ; 10000H-CX->CX
           dec        cx
           ;____________________         ; 獲得重復(fù)次數(shù)n
           CMP        CX,1
           ja        compress
           ;J__        COMPRESS
           MOV        [SI],AL
           INC        SI
           jmp        L0
           ;JMP        ________
COMPRESS:  MOV        [SI],BYTE PTR ESC_CODE
           MOV        [SI+1],CL
           MOV        [SI+2],AL
           add        si,3
           ;____________________
           JMP        L0

QUIT:
           MOV       [SI],AL            ; STORE THE ''00H''
;  ****  END  ****
           LEA        DX,RESULT    ; 結(jié)果數(shù)據(jù)區(qū)首址
           LEA        SI,NAME1     ; 結(jié)果文件名起始地址
           MOV        CX,N         ; 字節(jié)數(shù)
           CALL       SAVE         ; 保存結(jié)果到"output1.dat"文件中
           RET
START      ENDP
CODE       ENDS
           END        START

 


input1.dat 文件內(nèi)容如下:
41 42 42 42 65 42 42 42 42 42 42 42 42 42 42 42
42 42 42 42 42 42 42 42 42 42 42 42 42 42 43 44
44 44 45 48 48 48 48 48 48 48 48 48 48 48 48 48
48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
48 48 48 48 48 48 49 4A 4C 47 47 47 47 47 47 47
47 47 47 47 47 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D
4D 4D 4D 00
output1.dat 文件內(nèi)容應(yīng)當(dāng)如下:
41 1B 03 42 65 1B 19 42 43 1B 03 44 45 1B 23 48
49 4A 4C 1B 0C 47 1B 0E 4D 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00

上機(jī)題之15
以下內(nèi)容為程序代碼:

;*      請(qǐng)編制程序PROG1.ASM,其功能是:
;*      對(duì)內(nèi)存中存放的六組帶符號(hào)16位二進(jìn)制數(shù)(每組由三個(gè)數(shù)組成,
;*  均不為零)進(jìn)行處理。處理方法為:當(dāng)每組中負(fù)數(shù)多于正數(shù)時(shí),將組內(nèi)
;*  負(fù)數(shù)變成正數(shù)(但絕對(duì)值不變,下同),組內(nèi)正數(shù)不變。反之,將組內(nèi)正
;*  數(shù)變成負(fù)數(shù),組內(nèi)負(fù)數(shù)不變。變換好的數(shù)按原序存放在內(nèi)存中。
;*      例如:
;*      內(nèi)存中有 0003H,0001H,0002H,0003H,0004H,FFFFH,FFFEH,
;*  FFFDH,0001H,FFFEH,FFFDH,FFFFH,…(共六組18個(gè)數(shù))
;*      結(jié)果為   FFFDH,FFFFH,FFFEH,FFFDH,FFFCH,FFFFH,0002H,
;*  0003H,0001H,0002H,0003H,0001H…(共18個(gè)數(shù))
;*      部分程序已給出, 其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT
;*  中讀入SOURCE開始的內(nèi)存單元中。運(yùn)算結(jié)果要求從RESULT開始存放,
;*  由過程SAVE保存到文件OUTPUT1.DAT中。
;*      填空BEGIN和END之間已給出的源程序使其完整(空白已用橫線標(biāo)
;*  出,每行空白一般只需一條指令, 但采用功能相當(dāng)?shù)亩鄺l指令亦可),
;*  或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。
;*      對(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        18
STAC       SEGMENT    STACK
           DB         128 DUP (?)
STAC       ENDS
DATA       SEGMENT
SOURCE     DW         N DUP(?)
RESULT     DW         N 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        SI,0
           MOV        DI,0
           MOV        BX,6
REPT1:     MOV        DX,0
           mov        cx,3
           ;_______________
CAMP:      MOV        AX,SOURCE[SI]
           add        si,2
           ;________________________
           CMP        AX,0
           JL         CONT
           JMP        NEXT
CONT:      INC        DX
NEXT:      LOOP       CAMP
           SUB        SI,6
           MOV        CX,3
           CMP        DX,2
           JAE        NEG1
           jb         next1
           ;___        NEXT1
NEG1:      MOV        AX,SOURCE[SI]
           add        si,2
           ;_______________
           CMP        AX,0
           JL         NEG2
           JMP        NOTNEG
NEG2:      neg        ax
           ;_________________
NOTNEG:    MOV        RESULT[DI],AX
           add        di,2
           ;_______________________
           LOOP       NEG1
           JMP        NEXT2
NEXT1:     MOV        AX,SOURCE[SI]
           add        si,2
           ;_________________
           CMP        AX,0
           JG         NEG3
           JMP        NOTNEG1
NEG3:      NEG        AX
NOTNEG1:   MOV        RESULT[DI],AX
           add        di,2
           ;__________________
           LOOP       NEXT1
NEXT2:     DEC        BX
           JZ         EXIT
           jmp        rept1
           ;___________________
EXIT:      NOP
;  ****  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)容如下:
03 00 FF FF FD FF 03 00 01 00 02 00 03 00 04 00 FF FF FE FF FD FF 01 00 FE FF FD FF FF FF FD FF 01 00 03 00
output1.dat 內(nèi)容應(yīng)當(dāng)如下:
03 00 01 00 03 00 FD FF FF FF FE FF FD FF FC FF
FF FF 02 00 03 00 01 00 02 00 03 00 01 00 FD FF
FF FF FD FF

上機(jī)題之16
以下內(nèi)容為程序代碼:

;*      請(qǐng)編制程序PROG1.ASM, 其功能是: 對(duì)一個(gè)由可打印ASCII字符
;*  (ASCII碼20H~7FH)組成的字符串可采用下列方法進(jìn)行壓縮:從串首
;*  開始向后掃描,如某字符單獨(dú)出現(xiàn)則該字符不變,如某字符連續(xù)出現(xiàn)
;*  n次, 則該字符用ESC(1BH),n,<原字符>三個(gè)字節(jié)來代替(假定n不超
;*  過255)。
;*      設(shè)內(nèi)存中從SOURCE開始有一用上述方法壓縮的字符串, 其以
;*  00H結(jié)束, 解壓后長(zhǎng)度不超過100。試編程對(duì)其解壓縮, 結(jié)果存入
;*  RESULT開始的內(nèi)存單元。
;*    例如:
;*    原串  :41H,1BH,06H,43H,61H,00H
;*    解壓后:41H,43H,43H,43H,43H,43H,43H,61H,00H ("ACCCCCCa")
;*      部分程序已在PROG1.ASM中給出, 請(qǐng)?zhí)羁誃EGIN和END之間已給
;*  出的源程序使其完整(空白已用橫線標(biāo)出, 每行空白一般只需一條
;*  指令, 但功能相當(dāng)?shù)亩鄺l指令亦可)或刪除BEGIN和END之間原有的
;*  代碼并自行編寫程序片段來完成要求的功能。
;*      原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT中讀入SOURCE開始的內(nèi)
;*  存單元中, 結(jié)果要求從RESULT開始存放, 由過程SAVE保存到文件
;*  OUTPUT1.DAT中。
;*      對(duì)程序必須進(jìn)行匯編, 并與IO.OBJ鏈接產(chǎn)生PROG1.EXE 執(zhí)行文
;*  件, 最終運(yùn)行程序產(chǎn)生結(jié)果(無(wú)結(jié)果或結(jié)果不正確者均不得分)。

           EXTRN      LOAD:FAR,SAVE:FAR
N          EQU        100
ESC_CODE   EQU        27

STAC       SEGMENT    STACK
           DB         128 DUP (?)
STAC       ENDS

DATA       SEGMENT
SOURCE     DB         N DUP(0)
RESULT     DB         N 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
           MOV        ES,AX             ; 置附加段寄存器

           LEA        DX,SOURCE         ; 數(shù)據(jù)區(qū)起始地址
           LEA        SI,NAME0          ; 原始數(shù)據(jù)文件名
           MOV        CX,N              ; 字節(jié)數(shù)
           CALL       LOAD              ; 從 "input1.dat"中讀取數(shù)據(jù)
;  **** BEGIN ****
           LEA        SI,SOURCE
           LEA        DI,RESULT
           CLD
L0:        LODSB
           CMP        AL,0
           JE         QUIT
           CMP        AL,ESC_CODE
           je         expand
           ;J__        EXPAND
           stosb
           ;___________________
           JMP        L0
EXPAND:    lodsb
           ;___________________     ; 解壓
           XOR        CX, CX
           mov        cl, al
           lodsb
           rep        stosb

           ;___________________
           ;___________________
           ;___________________
           ;___________________
           JMP        L0

QUIT:
           STOSB                   ; STORE THE '00H'
;  ****  END  ****
           LEA        DX,RESULT    ; 結(jié)果數(shù)據(jù)區(qū)首址
           LEA        SI,NAME1     ; 結(jié)果文件名起始地址
           MOV        CX,N         ; 字節(jié)數(shù)
           CALL       SAVE         ; 保存結(jié)果到"output1.dat"文件中
           RET
START      ENDP
CODE       ENDS
           END        START

 


input1.dat 內(nèi)容如下:
41 1B 03 42 65 1B 19 42 43 1B 03 44 45 1B 23 48
49 4A 4C 1B 0C 47 1B 0E 4D 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00
output1.dat 內(nèi)容應(yīng)當(dāng)如下:
41 42 42 42 65 42 42 42 42 42 42 42 42 42 42 42
42 42 42 42 42 42 42 42 42 42 42 42 42 42 43 44
44 44 45 48 48 48 48 48 48 48 48 48 48 48 48 48
48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
48 48 48 48 48 48 49 4A 4C 47 47 47 47 47 47 47
47 47 47 47 47 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D
4D 4D 4D 00

上機(jī)題之17
以下內(nèi)容為程序代碼:

;*      請(qǐng)編制程序PROG1.ASM, 其功能是:內(nèi)存中連續(xù)存放著十個(gè)無(wú)符
;*  號(hào)8位格雷碼表示的數(shù), 現(xiàn)將此十個(gè)數(shù)轉(zhuǎn)換成十個(gè)8位二進(jìn)制數(shù), 結(jié)
;*  果存入內(nèi)存。其轉(zhuǎn)換方法為二進(jìn)制數(shù)的最高位d[7]與格雷碼的最高位
;*  g[7]相同, 二進(jìn)制數(shù)的其余七位d[k](k=6,…,0) 分別為格雷碼的位g[k]
;*  (k=6,…,0)與二進(jìn)制數(shù)的位d[k+1](k=6,…,0) 異或的結(jié)果。
;*      例如:
;*      內(nèi)存中有 00H,03H,2BH,67H,0CH,15H,54H,02H,D8H,C7H
;*      結(jié)果為   00H,02H,32H,45H,08H,19H,67H,03H,90H,85H
;*      部分程序已給出, 其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT
;*  中讀入SOURCE開始的內(nèi)存單元中。運(yùn)算結(jié)果要求從RESULT開始存放,
;*  由過程SAVE保存到文件OUTPUT1.DAT中。
;*      填空BEGIN和END之間已給出的源程序使其完整(空白已用橫線標(biāo)
;*  出,每行空白一般只需一條指令, 但采用功能相當(dāng)?shù)亩鄺l指令亦可),
;*  或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。
;*      對(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         10
STAC      SEGMENT   STACK
           DB          128 DUP (?)
STAC      ENDS
DATA     SEGMENT
SOURCE   DB          N DUP(?)           ; 順序存放十個(gè)字節(jié)數(shù)
RESULT   DB          N DUP(0)           ; 存放結(jié)果
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             ; 字節(jié)數(shù)
           CALL       LOAD             ; 從 'INPUT1.DAT'中讀取數(shù)據(jù)
;  **** BEGIN ****
           LEA        DI,RESULT
           LEA        SI,SOURCE
           MOV        CX,10
AGN0:      MOV        AL,[SI]
           push       cx
           ;_______________
           MOV        CX,8
           MOV        BX,0
AGN1:      MOV        AH,0
           SHL        BL,1
           shl        al,1
           ;___        AL,1
           RCL        AH,1
           cmp        ah,bh
           jne        set_one
           ;CMP        AH,__
           ;________________
           JMP        NEXT
SET_ONE:   OR         BL,01H
NEXT:      mov        bh,bl
           and        bh,01h
           ;MOV        __,BL
           ;________________
           LOOP       AGN1
           pop        cx
           ;________________
           MOV        [DI],BL
           INC        SI
           INC        DI
           LOOP       AGN0
;  ****  END  ****
           LEA         DX,RESULT         ; 結(jié)果數(shù)據(jù)區(qū)首址
           LEA         SI,NAME1          ; 結(jié)果文件名
           MOV         CX,N              ; 結(jié)果字節(jié)數(shù)
           CALL        SAVE              ; 保存結(jié)果到文件
           RET
START      ENDP
CODE       ENDS
END        START

 


input1.dat 內(nèi)容如下:
A0 88 56 3D 02 D3 90 78 23 E8
output1.dat 內(nèi)容應(yīng)當(dāng)如下:
C0 F0 64 29 03 9D E0 50 3D B0

上機(jī)題之18
以下內(nèi)容為程序代碼:

;*      請(qǐng)編制程序PROG1.ASM, 其功能是: 內(nèi)存中連續(xù)存放著二十個(gè)
;*  無(wú)符號(hào)字節(jié)數(shù)序列,請(qǐng)將它們排成升序(從小到大)。
;*      例如:
;*      內(nèi)存中有 01H,04H,02H, ...(假設(shè)后十七個(gè)字節(jié)均大與04H)
;*      結(jié)果為   01H,02H,04H, ...(后跟十七個(gè)字節(jié),按從小到大
;*  的順序排列)
;*     部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT
;*  中讀入SOURCE開始的內(nèi)存單元中。 運(yùn)算結(jié)果要求從RESULT開始存
;*  放,由過程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間
;*  已給出的源程序使其完整(空白已用橫線標(biāo)出,每行空白一般只需
;*  一條指令,但采用功能相當(dāng)?shù)亩鄺l指令亦可),或刪除BEGIN和END
;*  之間原有的代碼并自行編程來完成要求的功能。
;*      對(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         20
STAC      SEGMENT   STACK
           DB          128 DUP (?)
STAC      ENDS
DATA     SEGMENT
SOURCE   DB          N DUP(?)
RESULT   DB          N 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              ; 字節(jié)數(shù)
           CALL       LOAD              ; 從 'INPUT.DAT'中讀取數(shù)據(jù)
;  **** BEGIN ****
           LEA       SI,SOURCE
           LEA       DI,RESULT
           MOV       CX,N
NEXT0:     MOV       AL,[SI]
           MOV       [DI],AL
           INC       SI
           inc       di
           loop      next0
           ;_________________
           ;LOOP      ____
           CLD
           mov       bx,N-1
           ;MOV       BX,______
NEXT1:     LEA       SI,RESULT
           MOV       CX,BX
NEXT2:     lodsb
           ;LOD____
           CMP       [SI],AL
           jae       next3
           ;JAE       ____________
           xchg      [si],al
           ;XCHG      [SI],_______
           MOV       [SI-1],AL
NEXT3:     loop      next2
           ;LOOP      _____
           dec       bx
           jnz       next1
           ;DEC       ______
           ;JNZ       ______
;  ****  END  ****
           LEA       DX,RESULT        ; 結(jié)果數(shù)據(jù)區(qū)首址
           LEA       SI,NAME1         ; 結(jié)果文件名
           MOV       CX,N             ; 結(jié)果字節(jié)數(shù)
           CALL      SAVE             ; 保存結(jié)果到文件
           RET
START    ENDP
CODE     ENDS
         END        START

 


input1.dat 內(nèi)容如下:
F1 A9 12 09 44 C5 10 35 E9 30 48 10 8A 30 7F 00 60 70 80 90
output1.dat 內(nèi)容應(yīng)當(dāng)如下:
00 09 10 10 12 30 30 35 44 48 60 70 7F 80 8A 90
A9 C5 E9 F1

上機(jī)題之19
以下內(nèi)容為程序代碼:

;*      請(qǐng)編制程序PROG1.ASM, 其功能是: 內(nèi)存中連續(xù)存放的二十個(gè)八
;*  位無(wú)符號(hào)數(shù)是由一個(gè)八位A/D轉(zhuǎn)換器采集的信號(hào)(X[n], n=0~19),現(xiàn)
;*  要求對(duì)該信號(hào)按下列要求作剔點(diǎn)濾波處理(處理后的信號(hào)記為Y[n],
;*  n=0~19):
;*      對(duì)于第一個(gè)信號(hào)(n=0)不作濾波,  Y[0]=X[0]
;*      對(duì)于其后的信號(hào)(n>0)
;*        a). Y[n]= Y[n-1]+delta   if X[n]>Y[n-1]+delta
;*        b). Y[n]= Y[n-1]-delta   if X[n]<Y[n-1]-delta
;*        c). Y[n]= X[n]           if│X[n]-Y[n-1]│<=delta
;*      其中delta 取30(1EH)
;*      例如:
;*        Xn:   78H,4AH,41H,63H,70H,...
;*        Yn:   78H,5AH,41H,5FH,70H,...
;*      部分程序已在PROG1.ASM中給出, 請(qǐng)?zhí)羁誃EGIN和END之間已給
;*  出的源程序使其完整(空白已用橫線標(biāo)出, 每行空白一般只需一條
;*  指令, 但功能相當(dāng)?shù)亩鄺l指令亦可)或刪除BEGIN和END之間原有的
;*  代碼并自行編寫程序片段來完成要求的功能。
;*      原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT中讀入SOURCE開始的內(nèi)
;*  存單元中, 結(jié)果要求從RESULT開始存放, 由過程SAVE保存到文件
;*  OUTPUT1.DAT中。
;*      對(duì)程序必須進(jìn)行匯編, 并與IO.OBJ鏈接產(chǎn)生PROG1.EXE 執(zhí)行文
;*  件, 最終運(yùn)行程序產(chǎn)生結(jié)果(無(wú)結(jié)果或結(jié)果不正確者均不得分)。

           EXTRN      LOAD:FAR,SAVE:FAR

N          EQU        20
DELTA      EQU        30

STAC       SEGMENT    STACK
           DB         128 DUP (?)
STAC       ENDS

DATA       SEGMENT
SOURCE     DB         N   DUP(?)
RESULT     DB         N   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
           MOV        ES,AX       ; 置附加段寄存器

           LEA        DX,SOURCE   ; 數(shù)據(jù)區(qū)起始地址
           LEA        SI,NAME0    ; 原始數(shù)據(jù)文件名起始地址
           MOV        CX,N        ; 字節(jié)數(shù)
           CALL       LOAD        ; 從"input1.dat"中讀取數(shù)據(jù)
;  **** BEGIN ****
           LEA        SI,SOURCE
           LEA        DI,RESULT
           CLD
           MOVSB                     ; Y[0]=X[0]
           MOV        CX,N-1
FILTER:
           XOR        AX,AX
           XOR        BX,BX
           XOR        DX,DX
           LODSB                     ; X[n]
           mov        bl,[di-1]
           ;MOV        BL,______      ; Y[n-1]->BL
           MOV        DL,BL
           ADD        BX,DELTA       ; Y[n-1]+delta, 符號(hào)位擴(kuò)展
           SUB        DX,DELTA       ; Y[n-1]-delta, 符號(hào)位擴(kuò)展
           CMP        AX,BX
           jle        next
           ;J__        NEXT
           mov        [di], bl
           ;____________________
           JMP        CONT
NEXT:      CMP        AX,DX
           jge        store
           ;J__        STORE
           mov        [di],dl
           ;____________________
           JMP        CONT
STORE:     mov        [di],al
           ;____________________
CONT:      INC        DI
           LOOP       FILTER
;  ****  END  ****
           LEA        DX,RESULT    ; 結(jié)果數(shù)據(jù)區(qū)首址
           LEA        SI,NAME1     ; 結(jié)果文件名起始地址
           MOV        CX,N         ; 字節(jié)數(shù)
           CALL       SAVE         ; 保存結(jié)果到"output1.dat"文件中
           RET
START      ENDP
CODE       ENDS
           END        START

 


input1.dat 內(nèi)容如下:
36 15 00 0E 33 43 65 7B 96 B8 CF DF FE FF E6 D9 BE 99 90 B4
output1.dat 內(nèi)容應(yīng)當(dāng)如下:
36 18 00 0E 2C 43 61 7B 96 B4 CF DF FD FF E6 D9
BE A0 90 AE


上機(jī)題之20
以下內(nèi)容為程序代碼:

;*      請(qǐng)編制程序PROG1.ASM, 其功能是: 將十個(gè)無(wú)符號(hào)字節(jié)數(shù)據(jù)中高
;*  4位和低4位所表示的十六進(jìn)制數(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)用橫線標(biāo)出, 每個(gè)空白一般只需要填一條指令或指令的一部分(指
;*  令助記符或操作數(shù)), 考生也可以填入功能相當(dāng)?shù)亩鄺l指令, 或刪去
;*  BEGIN和END之間原有的代碼并自行編程來完成要求的功能。
;*      對(duì)程序必須進(jìn)行匯編,并與IO.OBJ鏈接產(chǎn)生PROG1.EXE執(zhí)行文件,
;*  最終運(yùn)行程序產(chǎn)生結(jié)果(無(wú)結(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)當(dāng)如下:
32 31 41 34 38 35 42 33 36 34 37 34 39 38 33 32
43 31 36 32

文章錄入:ak47    責(zé)任編輯:ak47  
 版權(quán)聲明
   如果本網(wǎng)站所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本網(wǎng)內(nèi)容,請(qǐng)注明出處。
 發(fā)表評(píng)論
關(guān)于本站 網(wǎng)站聲明 廣告服務(wù)  聯(lián)系方式  付款方式  站內(nèi)導(dǎo)航  客服中心  友情鏈接   
Copyright © 2004-2006 考試吧 (Exam8.com) All Rights Reserved 
中國(guó)科學(xué)院研究生院中關(guān)村園區(qū)(北京市海淀區(qū))