當前位置:才華齋>計算機>計算機三級>

2016年計算機三級PC技術上機指導

計算機三級 閱讀(2.2W)

  編制程式題

2016年計算機三級PC技術上機指導

這種題型是根據考題要求,在BEGIN和END區間自行編制程式,然後進行彙編、連線,並執行程式,最後得到正確結果。下面是一個編制程式的例子,題目要求是:

記憶體中連續存放著二十個字(WORD),對每個字邏輯左移,使其最高位為1,其中值為零的不變。例如:

記憶體中有 29C1H(0010100111000001B),0000H,134BH,...

結果為 A704H(1010011100000100B),0000H,9A58H,...

部分程式已給出,其中原始資料由過程LOAD從檔案中讀入SOURCE開始的記憶體單元中,運算結果要求從RESULT開始存放,由過程SAVE儲存到檔案中。

  下面是程式清單,其中BEGIN和END之間的`程式段由考生編寫。

;

EXTRN LOAD:FAR,SAVE:FAR

N EQU 20 ;需輸入的位元組數

DSEG SEGMENT ;資料段

SOURCE DW N DUP(?) ;存放原始資料

RESULT DW N DUP(0) ;存放運算結果

NAME0 DB '',0 ;輸入檔名

NAME1 DB '',0 ;輸出檔名

DSEG ENDS

SSEG SEGMENT STACK ;堆疊段

DB 128 DUP (?)

SSEG ENDS

CSEG SEGMENT ;程式碼段

ASSUME CS:CSEG,DS:DSEG,SS:SSEG

START PROC FAR

PUSH DS

XOR AX,AX

PUSH AX

MOV AX,DSEG

MOV DS,AX

LEA DX,SOURCE ;原始資料區首址送DX

LEA SI,NAME0 ;輸入檔名首址送SI

MOV CX,2*N ;輸入位元組數送CX

CALL LOAD ;從中讀取資料

; **** BEGIN ****

LEA SI,SOURCE ;原始資料首地址送SI

MOV DI,OFFSET RESULT ;結果資料首地址送DI

MOV CX,N ;位元組數送CX

NEXT: MOV AX,[SI] ;取一個字資料

CMP AX,0 ;是0嗎?

JE SKIP ;是,跳過這一個字

LOOP1: TEST AX,8000H ;否,最高位是1嗎?

JNE SKIP ;是,跳過這一個字

SHL AX,1 ;否,左移一位

JMP LOOP1 ;繼續測試最高位是否為1

SKIP: MOV [DI],AX ;儲存變換結果於RESULT中

ADD SI,2 ;修改原始資料區指標

ADD DI,2 ;修改結果資料區指標

LOOP NEXT ;繼續檢查下一個字資料

; **** END ****

LEA DX,RESULT ; 結果資料區首址送DX

LEA SI,NAME1 ; 結果檔名首址送SI

MOV CX,N*2 ; 結果位元組數送CX

CALL SAVE ; 儲存結果到

RET

START ENDP

CSEG ENDS

END START