首頁 考試吧論壇 Exam8視線 考試商城 網絡課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓 | 在職研 | 自學考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級 | 職稱英語 | 商務英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學習 | 法語 | 德語 | 韓語
計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證
華為認證 | Java認證
公務員 | 報關員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問 | 導游資格
報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師
人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業(yè)資格 | 廣告師職業(yè)水平
駕駛員 | 網絡編輯
衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護士
會計從業(yè)資格考試會計證) | 經濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務師
注冊資產評估師 | 高級會計師 | ACCA | 統(tǒng)計師 | 精算師 | 理財規(guī)劃師 | 國際內審師
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
質量工程師 | 物業(yè)管理師 | 招標師 | 結構工程師 | 建筑師 | 房地產估價師 | 土地估價師 | 巖土師
設備監(jiān)理師 | 房地產經紀人 | 投資項目管理師 | 土地登記代理人 | 環(huán)境影響評價師 | 環(huán)保工程師
城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師
繽紛校園 | 實用文檔 | 英語學習 | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲
您現在的位置: 考試吧(Exam8.com) > 計算機等級考試 > 計算機三級 > PC技術 > 上機題庫 > 正文

計算機等級考試三級PC上級題匯總(1)

PC上機題之一
;*      請編制程序PROG1.ASM, 其功能是: 內存中連續(xù)存放的二十
;*  個八位有符號數(補碼)是由一個八位A/D轉換器采集的雙極性信
;*  號(Xn),  現要求對該信號作如下限幅處理 (處理后的信號記為
;*  Yn):
;*        a).    Yn= -100        Xn<-100
;*        b).    Yn= Xn         │Xn│<=100
;*        c).    Yn= 100         Xn>100
;*      例如:
;*        Xn:  67H,61H,8EH,38H,...
;*        Yn:  64H,61H,9CH,38H,...
;*      部分程序已在PROG1.ASM中給出, 請?zhí)羁誃EGIN和END之間已給
;*  出的源程序使其完整(空白已用橫線標出, 每行空白一般只需一條
;*  指令, 但功能相當的多條指令亦可)或刪除BEGIN和END之間原有的
;*  代碼并自行編寫程序片段來完成要求的功能。
;*      原始數據由過程LOAD從文件INPUT1.DAT中讀入SOURCE開始的內
;*  存單元中, 結果要求從RESULT開始存放, 由過程SAVE保存到文件
;*  OUTPUT1.DAT中。
;*      對程序必須進行匯編, 并與IO.OBJ鏈接產生PROG1.EXE 執(zhí)行文
;*  件, 最終運行程序產生結果(無結果或結果不正確者均不得分)。

           EXTRN      LOAD:FAR,SAVE:FAR

N          EQU        20
MAX_VAL    EQU        100

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   ; 數據區(qū)起始地址
           LEA        SI,NAME0    ; 原始數據文件名起始地址
           MOV        CX,N        ; 字節(jié)數
           CALL       LOAD        ; 從"input1.dat"中讀取數據
;  **** BEGIN ****
           LEA        SI,SOURCE
           LEA        DI,RESULT
           mov        cx,N
           ;____________________
NEXT:      MOV        AL,[SI]
           CMP        AL,-MAX_VAL
           jl         LESS
           ;J__        LESS
           CMP        AL,MAX_VAL
           jl         store
           ;______________________
           MOV        AL,MAX_VAL
           JMP        STORE
LESS:      MOV        AL,-MAX_VAL
STORE:     MOV        [DI],AL
           inc        si
           inc        di
           loop       next
           ;______________________
           ;______________________
           ;______________________
;  ****  END  ****
           LEA        DX,RESULT    ; 結果數據區(qū)首址
           LEA        SI,NAME1     ; 結果文件名起始地址
           MOV        CX,N         ; 字節(jié)數
           CALL       SAVE         ; 保存結果到"output1.dat"文件中
           RET
START      ENDP
CODE       ENDS
           END        START

 

input1.dat 內容如下:
1C 65 7F 72 63 56 D3 99 D9 39 75 83 C8 2D 61 7E 43 8E 6C 61
output1.dat 內容應當如下:
1C 64 64 64 63 56 D3 9C D9 39 64 9C C8 2D 61 64
43 9C 64 61

