就业数据资源平台
当前位置:首页 > PC技术
2013年计算机等级考试三级PC技术上机考试内容2

考题类型


1.编制程序


这种题型是根据考题要求,在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

就业数据资源平台