收藏 分销(赏)

三级PC上机南开100题.doc

上传人:xrp****65 文档编号:7031672 上传时间:2024-12-25 格式:DOC 页数:117 大小:1,002.05KB
下载 相关 举报
三级PC上机南开100题.doc_第1页
第1页 / 共117页
三级PC上机南开100题.doc_第2页
第2页 / 共117页
点击查看更多>>
资源描述
三级PC南开100题 第一题: 一、请编制程序,其功能是:将内存中由SOURCE指示的40个字节有符号数组成的数组分成正数和负数两个数组,并求这两个数组的数据个数,结果存放在RESULT指示的内存区域,存放形式为正数个数在前,其后跟正数数组元素,然后是负数个数及负数数组元素。 例如: 内存中有 1EH,91H,74H,91H,42H,30H,81H,F3H,18H,25H 结果为 06H,1EH,74H,42H,30H,18H,25H,04H,91H,91H,81H,F3H 部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。   填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令, 但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。 对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处, 请加以修改。 试题程序:   EXTRN LOAD:FAR,SAVE:FAR N EQU 40 STAC SEGMENT STACK DB 128 DUP(?) STAC ENDS DATA SEGMENT SOURCE DB N DUP(0) RESULT DB N+2 DUP(0) NAME0 DB 'INPUT1.DAT',0 NAME1 DB 'OUTPUT1.DAT',0 NDATA DB N DUP(0) PDATA DB N DUP(0) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STAC START PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV ES,AX ;置附加段寄存器 LEA DX,SOURCE ;数据区起始地址 LEA SI,NAME0 ;原始数据文件名 MOV CX,N ;字节数 CALL LOAD ;从'INPUT1.DAT'中读取数据 ;****BEGIN**** LEA SI,SOURCE MOV DI,OFFSET PDATA ;PDATA为正数数组存放缓冲区首址 MOV BX,OFFSET NDATA ;NDATA为负数数组存放缓冲区首址 XOR DX,DX MOV CX,N CLD MAIN1: LODSB TEST AL,_______________ JZ MAIN2 INC DH ;- MOV [BX],AL INC BX _______________ MAIN2: INC DL MOV [DI],AL ;+ INC DI MAIN3: _______ MAIN1 LEA SI,PDATA LEA DI,RESULT MOV [DI],DL INC DI XOR CX,CX MOV CL,DL MAIN4: MOV AL,_______________ MOV [DI],AL INC DI INC SI LOOP _______________ MOV [DI],DH INC DI XOR CX,CX MOV CL,DH MOV BX,OFFSET NDATA MAIN5: MOV AL,[BX] MOV [DI],AL INC DI _______________ LOOP MAIN5 ;****END**** LEA DX,RESULT ;结果数据区首址 LEA SI,NAME1 ;结果文件名 MOV CX,N+2 ;字节数 CALL SAVE ;保存结果到文件 RET START ENDP CODE ENDS END START     第二题: 一、请编制程序,其功能是:内存中连续存放着10个无符号8位格雷码表示的数,现将此十个数转换成十个8位二进制数,结果存入内存,其转换方法为二进制数的最高位D7与格雷码的最高位G7相同,二进制数的其余七位DK(k=6,…,0)分别为格雷码的位GK(k=6,…,0)与二进制数的位DK+1(k=6,…,0)异或的结果。 例如: 内存中有 00H,03H,2BH,67H,0CH,15H,54H,02H,D8H,C7H 结果为 00H,02H,32H,45H,08H,19H,67H,03H,90H,85H 部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。   填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每行空白一般只需一条指令, 但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。 对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处, 请加以修改。 试题程序:   EXTRN LOAD:FAR,SAVE:FAR N EQU 10 STAC SEGMENT STACK DB 128 DUP(?) STAC ENDS DATA SEGMENT SOURCE DB N DUP(?) ;顺序存放10个字节数 RESULT DB N DUP(0) ;存放结果 NAME0 DB 'INPUT1.DAT',0 NAME1 DB 'OUTPUT1.DAT',0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STAC START PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX LEA DX,SOURCE ;数据区起始地址 LEA SI,NAME0 ;原始数据文件名 MOV CX,N ;字节数 CALL LOAD ;从'INPUT1.DAT'中读取数据 ;****BEGIN**** LEA SI,SOURCE LEA DI,RESULT MOV CX,10 AGN0: MOV AL,[SI] ________________ MOV CX,8 MOV BX,0 AGN1: MOV AH,0 SHL BL,1 ____ AL,1 RCL AH,1 CMP AH,____ ________________ JMP NEXT SET_ONE:OR BL,01H NEXT: MOV ____,BL ________________ LOOP AGN1 ________________ MOV [DI],BL INC SI INC DI LOOP AGN0 ;****END**** LEA DX,RESULT ;结果数据区首址 LEA SI,NAME1 ;结果文件名 MOV CX,N ;结果字节数 CALL SAVE ;保存结果到文件 RET START ENDP CODE ENDS END START  第三题: 一、请编制程序,其功能是:内存中连续存放着20个十六位二进制无符号数序列,请将它们排成升序(从小到大)。 例如: 内存中有 7001H,7004H,7002H…(假设后17个字均大与7004H) 结果为 7001H,7002H,7004H…(后跟17个字,按从小到大的顺序排列) 部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。   填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每行空白一般只需一条指令, 但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。 对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处, 请加以修改。 试题程序:   EXTRN LOAD:FAR,SAVE:FAR N EQU 20 STAC SEGMENT STACK DB 128 DUP(?) STAC ENDS DATA SEGMENT SOURCE DW N DUP(?) RESULT DW N DUP(0) NAME0 DB 'INPUT1.DAT',0 NAME1 DB 'OUTPUT1.DAT',0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STAC START PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX LEA DX,SOURCE ;数据区起始地址 LEA SI,NAME0 ;原始数据文件名 MOV CX,N*2 ;字数 CALL LOAD ;从'INPUT1.DAT'中读取数据 ;****BEGIN**** LEA SI,SOURCE LEA DI,RESULT MOV CX,N NEXT0: MOV AX,[SI] MOV [DI],AX ADD SI,_________ _____________________ LOOP ____________ CLD MOV BX,N-1 MAL1: LEA SI,RESULT MOV CX,_________ NEXT: LOD______ CMP [SI],AX JAE CONT XCHG [SI],__________ MOV [SI-2],AX CONT: LOOP _______________ ________________________ ________ MAL1 ;****END**** LEA DX,RESULT ;结果数据区首址 LEA SI,NAME1 ;结果文件名 MOV CX,N*2 ;结果字节数 CALL SAVE ;保存结果到文件 RET START ENDP CODE ENDS END START 第四题: 一、请编制程序,其功能是:内存中连续存放着24个无符号二进制字序列,字的最高位为000,此序列对应某一信号在一段时间内的连续变化,现对第21个二进制字前的20个二进制字进行移动平均处理,其方法为:将要处理的字Xi用以它为开始的连续五个字的平均数(Xi+Xi+1Xi+2Xi+3Xi+4)/5代替(余数舍去),得到新的20个无符号二进制字序列,结果存入内存。 例如: 内存中有 0100H,0200H,0300H,0400H,0500H,0600H… 结果为 0300H,0400H… 部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。   填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每行空白一般只需一条指令, 但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。 对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处, 请加以修改。 试题程序:   EXTRN LOAD:FAR,SAVE:FAR N EQU 24 STAC SEGMENT STACK DB 128 DUP(?) STAC ENDS DATA SEGMENT SOURCE DW N DUP(?) ;顺序存放24个字 RESULT DW 20 DUP(0) ;存放结果 NAME0 DB 'INPUT1.DAT',0 NAME1 DB 'OUTPUT1.DAT',0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STAC START PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX LEA DX,SOURCE ;数据区起始地址 LEA SI,NAME0 ;原始数据文件名 MOV CX,N*2 ;字数 CALL LOAD ;从'INPUT1.DAT'中读取数据 ;****BEGIN**** MOV DI,0 MOV SI,0 MOV CX,20 MOV BX,__________ AGN0: MOV AX,SOURCE[SI] PUSH SI PUSH CX MOV _______ , _______ AGN1: INC SI INC SI ADD AX,SOURCE[SI] LOOP AGN1 ______________________ DIV BX MOV RESULT[DI],AX INC DI ______________________ POP CX POP SI INC SI ______________________ LOOP AGN0 ;****END**** LEA DX,RESULT ;结果数据区首址 LEA SI,NAME1 ;结果文件名 MOV CX,40 ;结果字节数 CALL SAVE ;保存结果到文件 RET START ENDP CODE ENDS END START     第五题: 一、请编制程序,其功能是:内存中从SOURCE开始连续存放着21个八位有符号数(补码),其相邻两数之间差值不超过-8至7。对这种变化缓慢的数据可采用差分方法进行压缩。即第一个数据不变,其后的数据取与前一数据的差值并用四位二进制补码表示,两个差值拼成一个字节,前一个差值放在高四位,后一个差值放在低四位。 例如: 原数据(X[n]):23H,27H,2AH,29H,22H… 压缩后(Y[n]):23H, 43H, F9H… 编程按上述方法进行压缩,结果保存在RESULT开始的内存单元中。 部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。   填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令, 但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。 对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处, 请加以修改。 试题程序:   EXTRN LOAD:FAR,SAVE:FAR N EQU 10 STAC SEGMENT STACK DB 128 DUP(?) STAC ENDS DATA SEGMENT SOURCE DB 2*N+1 DUP(?) RESULT DB N+1 DUP(0) NAME0 DB 'INPUT1.DAT',0 NAME1 DB 'OUTPUT1.DAT',0 NDATA DB N DUP(0) PDATA DB N DUP(0) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STAC START PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV ES,AX ;置附加段寄存器 LEA DX,SOURCE ;数据区起始地址 LEA SI,NAME0 ;原始数据文件名 MOV CX,2*N+1 ;字节数 CALL LOAD ;从'INPUT1.DAT'中读取数据 ;****BEGIN**** LEA SI,SOURCE LEA DI,RESULT CLD MOVSB ;Y[0]=X[0] XOR BX,BX ;FLAG=0 MOV DX,N*2 ;COUNTER COMPRESS: LODSB ;X[n]-X[n-1] SUB _______________ ;FLAG=NOT FLAG ________________________ J_______ LOW_HEX MOV CL,4 ________ AL,CL MOV AH,AL JMP NEXT LOW_HEX: _________________________ OR AL,AH STOSB NEXT: _________________________ JNE COMPRESS ;****END**** LEA DX,RESULT ;结果数据区首址 LEA SI,NAME1 ;结果文件名 MOV CX,N+1 ;字节数 CALL SAVE ;保存结果到文件 RET START ENDP CODE ENDS END START 第六题: 一、请编制程序,其功能是:将内存中存放着20个数字0~9之间的ASCII字符(包括数字0和9的ASCII字符)或SP字符(20H),请将数字0~9之间的ASCII字符(包括数字0和9的ASCII字符)转换为相应的八位二进制数,并将SP字符转换为 $ 字符(24H)。将按上述方法处理后得到的20个字节存入内存中。 例如: 内存中有 20H(’SP’),30H(’0’),31H(’1’),31H(’1’),20H(’SP’),32H(’2’),…,39H(’9’)(共20个ASCII字符) 结果为 24H(’$’),00H,01H,01H,01H,24H(’$’),02H(’2’),…,09H(’9’)(共20个字节) 部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。   填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令, 但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。 对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处, 请加以修改。 试题程序:   EXTRN LOAD:FAR,SAVE:FAR N EQU 20 STAC SEGMENT STACK DB 128 DUP(?) STAC ENDS DATA SEGMENT SOURCE DB N DUP(?) RESULT DB N DUP(0) NAME0 DB 'INPUT1.DAT',0 NAME1 DB 'OUTPUT1.DAT',0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STAC START PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX LEA DX,SOURCE ;数据区起始地址 LEA SI,NAME0 ;原始数据文件名 MOV CX,N ;字节数 CALL LOAD ;从'INPUT1.DAT'中读取数据 ;****BEGIN**** ________________________ MOV DI,0 ________________________ CHAN: ________________________ SUB AL,20H JZ CHANGE SUB AL,____________ MOV RESULT[DI],AL ________________________ ________________________ DEC CX JZ EXIT JMP CHAN CHANGE: MOV RESULT[DI],24H INC DI INC SI JMP _______________ EXIT : NOP ;****END**** LEA DX,RESULT ;结果数据区首址 LEA SI,NAME1 ;结果文件名 MOV CX,N ;字节数 CALL SAVE ;保存结果到文件 RET START ENDP CODE ENDS END START 第七题: 一、请编制程序,其功能是:内存中共有30个字节型数据,找出其中的两个ASCII字符串并进行校验。欲寻找ASCII字符串由13个字符组成:#(23H),7个ASCII字符,*(2AH),2个ASCII字符,回车符(0DH),换行符(0AH)。 校验方法为:对字符#及字符*之间的7个ASCII字符进行异或操作,若异或操作结果的ASCCII字符表示(异或操作结果高4位的ASCII字符表示在前,低4位的ASCII字符表示在后)与原字符串中字符*之后的两个ASCII字符相同,则将原字符串原样保存;反之,则将原字符串中的所有字符(共13个)均用字符!(21H)代替。 例如: 内存中有 33H,35H,23H(’#’,第一个字符串开始),46H,41H,30H,2EH,34H,3DH,31H,2AH(’*’),32H,31H,0DH,0AH,46H,23H(’#’,第二个字符串开始),46H,41H,30H,2EH,34H,3DH,30H,2AH(’*’),32H,31H,0DH,0AH,55H 结果为 23H,46H,41H,30H,2EH,34H,3DH,31H,2AH(’*’),32H,31H(校验正确,该字符串原样保持),0DH,0AH,21H,21H,21H,21H,21H,21H,21H,21H,21H,21H,21H,21H,21H(校验错,整个字符串用字符’!’代替)。 部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。   填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令, 但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。 对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处, 请加以修改。 试题程序:   EXTRN LOAD:FAR,SAVE:FAR N EQU 26 STAC SEGMENT STACK DB 128 DUP(?) STAC ENDS DATA SEGMENT SOURCE DB N+4 DUP(?) RESULT DB N DUP(0) HH DB 2 DUP(0) NAME0 DB 'INPUT1.DAT',0 NAME1 DB 'OUTPUT1.DAT',0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STAC START PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX LEA DX,SOURCE ;数据区起始地址 LEA SI,NAME0 ;原始数据文件名 MOV CX,N+4 ;字节数 CALL LOAD ;从'INPUT1.DAT'中读取数据 ;****BEGIN**** MOV SI,0 MOV DI,0 MOV BX,2 ;两个ASCII字符串 REPEAT: MOV AH,0 SEARC
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服