收藏 分享(赏)

三级PC技术上机真题汇集.doc

上传人:dzzj200808 文档编号:2686423 上传时间:2018-09-25 格式:DOC 页数:23 大小:288KB
下载 相关 举报
三级PC技术上机真题汇集.doc_第1页
第1页 / 共23页
三级PC技术上机真题汇集.doc_第2页
第2页 / 共23页
三级PC技术上机真题汇集.doc_第3页
第3页 / 共23页
三级PC技术上机真题汇集.doc_第4页
第4页 / 共23页
三级PC技术上机真题汇集.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

1、计算机三级(PC 技术)机试 67背景色: 字体大小: 12px行高: 120%隐藏所有题目 折叠过长题目 计算机三级 PC 技术(机试)1. 请编制程序,其功能是:对一个由可打印 ASCII 字符(ASCII 值为 20H7FH)组成的字符串可采用下列方法进行压缩:从串首开始向后扫描,如某字符单独出现则该字符不变,如某字符连续出现 n 次,则该字符用 ESC(1BH),n,原字符三个字节来代替(假定 n 不超过 255)。设内存中从 SOURCE 开始有一用上述方法压缩的字符串,其以 OOH 结束,解压后长度不超过 100。试编程对其解压缩,结果存入 RESULT 开始的内存单元。例如:原串

2、: 41H,1BH,06H,43H,61H,00H解压缩后:41H,43H,43H,43H,43H,43H,43H,61H,OOH(“ACCCCCCa“)部分程序已给出,原始数据由过程 LOAD 从文件 INPUT.DAT 中读入 SOURCE 开始的内存单元中,结果要求从 RESULT 开始存放,由过程 SAVE 保存到文件 OUTPUT.DAT中。请填空 BEGIN 和 END 之间已给出的源程序使其完整,空白己用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可,或删除 BEGIN 和 END 之间原有的代码并自行编写程序片段来完成所要求的功能。对程序必须进行汇编,并与 I

3、O.OBJ 链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。【试题程序】EXTRN LOAD:FAR, SAVE:FARN EQU 100ESC_CODE EQU 27STAC SEGMENT STACKDB 128 DUP(?)STAC ENDS DATA SEGMENT SOURCE DB N DUP(?)RESULT DB N DUP(0)NAME0 DB INPUT.DAT,0NAME1 DB OUTPUT.DAT,0DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA, SS:STACSTART PROC

4、FARPUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS, AXMOV ES, AX ;置附加段寄存器LEA DX, SOURCE ;数据区起始地址LEA SI, NAME0 ;原始数据文件名起始地址MOV CX, N ;字节CALL LOAD ;从“INPUT.DAT“ 中读取数据* BEGIN *LEA SI, SOURCELEA DI, RESULTCLDLO: LODSBCMP AL, 0JE QUITCMP AL, ESC_CODEJ (1) EXPAND(2) JMP L0EXPAND: (3) ;解压缩XOR CX, CX(4) (5) (6) (7

5、) JMP LOQUIT:STOSB ;STORE THE 00H* END *LEA DX, RESULT ;结果数据区首址LEA SI, NAME1 ;结果文件名起始地址MOV CX,N ;字节数CALL SAVE ;保存结果到“output.dat“ 文件RETSTART ENDPCODE ENDSEND START_ + - = 参考答案 (1 分) (1)E (2)STOSB (3)CID (4)MOV CL,SI(5)MOV AL,SI+1 (6)REP STOSB (7)ADD SI,2 您的答案 详细解答 本题是一道数据插入题,其中本题采用的算法是首先从原始数据区读取一个字节,