PC上機題之二
io.obj 與以前幾次考試的相同
以下內容為程序代碼:

;*      請編制程序PROG1.ASM, 其功能是: 內存中連續(xù)存放著10個用
;*  ASCII碼表示的十進制個位數,將它們轉換成相應的二進制無符號
;*  字節(jié)N0, N1,…, N9, 并統(tǒng)計N0, N1,…, N9中大于等于5的十進制
;*  數的個數n。轉換結果按原序存放,之后存放n(n用字節(jié)表示)。
;*      例如:
;*      內存中有 30H('0'),39H('9'),31H('1'), …
;*      結果為   00H,09H,01H,…,(后跟n,n為N0,N1,…, N9中大于
;*  等于5的十進制數的個數)
;*      部分程序已給出,其中原始數據由過程LOAD從INPUT1.DAT文
;*  件中讀入SOURCE開始的內存單元中。運算結果要求從RESULT開始
;*  存放, 由過程SAVE保存到文件OUTPUT1.DAT中。
;*      填空BEGIN和END之間已給出的源程序使其完整 (空白已用橫
;*  線標出,每行空白一般只需一條指令,但采用功能相當的多條指
;*  令亦可), 或刪除BEGIN和END之間原有的代碼并自行編程來完成
;*  要求的功能。
;*      對程序必須進行匯編,  并與IO.OBJ鏈接產生PROG1.EXE執(zhí)行
;*  文件,最終運行程序產生結果(無結果或結果不正確者均不得分)。
;*  調試中若發(fā)現整個程序中存在錯誤之處,請加以修改。

          EXTRN      LOAD:FAR,SAVE:FAR
N         EQU         10
STAC      SEGMENT   STACK
           DB          128 DUP (?)
STAC      ENDS            
DATA     SEGMENT        
SOURCE   DB          N DUP(?)
RESULT   DB          N+1 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        ; 數據區(qū)起始地址
           LEA        SI,NAME0         ; 原始數據文件名
           MOV        CX,N             ; 字節(jié)數
           CALL       LOAD             ; 從'INPUT1.DAT'中讀取數據
;  **** BEGIN ****            
           MOV        DI,OFFSET RESULT
           MOV        BX,0
           MOV        CX,N
           mov        dl,0
           ;MOV        DL,__
PRO:       MOV        AL,[BX]
           sub        al,30h
           ;SUB        AL,___
           CMP        AL,05
           jl         jump
           inc        dl
           ;__         JUMP              ; 小于5
           ;INC        __                ; 大于等于5
JUMP:      MOV        [DI],AL
           INC        BX
           INC        DI
           DEC        CX
           JNZ        PRO
           mov        [di],dl
           ;_______________
;  ****  END  ****
           LEA        DX,RESULT        ; 結果數據區(qū)首址
           LEA        SI,NAME1         ; 結果文件名
           MOV        CX,N+1           ; 結果字節(jié)數
           CALL       SAVE             ; 保存結果到文件
         RET
START    ENDP
CODE     ENDS
END      START

 

input1.dat 內容如下:
30 39 31 38 32 37 33 36 34 35
output1.dat 內容應當如下:
00 09 01 08 02 07 03 06 04 05 05

上機題之三
以下內容為程序代碼:

;*      請編制程序PROG1.ASM,其功能是:
;*      對內存中存放的20個帶符號8位二進制數進行處理。處理方法
;*  為:大于等于+64的數用ASCII字符'>'(3EH)表示;大于0小于+64的數
;*  用ASCII字符'+'(2BH)表示;等于0的數用ASCII字符'0'(30H)表示;
;*  小于0大于-64的數用ASCII字符'-'(2DH)表示; 小于等于-64的數用
;*  ASCII字符'<'(3CH)表示。
;*      例如:
;*      內存中有 00H,01H,3FH,40H,41H,7EH,7FH,80H,FFH,C0H,…
;*  (共20個字)
;*      結果為   30H,2BH,2BH,3EH,3EH,3EH,3EH,3CH,2DH,3CH,…
;*  (共20個ASCII碼)
;*      部分程序已給出, 其中原始數據由過程LOAD從文件INPUT1.DAT
;*  中讀入SOURCE開始的內存單元中。運算結果要求從RESULT開始存放,
;*  由過程SAVE保存到文件OUTPUT1.DAT中。
;*      請在BEGIN和END之間補充一段源程序完成要求的功能。
;*      對程序必須進行匯編,并與IO.OBJ鏈接產生PROG1.EXE執(zhí)行文件,
;*  最終運行程序產生結果(無結果或結果不正確者均不得分)。調試中
;*  若發(fā)現整個程序中存在錯誤之處, 請加以修改。

           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          ; 數據區(qū)起始地址
           LEA        SI,NAME0           ; 原始數據文件名
           MOV        CX,N               ; 字節(jié)數
           CALL       LOAD               ; 從 'INPUT1.DAT'中讀取數據
