就业数据资源平台
当前位置:首页 > PC技术
全国计算机等级考试三级PC技术上机指导(7)

完形填充


 


这种题型是在BEGIN和END区间已经编写了部分程序,但其中有些指令不完整,或者缺少某些指令,考生应根据考题要求,在程序的空白处填写合适的内容,使程序能正常汇编、连接,并获得正确的运行结果。当然,考生也不一定受提供程序的限制,可以修改或删除程序中的指令,甚至改变BEGIN和END中程序的结构,只要使程序运行后能够得到考题所提出的功能要求即可。


下面是一个完形填空的程序例子,题目要求是:


内存中有一个由十六个字(WORD)组成的数组(SOURCE)和一个字变量L。试将L作为逻辑尺对数组SOURCE进行下列处理:


如L的第i位为0, 则数组的第i个数不变;


如L的第i位为1, 则数组的第i个数按位取反。


字L的位序从低到高依次为0至15,数组下标依次从0到15。


例如: L=0009H, 数组为 139CH,89C6H,5437H,8819H,...


                变换为 EC63H,89C6H,5437H,77E6H,...


部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入(L在前,SOURCE在后)。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。


在BEGIN和END之间已给出的源程序中填充,填充的地方已经用横线标出,每处一般只需填写指令的一部分或一条完整的指令,但功能相当的多条指令亦可。此外,考生也可以修改或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。


;PROG1.ASM


           EXTRN      LOAD:FAR,SAVE:FAR


N          EQU        16


DSEG       SEGMENT


L          DW         ?


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,L              ;数据区起始地址


           LEA        SI,NAME0          ;原始数据文件名


           MOV        CX,2*(N+1)        ;字节数


           CALL       LOAD               ;从INPUT1.DAT中读取数据


;    **** BEGIN ****


           LEA        SI,SOURCE


           _________________             ;填写指令LEA DI,RESULT


           MOV        CX,N


           MOV        DX,____           ;填写源操作数1


L0:        MOV        AX,[SI]


           ____       L,DX              ;填写指令助记符TEST


           ____       STORE              ;填写指令助记符JZ


           NOT        AX


STORE:     MOV        [DI],AX


           ADD        DI,2


           ADD        SI,2


           ________________              ;填写指令SHL DX,1


           LOOP       L0


;   ****  END  ****


           LEA        DX,RESULT         ;结果数据区首址


           LEA        SI,NAME1          ;结果文件名


           MOV        CX,2*N            ;结果字节数


           CALL       SAVE               ;保存结果到OUTPUT1.DAT


           RET


START      ENDP


CSEG       ENDS


           END        START

就业数据资源平台