6、判断是否为结束标志,若是结束标志,则直接送至结果数据区并结束处理,若不是结束标志则再次判断是否是压缩标志,是则读取下一个字节,然后将其值送 CL,再读取下一个字节到 AL,以 CL 为计数器重复将刚才读取的数据写入结果数据区,然后继续读取下一个数据开始进行判断,直到发现结束标志为止。反之则直接将该字符送到结果数据区。程序中使用串处理指令 LODSB 来完成读取数据和修改原始数据区偏移地址的目的:使用串处理指令 STOSB 来完成写入数据和修改结果数据区偏移地址的目的;使用CL 做计数器和指令 REP 完成循环处理计算机三级(PC 技术)机试 66背景色: 字体大小: 12px行高: 120%隐

7、藏所有题目 折叠过长题目 计算机三级 PC 技术(机试)1. 编制一个程序,其实现的功能是:对一个数字采集系统采集的 50 个字节无符号数按算术平均数字滤波方法进行数字滤波,每 5 个数求一个平均数(含余数,其中低字节为商,高字节为余数),将 10 个平均值依次存入 RESULT 指示的内存区域。例如:原始采集数据:05H,07H,12H,08H,10H,09H,2EH,56H,48H,85H,65H,36H,45H则结果为: 0A04H,4003H部分程序已经给出,其中原始数据由过程 LOAD 从文件 INPUTDAT 中读入以 SOURCE 开始的内存单元中。运算结果要求从 RESULT

8、开始的内存单元存放,由过程SAVE 保存到文件 OUTPUT.DAT 中。请填空 BEGIN 和 END 之间已给出的源程序使其完整,空白已经用横线标出,每行空白一般只需要一条指令,但采用功能相当的多条指令也行,考生也可以删除BEGIN 和 END 之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与 IO.OBJ 链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。【试题程序】EXTRN LOAD:FAR,SAVE:FARN EQU 10DSEG SEGMENT SOURCE DB 6*N DUP(?)RESULT DW N DUP(0)N

9、AME0 DB INPUT.DAT,0NAME1 DB OUTPUT.DAT,0DSEG ENDS SSEG SEGMENT STACKDB 256 DUP(?)SSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEG,SS:SSEGSTART PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX,DSEGMOV DS,AXLEA DX,SOURCELEA SI,NAME0MOV CX,6*NCALL LOAD;* BEGIN *LEA SI,SOURCELEA DI,RESULTMOV DX,NAGAIN: SUB AX,AX(1) MOV

10、 CX,6AGAIN1: MOV AX,SIADD BX,ALINC SI(2) (3) MOV CL,6(4) (5) ADD DI,2DEC DXJNZ AGAIN;* END *LEA DX,RESULT LEA SI,NAME1MOV CX,N*2CALL SAVERETSTART ENDPCSEG ENDSEND START_ + - = 参考答案 (1 分) (1)SUB BX,BX 或 XOR BX,BX 或 MOV BX,0 (2)LOOP AGAIN1(3)MOV AX,BX (4)DIV CL (5)MOVDI,AX 您的答案 详细解答 如果将数据中 6 个数分为一组的话,

11、则对每一组的操作是一样的,即求这一组数的平均数,因此只需要实现一组的操作,其他的用循环程序来实现。将指针初始化以后,将循环的参数送 DX 寄存器,用来控制循环。进入循环以后,因为每次循环都要使用某些寄存器,并且每次的内容都不一样,所以要对部分寄存器进行清零操作。从后面的程序可以看出,BX 寄存器是用来进行求和操作的,所以在每次进行求和操作之前应该对其进行清零操作,否则会把前一次的结果累加到后一次中。因此,需要对 BX 寄存器进行清零,这就是第一个空白处应该填的内容。通常进行清零的操作有 SUB BX,BX 或 XOR BX,BX 或 MOV BX,0。完成清零工作以后,便对数据进行处理。要求一

12、组数据的平均数,首先要进行求和操作,从程序中可以看出求和操作用循环 AGAIN1 来实现,然而程序中没有控制AGAIN1 循环结束的语句(即判断什么情况继续循环,什么情况停止循环向下执行的语句),所以需要在空白处填写。从第二个空白以上的程序来看,已经完成了加法运算,只需要控制其循环结束即可,所以要在第二个空白处填控制循环语句。在前面的程序中,已经将循环次数送到 CX 中,因此用 LOOP AGAIN1 即可控制求和运算的循环。求和结束以后,就要对数据进行除法操作。由于程序中除数为 6,所以被除数放到 AX 中即可。前面的求和操作结束时,所得结果最后存放的寄存器为 BX,因此需要将数据从 BX