;  **** BEGIN ****
           LEA        SI,SOURCE
           LEA        DI,RESULT
           mov        cx,N
NEXT:      MOV        AL,[SI]
           CMP        AL,0
           jl         fu
           jg         zheng
           mov        al,30h
           jmp        store
fu:        CMP        AL,-64
           jle        less
           mov        al,2dh
           jmp        store
less:      mov        al,3ch
           jmp        store
zheng:     cmp        al,64
           jge        great
           mov        al,2bh
           jmp        store
great:     mov        al,3eh
STORE:     MOV        [DI],AL
           inc        si
           inc        di
           dec        cx
           jne        next

;  ****  END  ****
           LEA        DX,RESULT          ; 結果數據區(qū)首址
           LEA        SI,NAME1           ; 結果文件名
           MOV        CX,N               ; 結果字節(jié)數
           CALL       SAVE               ; 保存結果到文件
           RET
START      ENDP
CODE       ENDS
           END        START

 

input1.dat 內容如下:
C0 FF 80 7F FE 41 40 3F 01 00 00 01 3F 40 41 FE 7F 80 FF C0
output1.dat 內容應當如下:
3C 2D 3C 3E 2D 3E 3E 2B 2B 30 30 2B 2B 3E 3E 2D
3E 3C 2D 3C

上機題之四
以下內容為程序代碼:

;*      請編制程序PROG1.ASM, 其功能是: 內存中連續(xù)存放的二十個八
;*  位無符號數是一個自動抄表儀抄錄的二十個用戶某月的用水量(立方
;*  米),為了控制用水量,水費計算公式如下(X表示用水量; Y表示水費,
;*  單位為分):
;*        a).    Y= X*70                  X<=10
;*        b).    Y= 10*70+(X-10)*120      X>10
;*      例如:
;*        用水量(X):    04H,  0FH,  18H,...
;*        水費( Y ):  0118H,0514H,094CH,...
;*      試計算出這二十個用戶應繳納的水費, 結果用字(word)表示。
;*      部分程序已在PROG1.ASM中給出, 請?zhí)羁誃EGIN和END之間已給
;*  出的源程序使其完整(空白已用橫線標出, 每行空白一般只需一條
;*  指令, 但功能相當的多條指令亦可)或刪除BEGIN和END之間原有的
;*  代碼并自行編寫程序片段來完成要求的功能。
;*      原始數據由過程LOAD從文件INPUT1.DAT中讀入SOURCE開始的內
;*  存單元中, 結果要求從RESULT開始存放, 由過程SAVE保存到文件
;*  OUTPUT1.DAT中。
;*      對程序必須進行匯編, 并與IO.OBJ鏈接產生PROG1.EXE 執(zhí)行文
;*  件, 最終運行程序產生結果(無結果或結果不正確者均不得分)。

           EXTRN      LOAD:FAR,SAVE:FAR

N          EQU        20
RATE1      EQU        70
RATE2      EQU        120
DELTA      EQU        10

STAC       SEGMENT    STACK
           DB         128 DUP (?)
STAC       ENDS

DATA       SEGMENT
SOURCE     DB         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   ; 數據區(qū)起始地址
           LEA        SI,NAME0    ; 原始數據文件名起始地址
           MOV        CX,N        ; 字節(jié)數
           CALL       LOAD        ; 從"input1.dat"中讀取數據
;  **** BEGIN ****

           LEA        SI,SOURCE
           LEA        DI,RESULT
           CLD           
           MOV        CX,N
           MOV        BL,RATE1
           MOV        BH,RATE2
