网友您好, 请在下方输入框内输入要搜索的题目:

题目内容 (请给出正确答案)

请编制程序,其功能是:将内存中由SOURCE指示的40个字节有符号数组成的数组分成正数和负数两个数组,并求这两个数组的数据个数,结果存放在RESULT指示的内存区域。存放形式为正数个数在前,其后跟正数数组元素,然后是负数个数及负数数组元素。

例如:

部分程序已经给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,转换结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。

请填空BEGIN和END之间已经给出的一段原程序使其完整,需填空处已经用横线标出,每个空白一般只需要填一条指令或指令的一部分(指令助记符或操作数),也可以填入功能相当的多条指令,或删去BEGIN和END之间原有的代码并自行编程来完成所要求的功能。

对程序必须进行汇编,并与IO.OBJ连接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。

[试题程序]

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,NANE0 ;原始数据文件名

MOV CX,N ;字节数

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

**********BEGIN**********

LEA SI,RESULT

(1) DI,OFFSET PDATA ;PDATA为正数数组存放缓冲区首址

NOV BX,OFFSET NDATA ;NDATA为负数数组存放缓冲区首址

XOR DX,DX

MOV CX,N

CLD

MAIN1: LODSB

TEST AL, (2)

Z MAIN2

NC DH

OV [BX],AL

NC BX

(3)

MAIN2: INC DL

OV [DI],AL

NC DI

NAIN3: (4) NAIN1

EA SI,PDATA

A DI,RESULT

OV [DI],DL

NC&nb


参考答案

