- 相关推荐
2016年全国计算机等级考试三级PC技术上机指导
这种题型是根据考题要求,在BEGIN和END区间自行编制程序,然后进行汇编、连接,并运行程序,最后得到正确结果。下面是一个编制程序的例子,题目要求是:
内存中连续存放着二十个字(WORD),对每个字逻辑左移,使其最高位为1,其中值为零的不变。例如:
内存中有 29C1H(0010100111000001B),0000H,134BH,...
结果为 A704H(1010011100000100B),0000H,9A58H,...
部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。
下面是程序清单,其中BEGIN和END之间的程序段由考生编写。
;PROG1.ASM
EXTRN LOAD:FAR,SAVE:FAR
N EQU 20 ;需输入的字节数
DSEG SEGMENT ;数据段
SOURCE DW N DUP(?) ;存放原始数据
RESULT DW N DUP(0) ;存放运算结果
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 ;原始数据区首址送DX
LEA SI,NAME0 ;输入文件名首址送SI
MOV CX,2*N ;输入字节数送CX
CALL LOAD ;从INPUT1.DAT中读取数据
; **** 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 ; 保存结果到OUTPUT1.DAT
RET
START ENDP
CSEG ENDS
END START
【全国计算机等级考试三级PC技术上机指导】相关文章:
2016年计算机三级PC技术上机考试指导03-18
2016年计算机三级PC技术上机指导12-03
计算机等级三级《pc技术》模拟试题03-19
全国计算机等级考试一级WPS上机考试指导05-06
全国计算机等级考试上机应试技巧201707-22