NEXT:      mov        al,[si]
           ;_________________________
           CMP        AL,DELTA
           ja         great
           ;J__        GREAT
           MUL        BL
           JMP        STORE
GREAT:     sub        ax,delta
           ;_________________________
           MUL        BH
           add        ax,delta*rate1
           ;_________________________
STORE:     mov        [di],ax
           add        di,2
           ;_________________________
           ;_________________________
           INC        SI
           LOOP       NEXT

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

 

input1.dat 內容如下:
05 03 0A 22 0C 03 04 05 19 0C 0B 04 03 11 10 01 15 83 0F 0A
output1.dat 內容應當如下:
5E 01 D2 00 BC 02 FC 0D AC 03 D2 00 18 01 5E 01
C4 09 AC 03 34 03 18 01 D2 00 04 06 8C 05 46 00
E4 07 74 3B 14 05 BC 02

上機題之五
以下內容為程序代碼:

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

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

 

input1.dat 內容如下:
010101020202030303040404050505060606070707080808090909101010
output1.dat 內容應當如下:
03 00 06 00 09 00 0C 00 0F 00 12 00 15 00 18 00
1B 00 30 00

上機題六
以下內容為程序代碼:

;*      請編制程序PROG1.ASM, 其功能是: 內存中連續(xù)存放著十六個
;*  12位無符號二進制數DB[11]DB[10]…DB[0],其存放格式均為
;*  DB[11] DB[10] DB[9] DB[8] DB[7] DB[6] DB[5] DB[4]
;*  │←─────── 低地址字節(jié)───────→│
;*  DB[3] DB[2] DB[1] DB[0]  0  0  0  0
;*  │←──── 高地址字節(jié) ────→│
;*      請判別這十六個12位二進制數是否大于800H;若大于800H,則
;*  相應地在內存中存入01H;否則,存入00H。最后存放這十六個12位
;*  二進制數中大于800H的數的個數n(n用一個字節(jié)表示)。
;*      例如:
;*      內存中有 12H,30H,84H,50H,80H,00H,……
;*      結果為   00H,01H,00H,… (共十六個字節(jié)),后跟n
;*      部分程序已給出,其中原始數據由過程LOAD從文件INPUT1.DAT
;*  中讀入SOURCE開始的內存單元中。運算結果要求從RESULT開始存放,
;*  由過程SAVE保存到OUTPUT1.DAT文件中。
;*      填空BEGIN和END之間已給出的源程序使其完整 (空白已用橫線
;*  標出,每行空白一般只需一條指令,但采用功能相當的多條指令亦
;*  可), 或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的
;*  功能。
;*      對程序必須進行匯編, 并與IO.OBJ鏈接產生PROG1.EXE執(zhí)行文
;*  件,最終運行程序產生結果(無結果或結果不正確者均不得分)。調
;*  試中若發(fā)現整個程序中存在錯誤之處,請加以修改。

          EXTRN      LOAD:FAR,SAVE:FAR
N         EQU         16
STAC      SEGMENT   STACK
           DB          128  DUP (?)
STAC      ENDS
DATA     SEGMENT
SOURCE  DB           N*2 DUP(?)
RESULT  DB           N+1 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        ; 數據區(qū)起始地址
           LEA        SI,NAME0         ; 原始數據文件名
           MOV        CX,N*2           ; 字節(jié)數
           CALL       LOAD             ; 從 'INPUT1.DAT'中讀取數據
;  **** BEGIN ****          
           MOV        CH,N
           MOV        CL,00H           ; 大于800H的數的個數n
           MOV        BX,0
           MOV        DX,0100H
           mov        di,offset result
           ;MOV        DI,_____________
PRO:       MOV        AH,[BX]
           MOV        AL,[BX+1]
           cmp        ax,8000h
           jbe        c_0
           ;CMP        AX,_________
           ;JBE        ___                 ; <=800H
           MOV        [DI],DH              ; >800H
           INC        CL
           INC        DI
           JMP        JUMP
C_0:       MOV        [DI],DL
           INC        DI
JUMP:      ADD        BX,2
           DEC        CH
           JNZ        PRO
           mov        [di],cl
           ;MOV        [DI],__