更多 “ 请编制程序,其功能是:将内存中由SOURCE指示的40个字节有符号数组成的数组分成正数和负数两个数组,并求这两个数组的数据个数,结果存放在RESULT指示的内存区域。存放形式为正数个数在前,其后跟正数数组元素,然后是负数个数及负数数组元素。例如:部分程序已经给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,转换结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。请填空BEGIN和END之间已经给出的一段原程序使其完整,需填空处已经用横线标出,每个空白一般只需要填一条指令或指令的一部分(指令助记符或操作数),也可以填入功能相当的多条指令,或删去BEGIN和END之间原有的代码并自行编程来完成所要求的功能。对程序必须进行汇编,并与IO.OBJ连接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。[试题程序]EXTRN LOAD:FAR,SAVE:FARN EQU 40STAC SEGMENT STACKDB 128 DUP (?)STAC ENDSDATA SEGMENTSOURCE DB N DUP(0)RESULT DB N+2 DUP(0)NAME0 DB 'INPUT1.DAT',0NAME1 DB 'OUTPUT1.DAT',0NDATA DB N DUP(0)PDATA DB N DUP(0)DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA, SS:STACSTART PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV ES,AX ;置附加段寄存器LEA DX,SOURCE ;数据区起始地址LEA SI,NANE0 ;原始数据文件名MOV CX,N ;字节数CALL LOAD ;从'INPUT1.DAT'中读取数据**********BEGIN**********LEA SI,RESULT(1) DI,OFFSET PDATA ;PDATA为正数数组存放缓冲区首址NOV BX,OFFSET NDATA ;NDATA为负数数组存放缓冲区首址XOR DX,DXMOV CX,NCLDMAIN1: LODSBTEST AL, (2)Z MAIN2NC DHOV [BX],ALNC BX(3)MAIN2: INC DLOV [DI],ALNC DINAIN3: (4) NAIN1EA SI,PDATAA DI,RESULTOV [DI],DLNC&nb ” 相关考题
考题 请编制程序,其功能是:内存中有一个由16个十六位二进制数组成的数组(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从文件INPUT.DAT中读入(L在前,SOURCE在后)。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT.DAT中。请填空BEGIN和END之间已给出的源程序使其完整,空白已用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可,或删除BEGIN和END之间原有的代码并自行编程来完成所要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。[试题程序]EXTRN LOAD:FAR,SAVE:FARN EQU 16STAC SEGMENT STACKDB 128 DUP (?)STAC ENDSDATA SEGMENTL DW ?SOURCE DW N DUP(?)RESULT DW N DUP(0)NAME0 DB 'INPUT.DAT',0NAME1 DB 'OUTPUT.DAT',0DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA, SS:STACSTART PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXLEA DX,L ;数据区起始地址LEA SI,NANE0 ;原女合数据文件名MOV CX,2*(N+1) ;字节数CALL LOAD ;从'INPUT.DAT'中读取数据; ******** BEGIN ************LEA SI, SOURCE(1)MOV CX,NMOV DX, (2)L0: MOV AX, [SI](3) L,DX(4) STORENOT AXSTORE:MOV [DI],AXADD DI,2ADD SI,2(5)LOOP L0; ******** END ********LEA DX,RESULT ; 结果数据区首址LEA SI,NAME1 ;结果文件名MOV CX,2*N ;结果字节数CALL SAVE ;保存结果到文件RETSTART ENDPCODE ENDSEND START

考题 请编制程序,其功能是:内存中连续存放着两个由8位有符号整数组成的序列Ai和Bi(i=0,…,9;下同),Ai在前,Bi在后。求序列Ci,Ci=Ai+Bi。结果Ci用字单元按C0,…,C9的顺序存放。例如:序列Ai为:80H(-128D),31H(+49D),61(+97D),7FH(+127D),…序列Bi为:80H(-128D),01(+1D),F1H(-15D),7FH(+127D),…部分程序已经给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。请填空BEGIN和END之间已给出的源程序使其完整,空白处已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可,或删去BEGIN和END之间原有的代码并自行编程来完成所要求的功能。对程序必须进行汇编,并与IO.OBJ连接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序存在错误之处,请加以修改。[试题程序]EXTRN LOAD:FAR,SAVE:FARN EQU 10 每个序列的长度STAC SEGMENT STACKDB 128 DUP (?)STAC ENDSDATA SEGMENTSOURCE DB N*2 DUP(?) ; 顺序存放A0,L,A9,B0,L,B9RESULT DW N DUP(0) ; 顺序存放C0,L,C9NAME0 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 ;数据区起始地址LEA SI,NAME0 ;原始数据文件名MOV CX,N*2 ;字节数CALL LOAD ;从"INPUT1.DAT"中读取数据; **+***** BEGIN ********MOV DI,OFFSET RESULT ;结果从RESULT开始存放MOV BX,0MOV CX,NPRO: MOV AH,0MOV AL, (1) ;序列Bi中的一个整数MOV DL,AL ;暂存Bi(2) AL,SOURCE[BX] ;Ci=Bi+AiJNO STAY ;无溢出转STAYJUMP1: MOV AH,00 ;有溢出ADD DL,0JNS JUMP ;Bi是正数(为一个正数加上一个正数,;结果为负数的溢出情况)转JUNP(AH;已为00H)MOV AH, (3) ;Bi是负数(为一个负数加上一个负数,;结果为正数的溢出情况)将结果变为;负数JMP (4)&nbs

考题 假定int类型变量占用两个字节,其有定义int x[10] ={0,2,4};,则数组x在内存中所占字节数是A.3B.6C.10D.20

考题 请编制程序,其功能是:在递增的有序字节数组中插入一个正整数,并按指定的数组个数存入内存区中。假设数组元素均为正数。例如,将02H插入下面的数组中:01H,03H,04H,05H…结果为 01H,02H,03H,04H,05H…部分程序已经给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,转换结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。请填空BEGIN和END之间已经给出的一段源程序使其完整,需填空处已经用横线标出,每个空白一般只需要填一条指令或指令的一部分(指令助记符或操作数),考生也可以填入功能相当的多条指令,或删去BEGIN和END之间原有的代码并自行编程来完成所要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:

考题 已知数据文件IN1.DAT和IN2.DAT中分别存有100个两位十进制数,并且已调用读函数readDat把这两个文件中的数存入数组a和b中,请考生编制一个函数jsVal,实现的功能是依次对数组a和b中的数按条件重新组成一个新数并依次存入数组C中,再对数组C中的数按从小大的顺序进行排序,最后调用输出函数writeDat把结果C输出到文件out.dat中。组成新数的条件:如果数组a和b中相同下标位置的数必须符合一个是偶数,另一个是奇数,则数组a中的数按二进制数左移八位后再加上数组b对应位置上的数,把这样组成的新数依次存入数组C中。

考题 设A是由n个非0实数构成的数组,设计一个算法重新排列的数组的数,使得负数都排列在正数的前面,要求算法使用O(n)的时间和O(1)的空间。

考题 输入若干个整数先存放在1个数组中,然后遍历该数组,将正数元素存放在到一个正数数组,负数元素存放到另一个负数数组,0舍弃,最后分别输出正数数组、负数数组。 提示:1.需要定义3个一维数组,3个循环变量 注:如果有编程条件的可以附上运行结果,但请不要抄袭作业,雷同作业将无成绩。

考题 【填空题】假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是____。

考题 设任意n个整数存放于数组A(1:n)中,试编写算法,将所有正数排在所有负数前面(要求算法复杂度为0(n))。 [题目分析]本题属于排序问题,只是排出正负,不排出大小。可在数组首尾设两个指针i和j,i自小至大搜索到负数停止,j自大至小搜索到正数停止。然后i和j所指数据交换,继续以上过程,直到 i=j为止。