13、传送到 AX 中。传送结束以后,就可以进行除法操作。除完以后,将结果存入 RESULT 中,所以第三个、第四个和第五个空加上已经有的语句需要完成上述操作。在第三个空中,将被除数传送到 BX,因此指令为 MOV AX,BX。MOV CL,6,将除数传送到 CL 寄存器中,接下来进行除法操作,即第四个空要填写的内容为 DIV CL。执行完除法操作以后,商和余数分别位于 AL 和 AH 寄存器中,与题目要求的商在低字节,余数在高字节的要求刚好吻合,因此直接送入 RESULT 中即可,这样便由最后一个空来实现,而指针 DI 已经指向 RESULT,所以应填 MOV DI,AX。计算机三级(PC 技术)

14、机试 65背景色: 字体大小: 12px行高: 120%隐藏所有题目 折叠过长题目 计算机三级 PC 技术(机试)1. 编制一个程序,实现如下功能:将内存中连续存放的 10 个八位二进制无符号数按照从大到小的顺序排列。例如:内存中有:3EH,0FEH,5DH(假设后面的 7 个数都小于 3EH)结果为: 0FEH,5DH,3EH(后面跟 7 个字,按照从大到小的顺序排列)。部分程序已经给出,其中原始数据由过程 LOAD 从文件 INPUTDAT 中读入以 SOURCE 开始的内存单元中。运算结果要求从 RESULT 开始的内存单元存放,由过程SAVE 保存到文件 OUTPUT.DAT 中。请填

15、空 BEGIN 和 END 之间已给出的源程序使其完整,空白已经用横线标出,每行空白一般只需要一条指令,但采用功能相当的多条指令也行,考生也可以删除BEGIN 和 END 之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与 IOOBJ 链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。【试题程序】EXTRN LOAD:FAR,SAVE:FARN EQU 10SSEG SEGMENT STACKDB 256 DUP (?)SSEG ENDSDSEG SEGMENTSOURCE DB N DUP (?)RESULT DB N DUP (0)N

16、AME0 DB INPUT.DAT,0NAME1 DB OUTPUT.DAT,0DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG,SS:SSEGSTART PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX,DSEGMOV DS,AXLEA DX, SOURCELEA SI,NAME0MOV CX,NCALL LOAD;* BEGIN *MOV SI,OFFSET SOURCEMOV DI,OFFSET RESULTMOV CX,NAGAIN0: MOV AX, SIMOV DI,AXADD SI, (1) (2)LOOP AG

17、AIN0CLDMOV BX,N-1AGAIN1: MOV SI,OFFSET RESULTMOV CX,BXAGAIN2: LODSBCMP SI,AX(3) XCHG SI,AX(4) NEXT: LOOP AGAIN2(5) JNZ AGAIN1;* END *LEA DX,RESULTLEA SI,NAME1MOV CX,NCALL SAVERETSTART ENDPCSEG ENDSEND START_ + - = 参考答案 (1 分) (1)1 (2)ADD DI,1 (3)JBE NEXT(4)MOVSI-1,AX (5)DEC BX 您的答案 详细解答 本题是一道降序排列题,程序

18、首先是将以 SOURCE 开始的内存单元中的数据传送到 RESULT 中,利用循环 AGAIN0 实现。在循环中,需要不断地改变指针,但由于题中的变量为字节型,因此指针的改变为 1,即第一个空白处应填 1。指向 SOURCE 的指针增加 1 的时候,指向 RESULT 的指针也应该增加 1,所以第二个空白处应填 ADD DI,1。接下来的程序便是对数据进行从大到小排列,CLD 使指针向着增加的方向移动。在对两个数据进行比较后,因为要求从大到小排列,所以小的数据要往后移,若后面的数据较小,则不需要交换,直接进行下一次比较,所以第三个空白处应填 JBE NEXT。若后面的数据大,则在进行数据交换以