; ****  END  ****
           LEA        DX,RESULT    ; 結果數據區(qū)首址
           LEA        SI,NAME1     ; 結果文件名
           MOV        CX,N+1       ; 結果字節(jié)數
           CALL       SAVE         ; 保存結果到文件
         RET
START    ENDP
CODE     ENDS
END       START

 

input1.dat 內容如下:
FF F0 FF 00 F0 F0 0F F0 F0 00 0F 00 00 F0 00 00 00 50 05 00 50 00 0A A0 A0 A0 AA 00 AA A0 55 50
output1.dat 內容應當如下:
01 01 01 00 01 00 00 00 00 00 00 00 01 01 01 00
07

PC上機題之七
以下內容為程序代碼:

;*      請編制程序PROG1.ASM, 其功能是: 內存中連續(xù)存放的二十個八
;*  位無符號數是一個自動抄表儀抄錄的二十個用戶某月的用水量(立方
;*  米),為了控制用水量,水費計算公式如下(X表示用水量; Y表示水費,
;*  單位為分):
;*        a).    Y= X*70       X<=5
;*        b).    Y= X*100      5<X<=20
;*        c).    Y= X*150      X>20
;*      例如:
;*        用水量(X):    04H,  10H,  18H,...
;*        水費( Y ):  0118H,0640H,0E10H,...
;*      試計算出這二十個用戶應繳納的水費, 結果用字(word)表示。
;*      部分程序已在PROG1.ASM中給出, 請?zhí)羁誃EGIN和END之間已給
;*  出的源程序使其完整(空白已用橫線標出, 每行空白一般只需一條
;*  指令, 但功能相當的多條指令亦可)或刪除BEGIN和END之間原有的
;*  代碼并自行編寫程序片段來完成要求的功能。
;*      原始數據由過程LOAD從文件INPUT1.DAT中讀入SOURCE開始的內
;*  存單元中, 結果要求從RESULT開始存放, 由過程SAVE保存到文件
;*  OUTPUT1.DAT中。
;*      對程序必須進行匯編, 并與IO.OBJ鏈接產生PROG1.EXE 執(zhí)行文
;*  件, 最終運行程序產生結果(無結果或結果不正確者均不得分)。

           EXTRN      LOAD:FAR,SAVE:FAR

N          EQU        20

STAC       SEGMENT    STACK
           DB         128 DUP (?)
STAC       ENDS

DATA       SEGMENT
SOURCE     DB         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   ; 數據區(qū)起始地址
           LEA        SI,NAME0    ; 原始數據文件名起始地址
           MOV        CX,N        ; 字節(jié)數
           CALL       LOAD        ; 從"input1.dat"中讀取數據
;  **** BEGIN ****
           LEA        SI,SOURCE
           LEA        DI,RESULT
           CLD
           MOV        CX,N
           MOV        BL,70
           MOV        BH,100
           MOV        DL,150
NEXT:      mov        al,[si]
           ;_________________
           CMP        AL,5
           ja         gt5
           mul        bl
           ;J__        GT5
           ;_________________
           JMP        STORE
GT5:       CMP        AL,20
           ja         gt20
           mul        bh
           ;J__        GT20
           ;_________________
           JMP        STORE
GT20:      mul        dl
           ;_________________
STORE:     MOV        [DI],AX
           inc        si
           add        di,2
           ;_________________
           ;_________________
           LOOP       NEXT

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

 


input1.dat 文件內容如下:
05 03 0A 22 0C 03 04 05 19 0C 0B 04 03 11 10 01 15 83 0F 0A
output1.dat 內容應當如下:
5E 01 D2 00 E8 03 EC 13 B0 04 D2 00 18 01 5E 01
A6 0E B0 04 4C 04 18 01 D2 00 A4 06 40 06 46 00
4E 0C C2 4C DC 05 E8 03


上機題之八
以下內容為程序代碼:

