2016年計(jì)算機(jī)三級(jí)PC技術(shù)上機(jī)指導(dǎo)
編制程序題
這種題型是根據(jù)考題要求,在BEGIN和END區(qū)間自行編制程序,然后進(jìn)行匯編、連接,并運(yùn)行程序,最后得到正確結(jié)果。下面是一個(gè)編制程序的例子,題目要求是:
內(nèi)存中連續(xù)存放著二十個(gè)字(WORD),對(duì)每個(gè)字邏輯左移,使其最高位為1,其中值為零的不變。例如:
內(nèi)存中有 29C1H(0010100111000001B),0000H,134BH,...
結(jié)果為 A704H(1010011100000100B),0000H,9A58H,...
部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT中讀入SOURCE開始的內(nèi)存單元中,運(yùn)算結(jié)果要求從RESULT開始存放,由過程SAVE保存到文件OUTPUT1.DAT中。
下面是程序清單,其中BEGIN和END之間的程序段由考生編寫。
;PROG1.ASM
EXTRN LOAD:FAR,SAVE:FAR
N EQU 20 ;需輸入的字節(jié)數(shù)
DSEG SEGMENT ;數(shù)據(jù)段
SOURCE DW N DUP(?) ;存放原始數(shù)據(jù)
RESULT DW N DUP(0) ;存放運(yùn)算結(jié)果
NAME0 DB 'INPUT1.DAT',0 ;輸入文件名
NAME1 DB 'OUTPUT1.DAT',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 ;原始數(shù)據(jù)區(qū)首址送DX
LEA SI,NAME0 ;輸入文件名首址送SI
MOV CX,2*N ;輸入字節(jié)數(shù)送CX
CALL LOAD ;從INPUT1.DAT中讀取數(shù)據(jù)
; **** BEGIN ****
LEA SI,SOURCE ;原始數(shù)據(jù)首地址送SI
MOV DI,OFFSET RESULT ;結(jié)果數(shù)據(jù)首地址送DI
MOV CX,N ;字節(jié)數(shù)送CX
NEXT: MOV AX,[SI] ;取一個(gè)字?jǐn)?shù)據(jù)
CMP AX,0 ;是0嗎?
JE SKIP ;是,跳過這一個(gè)字
LOOP1: TEST AX,8000H ;否,最高位是1嗎?
JNE SKIP ;是,跳過這一個(gè)字
SHL AX,1 ;否,左移一位
JMP LOOP1 ;繼續(xù)測(cè)試最高位是否為1
SKIP: MOV [DI],AX ;保存變換結(jié)果于RESULT中
ADD SI,2 ;修改原始數(shù)據(jù)區(qū)指針
ADD DI,2 ;修改結(jié)果數(shù)據(jù)區(qū)指針
LOOP NEXT ;繼續(xù)檢查下一個(gè)字?jǐn)?shù)據(jù)
; **** END ****
LEA DX,RESULT ; 結(jié)果數(shù)據(jù)區(qū)首址送DX
LEA SI,NAME1 ; 結(jié)果文件名首址送SI
MOV CX,N*2 ; 結(jié)果字節(jié)數(shù)送CX
CALL SAVE ; 保存結(jié)果到OUTPUT1.DAT
RET
START ENDP
CSEG ENDS
END START
【計(jì)算機(jī)三級(jí)PC技術(shù)上機(jī)指導(dǎo)】相關(guān)文章:
2016年計(jì)算機(jī)三級(jí)PC技術(shù)上機(jī)考試指導(dǎo)03-18
2016年全國(guó)計(jì)算機(jī)等級(jí)考試三級(jí)PC技術(shù)上機(jī)指導(dǎo)03-22
計(jì)算機(jī)等級(jí)三級(jí)《pc技術(shù)》模擬試題03-19
計(jì)算機(jī)三級(jí)PC技術(shù)模擬試題及答案07-22
計(jì)算機(jī)三級(jí)PC技術(shù)考前沖刺題及答案03-20
計(jì)算機(jī)三級(jí)《PC技術(shù)》考試要點(diǎn):輸入設(shè)備05-24
計(jì)算機(jī)三級(jí)上機(jī)試題03-19