19、后需要将大的数据装入前面的存储单元,因此第四个空白处应填 MOVSI-1,AX。每一轮比较后,参加比较的数据的较小者都被放到了最后,这样只需要 N-1 轮比较就可以得到正确的排序。排序轮次的控制由 BX 寄存器来实现,因此最后一个空白处应填 DEC BX。计算机三级(PC 技术)机试 64背景色: 字体大小: 12px行高: 120%隐藏所有题目 折叠过长题目 计算机三级 PC 技术(机试)1. 请编制程序,其功能是;内存中共有 30 个字节型数据,找出其中的两个 ASCII 字符串并进行校验。欲寻找的 ASCII 字符串由 13 个字符组成:#(23H),7 个 ASCII字符,*(2AH)

20、,2 个 ASCII 字符,回车符(0DH),换行符(0AH)。校验方法为:对字符#及字符,之间的 7 个 ASCII 字符进行异或操作,若异或操作结果的 ASCII 字符表示(异或操作结果高 4 位的 ASCII 字符表示在前,低 4 位的ASCII 字符表示在后)与原字符串中字符,之后的两个 ASCII 字符相同,则将原字符串原样保存:反之,则将原字符串中的所有字符(共 13 个)均用字符!(21H)代替。例如:内存中有:33H,35H,23H(#,第一个字符串开始),46H,41H,30H,2EH,34H,3DH,31H,2AH(#),32H,31H,ODH,OAH,46H,23H(#,

21、第二个字符串开始),46H,41H,30H,2EH,34H,46H,41H,30H,46H,41H,30H,2EH,34H,3DH,30H,2AH(*),32H,31H,ODH,OAH,55H结果为:23H,46H,41H,30H,2EH,34H,3DH,31H,2AH(*),32H,31H(校验正确,该字符串原样保持),ODH,OAH,21H,21H,21H,21H,21H,21H,21H,21H,21H,21H,21H,21H,21H(校验错,整个字符串用字符“!”代替)部分程序已给出,其中原始数据由过程 LOAD 从文件 INPUTDAT 中读入 SOURCE 开始的内存单元中。运算结果

22、要求从 RESULT 开始存放,由过程 SAVE 保存到文件OUTPUTDAT 中。请填空 BEGIN 和 END 之间已给出的源程序使其完整,空白已用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可,或删除 BEGIN 和 END 之间原有的代码并自行编程来完成所要求的功能。对程序必须进行汇编,并与 IO.OBJ 链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。【试题程序】EXTRN LOAD:FAR, SAVE:FARN EQU 26STAC SEGMENT STACKDB 128 DUP (?)STAC ENDS DATA SEG

23、MENT SOURCE DB N+4 DUP(?)RESULT DB N DUP(0)HH DB 2 DUP(0)NAME0 DB INPUT.DAT,0NAME1 DB OUTPUT.DAT,0DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACSTART PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXLEA DX, SOURCE ; 数据区起始地址LEA SI,NAME0 ; 原始数据文件名MOV CX, N+4 ; 字节数CALL LOAD ; 从INPUT. DAT 中读取

24、数据;* BEGIN *MOV SI,0MOV DI,0MOV BX,2 ; 两个 ASCII 字符串REPEAT: MOV AH,0SEARCH: MOV AL,SOURCESIINC SICMP AL,#(1) SEARCHMOV RESULTDI,ALINC DISEARCH1: MOV AL,SOURCESIINC SICMP AL, (2) JE ASCIIMOV RESULTDI,ALINC DIXOR AH,ALJMP (3) ASCII: MOV RESULTDI,ALINC DIPUSH DIMOV DI,0MOV DH,2MOV DL,AH ; 异或结果暂存在 DLMOV