;*      請編制程序PROG1.ASM, 其功能是: 內存中連續(xù)存放著兩個無符
;*  號字節(jié)數序列Ak和Bk(k=0,…,9), 求序列Ck,Ck為Ak和Bk異或運算
;*  的結果。 以字節(jié)的形式按C0,…,C9的順序存放邏輯運算的結果。
;*      例如:
;*      序列Ak為00H,03H,07H,…;
;*      序列Bk為FFH,AAH,55H,…。
;*      結果Ck為FFH,A9H,52H,…。
;*      部分程序已給出,其中原始數據由過程LOAD從文件INPUT1.DAT
;*  中讀入SOURCE開始的內存單元中。運算結果要求從RESULT開始存放,
;*  由過程SAVE保存到文件OUTPUT1.DAT中。
;*      填空BEGIN和END之間已給出的源程序使其完整 (空白已用橫線
;*  標出,每行空白一般只需一條指令,但采用功能相當的多條指令亦
;*  可), 或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的
;*  功能。
;*      對程序必須進行匯編,  并與IO.OBJ鏈接產生PROG1.EXE執(zhí)行文
;*  件,最終運行程序產生結果(無結果或結果不正確者均不得分)。調
;*  試中若發(fā)現整個程序中存在錯誤之處,請加以修改。

          EXTRN      LOAD:FAR,SAVE:FAR
N         EQU         10
STAC      SEGMENT   STACK
           DB          128 DUP (?)
STAC      ENDS            
DATA     SEGMENT        
SOURCE   DB          N*2 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        ; 數據區(qū)起始地址
           LEA        SI,NAME0         ; 原始數據文件名
           MOV        CX,N*2           ; 字節(jié)數
           CALL       LOAD             ; 從'INPUT1.DAT'中讀取數據
;  **** BEGIN ****            
           mov        si,offset source
           mov        di,offset result
           ;MOV       _____________
           ;MOV       __________
           MOV       BX,0
PRO:       mov       al,[bx+N]
           ;MOV       AL,___________
           XOR       AL,[BX]
           mov       [di],al
           ;MOV       ____________
           INC        DI
           inc        bx
           ;________________
           DEC        CX
           JNZ        PRO
;  ****  END  ****
           LEA        DX,RESULT         ; 結果數據區(qū)首址
           LEA        SI,NAME1          ; 結果文件名
           MOV        CX,N              ; 結果字節(jié)數
           CALL       SAVE              ; 保存結果到文件
         RET
START    ENDP
CODE     ENDS
END      START

 


input1.dat 內容如下:
00 03 07 0F 10 31 55 AA FF 80 FF AA 55 70 3F 58 55 83 08 00

output1.dat 內容應當如下:
FF A9 52 7F 2F 69 00 29 F7 80


上機題之九
以下內容為程序代碼:

;*      請編制程序PROG1.ASM, 其功能是: 內存中連續(xù)存放著二十個
;*  ASCII字符,如果是大寫字母A~Z之間的字符, 請把它們轉換成相
;*  應的小寫字符;若為其他字符,不作轉換。
;*      例如:內存中有
;*        31H('1'),32H('2'),61H('a'),41H('A'),42H('B'), ...
;*      結果為   31H,32H,61H,61H(a),62H(b) ...
;*     部分程序已給出,其中原始數據由過程LOAD從文件INPUT1.DAT
;*  中讀入SOURCE開始的內存單元中。 運算結果要求從RESULT開始存
;*  放,由過程SAVE保存到OUTPUT1.DAT文件中。填空BEGIN和END之間
;*  已給出的源程序使其完整(空白已用橫線標出,每行空白一般只需
;*  一條指令,但采用功能相當的多條指令亦可),或刪除BEGIN和END
;*  之間原有的代碼并自行編程來完成要求的功能。
;*      對程序必須進行匯編,并與IO.OBJ鏈接產生PROG1.EXE執(zhí)行文
;*  件,最終運行程序產生結果 (無結果或結果不正確者均不得分)。
;*  調試中若發(fā)現整個程序中存在錯誤之處,請加以修改。

          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         ; 數據區(qū)起始地址
            LEA       SI,NAME0          ; 原始數據文件名
            MOV       CX,N              ; 字節(jié)數
            CALL      LOAD              ; 從 'INPUT.DAT'中讀取數據
;  **** BEGIN ****
           LEA        SI,SOURCE
           LEA        DI,RESULT
           MOV       CX,N
NEXT:      MOV       AL,[SI]
           CMP       AL,'A'
           jb        lower2
           ;JB         ____
           cmp       al,'Z'
           ;CMP       AL, ____
           ja        lower2
           ;J___        LOWER2
           add       al,20h
           ;_________________
