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

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

根据16位逻辑变量L的内容对内存单元中连续存放的十六个字符的数组SOURCE作如下处理:

(1)若L的第i位为1,将SOURCE[i]的最高位置加偶校验位

(2)若L的第i位为0,SOURCE[i]不变

例如:L=0005 转换之前:67H,61H,4EH,38H……

转换之后:E7H,61H,4EH,38H……

部分程序已经在PROG1.ASM中给出,请填空BEGIN到END之间已经给出的源程序,使其完整(空白已经用横线标出,每行空白一般只需要一条指令,但功能相当的多条指令亦可)或删除BEGIN与END之间的原有代码并自行编写程序片段完成所需的功能。

原有数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,结果要求从RESULT开始存放,由SAVE保存到OUTPUT1.DAT文件。

对程序必须进行汇编,并与IO.OBJ连接产生PROG1.EXE执行文件,最终产生运行结果(无结果或结果不正确均不得分)。

部分源程序如下:

EXTRN LOAD:FAR,SAVE:FAR

N EQU 16

STAC SEGMENT STACK

DB 128 DUP (?)

STAC ENDS

DATA SEGMENT

L DW ?

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

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

MOV CX,2 + N ; 字节数

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

**** BEGIN ****

LEA SI, SOURCE

LEA DI, RESULT

MOV CX,N

MOV DX, (1)

LO: MOV AL, [SI]

(2) L,DX

JZ STORE

AND AL,AL

(3) STORE

(4)

STORE: MOV [DI],AL

INC SI

INC DI

(5)

LOOP LO

***** END *****

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

LEA SI, NAME1 ; 结果文件名

MOV CX,N ; 结果字节数

CALL SAVE ; 保存结果到文件

RET

&nbs


参考答案

更多 “ 根据16位逻辑变量L的内容对内存单元中连续存放的十六个字符的数组SOURCE作如下处理:(1)若L的第i位为1,将SOURCE[i]的最高位置加偶校验位(2)若L的第i位为0,SOURCE[i]不变例如:L=0005 转换之前:67H,61H,4EH,38H……转换之后:E7H,61H,4EH,38H……部分程序已经在PROG1.ASM中给出,请填空BEGIN到END之间已经给出的源程序,使其完整(空白已经用横线标出,每行空白一般只需要一条指令,但功能相当的多条指令亦可)或删除BEGIN与END之间的原有代码并自行编写程序片段完成所需的功能。原有数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,结果要求从RESULT开始存放,由SAVE保存到OUTPUT1.DAT文件。对程序必须进行汇编,并与IO.OBJ连接产生PROG1.EXE执行文件,最终产生运行结果(无结果或结果不正确均不得分)。部分源程序如下:EXTRN LOAD:FAR,SAVE:FARN EQU 16STAC SEGMENT STACKDB 128 DUP (?)STAC ENDSDATA SEGMENTL DW ?SOURCE 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,L ; 数据区起始地址LEA SI, NAME0 ; 原始数据文件名MOV CX,2 + N ; 字节数CALL LOAD ; 从"INPUT1.DAT"中读取数据**** BEGIN ****LEA SI, SOURCELEA DI, RESULTMOV CX,NMOV DX, (1)LO: MOV AL, [SI](2) L,DXJZ STOREAND AL,AL(3) STORE(4)STORE: MOV [DI],ALINC SIINC DI(5)LOOP LO***** END *****LEA DX,RESULT ; 结果数据区首地址LEA SI, NAME1 ; 结果文件名MOV CX,N ; 结果字节数CALL SAVE ; 保存结果到文件RET&nbs ” 相关考题
考题 请编制程序,其功能是:内存中有一个由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

考题 数组A中,每个元素A[i,j]的长度均为32个二进位,行下标从-1到9,列下标从1到11,从首地址S开始连续存放主存储器中,主存储器字长为16位。求: ① 存放该数组所需多少单元? ② 存放数组第4列所有元素至少需多少单元? ③ 数组按行存放时,元素A[7,4]的起始地址是多少? ④ 数组按列存放时,元素A[4,7]的起始地址是多少?

考题 ●设数组a[1..m,1..n](m1,n2)中的元素以行为主序存放,每个元素占用1个存储单元,则最后一个数组元素a[m,n】相对于数组空间首地址的偏移量为( )。A.(m-l)*n+n-lB.(m-l)*nC.m*(n-l)D.m*n

考题 请编写函数fun,其功能是求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。例如,输入如下整数:876 675 896 10l 30l 401 980 431451 777则输出结果为:6,980注意:部分源程序在文件PROGl.C文件中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

考题 请编制程序PROG1.ASM,其功能是:以逻辑尺L变量对内存中连续存放着16个字的数进行去高字节操作:当L的i位为1则将第i数据的高字节置为全0,当L的i位为0则第i数据不变。将处理的结果存入RESULT指示的内存区。例如:设L=0005H源数:1111H,2222H,3333H,4444H,5555H,6666H…结果:0011H,2222H,0033H,4444H,5555H,6666H…部分程序已经给出,其中原始数据由过程LOAD从文件INPUTl.DAT中读入SOURCE开始的内存元中,运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令也可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。PROG1.ASM文件内容如下: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 '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,L ;数据区起始地址LEA SI,NAMEO ;原始数据文件名MOV CX,2*(N+1) ;字节数CALL LOAD ;从input1.dat文件中读取数据;* * * * BECIN * * * *LEA SI,SOURCE_______MOV CX,NMOV DX,_____LO: MOV AX,[SI]_____ L,DX_____ STORENOT AXSTORE: MOV [DI],AXADD DI,2ADD SI,2LOOP LO;* * * * END * * * *LEA DX,RES

考题 设数组a[1...n,1.....m](n1,m1)中的元素以列为主序存放,每个元素占用1个存储 单元,则数组元素a[ij](1≤i≤n,l≤j≤m)桂对于数组空间首地址的偏移量为(35)。A.(i-l)*m+j-lB.(i-l)*n+j-lC.O-l)*m+i-lD.(j-l)*n+i-l

考题 设数组a[0..n-l,O..m-l] (n>l,m>l)中的元素以行为主序存放,每个元素占用1个 存储单元,则数组元素a[ij](0<i<n,0<j<m)的存储位置相对于数组空间首地址的偏移量为(35)。A.j*m+iB.i*m+jC.j*n+iD.i*n+i

考题 ●设数组a[1..m,1..n](m1,n2)中的元素以行为主序存放,每个元素占用1个存储单元,则最后一个数组元素a[m,n】相对于数组空间首地址的偏移量为(35)。(35)A.(m-l)*n+n-lB.(m-l)*nC.m*(n-l)D.m*n

考题 在定义数组之后,根据数组中元素的类型及个数,在内存中分配一段连续存储单元用于存放数组中的各个元素。