25、CL, 4 ; 先将结果高 4 位转换成 ASDCII 字符SHR AH, CL ; 本行开始的 4 行语句将一个十六进制数转换; 为 ASCII 码CHANGE: CMP AH,10JL ADD_0ADD AH, A-0-10ADD_O: ADD AH, 0MOV HHDI,AHINC DIDEC DHJZ EXTMOV AH, DL ; 再将异或结果低 4 位转换成 ASDCII 字符AND AH, 0FHJMP CHANGEEXT: POP DIMOV AL,SOURCESIMOV RESULTDI,ALINC SIINC DIMOV AH,SOURCESIMOV RESULTDI,AH

26、INC SIINC DIMOV DL,HHMOV DH,HH+1CMP AX,DX(4) ERRMOV AL, 0DH ; 校验正确MOV RESULTDI,ALINC DIMOV AL,0AHMOV RESULTDI,ALINC DIJMP LPERR: SUB DI, 11 ;校验正确MOV AL,!MOV CX, (5) COVER: MOV RESULTDI,ALINC DILOOP COVERLP: (6) JZ EXITJMP REPEATEXIT: NOP;* END *LEA DX, RE*SULT ; 结果数据区首址LEA SI, NAME1 ; 结果文件名MOV CX, N

27、 ;结果字节数CALL SAVE ; 保存结果到文件RETSTART ENDPCODE ENDSEND START_ + - = 参考答案 (1 分) JNZ (2)* (3)SEARCH1(4)JNZ (5)13 (6)DEC BX 您的答案 详细解答 本题是一道字符转换题,解决此类题型的关键是确定转换范围和条件。其中转换范围在题目中已给出为 30 个字符,同时还给出了需要查找的两个字符串。接下来,首先计算指定范围内字符串中字符的异或操作结果,并将结果转换为对应的十六进制 ASCII 码字符,然后再与字符串结束符后面的两个字符进行比较,若相同,则直接将原来的字符串存入结果数据区,反之则将字符

28、串中全部的字符替换为一个固定字符,存入结果数据区中。此题目中涉及到的逻辑判断比较多,如果有一个地方出现错误,就很容易造成整个题目计算结果的错误,因此需要非常的认真和仔细。计算机三级(PC 技术)机试 63背景色: 字体大小: 12px行高: 120%隐藏所有题目 折叠过长题目 计算机三级 PC 技术(机试)1. 请编制程序,其功能是:从第 0 行第 0 列开始,依次取出 N 阶矩阵中对角线上的元素(字节型)并计算累加和(字型),然后将其存放在指定的内存区中。例如:内存中有:01H,01H,01H,02H,02H,02H,03ff,03H,03H结果为: 01H,02H,03H,06H,00H部

29、分程序已给出,其中原始数据由过程 LOAD 从文件 INPUTDAT 中读入 SOURCE 开始的内存单元中,转换结果要求从 RESULT 开始存放,由过程 SAVE 保存到文件OUTPUTDAT 中。请填空 BEGIN 和 END 之间已经给出的一段源程序使其完整,需填空处已经用横线标出,每个空白一般只需要填一条指令或指令的一部分(指令助记符或操作数),也可以填入功能相当的多条指令,或删去 BEGIN 和 END 之间原有的代码并自行编程来完成所要求的功能。对程序必须进行汇编,并与 IO.OBJ 链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。【试题

30、程序】EXTRN LOAD:FAR, SAVE:FARN EQU 10DSEG SEGMENT SOURCE DB N*10 DUP(?)RESULT DB (N+2) DUP(0)NAME0 DB INPUT.DAT,0NAME1 DB OUTPUT.DAT,0DSEG ENDS SSEG SEGMENT STACKDB 256 DUP (?)SSEG ENDSCSEG SEGMENTASSUME CS:CSEG, SS:SSEG, DS:DSEGSTART PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX,DSEGMOV DS,AXMOV ES,AXLEA DX,