LOWER2:    mov       [di],al
           ;MOV       [DI], ____
           inc       si
           ;____________________
           inc       di
           ;INC        ____
           loop      next
           ;____       NEXT
;  ****  END  ****
           LEA        DX,RESULT    ; 結果數據區(qū)首址
           LEA        SI,NAME1     ; 結果文件名
           MOV        CX,N         ; 結果字節(jié)數
           CALL       SAVE         ; 保存結果到文件
           RET
START    ENDP
CODE     ENDS
         END        START

 


input1.dat 內容如下:
62 64 63 45 75 68 40 37 DF 67 AC 6E 8B 65 6C 98 34 59 87 3D

output1.dat 內容應當如下:
62 64 63 65 75 68 40 37 DF 67 AC 6E 8B 65 6C 98
34 79 87 3D

PC上機題之10
以下內容為程序代碼:

;*      請編制程序PROG1.ASM, 其功能是: 內存中存放著20個數字0~9
;*  之間的ASCII字符(包括數字0和9的ASCII字符)或SP字符(20H),請將
;*  數字0~9之間的ASCII字符 (包括數字0和9的ASCII字符)轉換為相應
;*  的八位二進制數, 并將SP字符轉換為$字符(24H)。將按上述方法處
;*  理后得到的20個字節(jié)存入內存中。
;*      例如:
;*      內存中有 20H('SP'),30H('0'),31H('1'),31H('1'),
;*  31H('1'),20H('SP'),32H('2'),…,39H('9')(共20個ASCII字符)
;*      結果為   24H('$'),00H,01H,01H,01H,24H('$'),02H('2'),
;*  …,09H('9') (共20個字節(jié))
;*      部分程序已給出,其中原始數據由過程LOAD從文件INPUT1.DAT
;*  中讀入SOURCE開始的內存單元中。運算結果要求從RESULT開始存放,
;*  由過程SAVE保存到文件OUTPUT1.DAT中。
;*      填空BEGIN和END之間已給出的源程序使其完整 (空白已用橫線
;*  標出,每行空白一般只需一條指令,但采用功能相當的多條指令亦
;*  可),或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功
;*  能。
;*      對程序必須進行匯編, 并與IO.OBJ鏈接產生PROG1.EXE執(zhí)行文
;*  件,最終運行程序產生結果(無結果或結果不正確者均不得分)。調
;*  試中若發(fā)現整個程序中存在錯誤之處,請加以修改。

           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          ; 數據區(qū)起始地址
           LEA        SI,NAME0           ; 原始數據文件名
           MOV        CX,N               ; 字節(jié)數
           CALL       LOAD               ; 從 'INPUT1.DAT'中讀取數據
;  **** BEGIN ****    
           lea        si,source
           ;_______________
           MOV        DI,0
           mov        cx,N
           ;_______________
CHAN:      mov        al,[si]
           ;_________________
           SUB        AL,20H
           JZ         CHANGE
           sub        al,10h
           ;SUB        AL,___
           MOV        RESULT[DI],AL
           inc        di
           inc        si
           ;_____________
           ;_____________
           DEC        CX
           JZ         EXIT
           JMP        CHAN
CHANGE:    MOV        RESULT[DI],24H
           INC        DI
           INC        SI
           DEC        CX
           JZ         EXIT
           jmp        chan
           ;JMP        ____
EXIT:      NOP
;  ****  END  ****
           LEA        DX,RESULT          ; 結果數據區(qū)首址
           LEA        SI,NAME1           ; 結果文件名
           MOV        CX,N               ; 結果字節(jié)數
           CALL       SAVE               ; 保存結果到文件
           RET
START      ENDP
CODE       ENDS
           END        START

 


input1.dat 內容如下:
20 20 30 31 32 20 33 34 35 36 20 20 37 38 39 20 33 32 31 20

output1.dat 內容應當如下:
24 24 00 01 02 24 03 04 05 06 24 24 07 08 09 24
03 02 01 24

文章搜索
版權聲明:如果計算機等級考試網所轉載內容不慎侵犯了您的權益,請與我們聯系800@exam8.com,我們將會及時處理。如轉載本計算機等級考試網內容,請注明出處。