31、 SOURCELEA SI,NAME0MOV CX,N*10CALL LOAD* BEGIN *LEA DI,RESULTMOV CX,0MOV DH,0 ;行MOV DL,0 ;行NEXT: MOV AL,NMUL (1) MOV BX,AXMOV AL,DL(2) MOV SI, AX ;列号送 SIMOV AL, (3) BX+SIMOV DI,ALADD CL,AL(4) INC DIINC DHINC DLCMP DL, (5) JNE NEXTMOV DI,CX; * END *LEA DX,RESULTLEA SI,NAME1MOV CX,N+2CALL SAVERET STAR

32、T ENDP CSEG ENDS END START_ + - = 参考答案 (1 分) (1)DH (2)MOV AH,0(3)SOURCE (4)ADC CH,0 (5)N 您的答案 详细解答 本题是一道矩阵计算题,解决此类题型除了要注意数据范围、类型等方面的问题,还要对计算方法进行比较分析。本题的数据范围在题目中并没有明确给出,但从程序的数据段定义中可以看出,N 的取值为 10,即本题的程序要求计算的是 10 阶矩阵,1010100 个字节数据,共占 100 个存储单元。而需要计算的原始数据为字节数,同时累加运算结果以字的形式连续存放在对角线数据之后。题目要求首先依次取出矩阵对角线上的元

33、素存放到结果数据区,并累加求和这些数据的和,将运算结果以字数据的形式保存到对角线元素的后面,由于对角线上的元素有一个特点就是行和列的序号是相同的,因此寻找对角线上的元素就比较容易了。 计算机三级(PC 技术)机试 62背景色: 字体大小: 12px行高: 120%隐藏所有题目 折叠过长题目 计算机三级 PC 技术(机试)1. 请编制程序,其功能是:内存中连续存放着 20 个 ASC字符,如果是小写字母 az 之间的字符(包括字母 a 和 z),请把它们转换成相应的大写字母所对应的ASC字符;若为其他字符,不作转换。例如:内存中有:61H(a),62H(b),31H(1),41H(A),42H(

34、B)结果为: 41H(A),42H(B),31H,41H,42H部分程序已经给出,其中原始数据由过程 LOAD 从文件 INPUT1.DAT 中读入 SOURCE 开始的内存单元中,运算结果要求从 RESULT 开始存放,由过程 SAVE 保存到文件OUTPUT1.DAT 中。请填空 BEGIN 和 END 之间已给出的源程序使其完整,空白处已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可,或删去 BEGIN 和 END 之间原有的代码并自行编程来完成所要求的功能。对程序必须进行汇编,并与 IO.OBJ 连接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序存在错误

35、之处,请加以修改。【试题程序】EXTRN LOAD:FAR,SAVE:FARN EQU 20STAC SEGMENT STACKDB 128 DUP (?)STAC ENDSDATA SEGMENTSOURCE DB N DUP(?)RESULT DB N DUP(0)NAME0 DB INPUT1.DAT,0NAME1 DB OUTPUT1.DAT,0DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACSTART PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXLEA DX,SOURCE

36、; 数据区起始地址LEA SI,NAME0 ; 原始数据文件名MOV CX,N ; 字节数CALL LOAD ; 从“INPUT.DAT“中读取数据; * BEGIN *LEA SI, SOURCELEA DI, RESULTMOV CX, NNEXT: MOV AL,SICMP AL,aJB (1) CMP AL, (2) J (3) UPPER2SUB AL, (4) UPPER2: HOV DI, (5) INC (6) INC (7) (8) NEXT; * END *LEA DX,RESULT ; 结果数据区首址LEA SI,NAME1 ; 结果文件名MOV CX,N ; 结果字节数

37、CALL SAVE ; 保存结果到文件RETSTART ENDPCODE ENDSEND START_ + - = 参考答案 (1 分) (1) UPPER2 (2) z (3) JA (4) 20H(5) AL (6) SI (7) DI (8) LOOP 您的答案 详细解答 本题主要考查的是将小写字母改写成大写字母的实现方法。题目中给出的程序是利用循环依次对每个字符进行判断是否是小写字母,若是则减去 32 即成为该字母相对应的大写字母。 计算机三级(PC 技术)机试 61背景色: 字体大小: 12px行高: 120%隐藏所有题目 折叠过长题目 计算机三级 PC 技术(机试)1. 请编制程序

38、,其功能是:内存中连续存放着 20 个十进制数字的 ASC字符,把它们转换成 10 个字节的压缩型(组合型) BCD 码。例如:内存中有:31H(1),32H(2),33H(3),34H(4)(共 20 个字节)结果为: 21H,43H,(共 10 个字节)部分程序已经给出,其中原始数据由过程 LOAD 从文件 INPUT1.DAT 中读入 SOURCE 开始的内存单元中,运算结果要求从 RESULT 开始存放,由过程 SAVE 保存到文件OUTPUT1.DAT 中。请填空 BEGIN 和 END 之间已给出的源程序使其完整,空白处已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指

39、令亦可,或删去 BEGIN 和 END 之间原有的代码并自行编程来完成所要求的功能。对程序必须进行汇编,并与 IO.OBJ 连接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序存在错误之处,请加以修改。【试题程序】EXTRN LOAD:FAR, SAVE:FARN EQU 10STAC SEGMENT STACKDB 128 DUP (?)STAC ENDSDATA SEGMENTSOURCE DB N*2 DUP(?)RESULT DB N DUP(0)NAME0 DB INPUT1.DAT,0NAME1 DB OUTPUT1.DAT,0DATA ENDSCODE SEGMENTA

40、SSUME CS: CODE, DS: DATA, SS: STACSTART PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXLEA DX,SOURCE ; 数据区起始地址LEA SI,NAME0 ; 原始数据文件名MOV CX, N*2 ; 字节数CALL LOAD ; 从“INPUT1.DAT“中读取数据; * BEGIN *LEA SI,SOURCELEA DI,RESULTMOV CX,NNEXT: MOV (1) ,SI(2) AND AL, (3) MOV BL,AL(4) ADD SI,2PUSH (5) MOV CL, (

41、6) SAL AL,CLPOP (7) ADD AL, (8) MOV (9) ,AL(10) LOOP NEXT; * END *LEA DX,RESULT ; 结果数据区首址LEA SI,NAME1 ; 结果文件名CALL SAVE ; 保存结果到文件RETSTART ENDPCODE ENDSEND START_ + - = 参考答案 (1 分) AX (2) MOV BH,AH (3) 0FH (4) MOV AL (5) CX(6) 4 (7) CX (8) BL (9) DI (10) INC DI 您的答案 详细解答 本题主要考查怎样将数字的 ASC字符进行压缩成 BCD 码。题

42、目中所提供的程序是每次读取两个数字字符至 AX,分别对这两个字符进行处理,AL 取低 4位并存入 BL 中,AH 左移 4 位,与此同时正好把高 4 位去掉并存入 AL 中,最后将 AL 和 BL 加在一起并存,放到结果数据区。 计算机三级(PC 技术)机试 59背景色: 字体大小: 12px行高: 120%隐藏所有题目 折叠过长题目 计算机三级 PC 技术(机试)1. 请编制程序,其功能是:内存中连续存放的 20 个八位无符号数是一个自动抄表示抄录的 20 个用户某月的用水量(立方米),为了控制用水量,水费计算公式如下(X表示用水量;Y 表示水费,单位为分):a) Y=X*70 X=10b) Y=10*70+(X-10)*120 X10例如:用水量(X):04H,0FH,18H水费(Y): 0118H,0514H,094CH试计算出这 20 个用户应缴纳的水费,结果用字(word)表示。部分程序已给出原始数据由过程 LOAD 从文件 INPUT.DAT 中读入 SOURCE 开始的内存单元中,结果要求从 RESULT 开始存放,由过程 SAVE 保存到文件 OUTPUT.DAT 中。请填空 BEGIN 和 END 之间已给出的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报