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

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

请编制程序,其功能为:将内存中存放的连续的30个二进制数(0到100之间),按数值大小分别进行统计,0~59为D,60~74为C,75~84为B,85~100为A,统计出A、B、C、 D的个数,并按A、B、C、D次序存放在内存中。

例如:内存中原始数据为:21H,3CH,4DH,31H,4FH,51H,56H

统计结果:1,3,1,2

部分程序已经给出,其中原始数据由LOAD过程从文件INPUT1.DAT中读入从SOURCE开始的内存单元,转换结果(要求从RESULT 开始读入)由SAVE过程保存到OUTPUT1.DAT文件中。请在BEGIN和END之间补充使其完整,完成要求的功能。或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。

对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终产生运行结果。

部分程序如下:

;PROG1.ASM

EXTRN LOAD:FAR, SAVE:FAR

N EQU 30

DSEG SEGMENT

SOURCE DB N DUP (?)

RESULT DB 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

MOV ES, AX

LEA DX, SOURCE

LEA SI,NAME0

MOV CX,N

CALL LOAD

; *** BEGIN ***

MOV CX,N

LEA SI,SOURCE

CONT: MOV AL,[SI]

_____________

JB LB

INC RESULT

JMP OK

LB: CMP AL, 75

JB LC

INC ______

JMP OK

LC: CMP AL,60

JB LD

____________

JMP OK

LD: ____________

OK: INC SI

LOOP CONT

; *** END ***

LEA DX,RESULT

LEA SI,NAME1

MOV CX,4

CALL SAVE

RET

START ENDP

CSEG ENDS

END START


参考答案

更多 “ 请编制程序,其功能为:将内存中存放的连续的30个二进制数(0到100之间),按数值大小分别进行统计,0~59为D,60~74为C,75~84为B,85~100为A,统计出A、B、C、 D的个数,并按A、B、C、D次序存放在内存中。例如:内存中原始数据为:21H,3CH,4DH,31H,4FH,51H,56H统计结果:1,3,1,2部分程序已经给出,其中原始数据由LOAD过程从文件INPUT1.DAT中读入从SOURCE开始的内存单元,转换结果(要求从RESULT 开始读入)由SAVE过程保存到OUTPUT1.DAT文件中。请在BEGIN和END之间补充使其完整,完成要求的功能。或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终产生运行结果。部分程序如下:;PROG1.ASMEXTRN LOAD:FAR, SAVE:FARN EQU 30DSEG SEGMENTSOURCE DB N DUP (?)RESULT DB N DUP (0)NAME0 DB 'INPUT1. DAT',0NAME1 DB 'OUTPUT1. DAT',0DSEG ENDSSSEG SEGMENT STACKDB 128 DUP (?)SSEG ENDSCSEG SEGMENTASSUME CS:CSEG, DS:DSEG; SS:SSEGSTART PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX, DSEGMOV DS,AXMOV ES, AXLEA DX, SOURCELEA SI,NAME0MOV CX,NCALL LOAD; *** BEGIN ***MOV CX,NLEA SI,SOURCECONT: MOV AL,[SI]_____________JB LBINC RESULTJMP OKLB: CMP AL, 75JB LCINC ______JMP OKLC: CMP AL,60JB LD____________JMP OKLD: ____________OK: INC SILOOP CONT; *** END ***LEA DX,RESULTLEA SI,NAME1MOV CX,4CALL SAVERETSTART ENDPCSEG ENDSEND START ” 相关考题
考题 请编制程序,其功能为:内存中连续存放着20个无符号字节数,求它们的和。和值按字的形式存放,此前先按序存放参加运算的20个字节。例如;内存中有:01H,02H,03H ……结果为:01H,02H,03H …… (参加运算的字节),后跟一个字(为前面各字节的和)部分程序已经给出,其中原始数据由LOAD过程从文件INPUT1.DAT中读入从SOURCE开始的内存单元,运算结果要求从RESULT开始存放,由SAVE过程保存到OUTPUT1.DAT文件中。请在BEGIN和END之间补充使其完整,完成要求的功能。或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终产生运行结果。部分程序如下:;PROG1.ASMEXTRN LOAD:FAR,SAVE:FARN EQU 20DSEG SEGMENTSOURCE DW N DUP (?)RESULT DW N DUP (0)NAME0 DB 'INPUT1.DAT',0NAME1 DB 'OUTPUT1.DAT',0DSEG ENDSSSEG 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,NCALL LOAD; *** BEGIN ***LEA SI,SOURCELEA DI,RESULTMOV CX,NMOV BX,0NEXT: MOV AL,[SI]________________________MOV [DI],______________________________LOOP NEXTMOV [DI],______; *** END ***LEA DX,RESULTLEA SI,NAME1MOV CX,N+2CALL SAVERETSTART ENDPCSEG ENDSEND START

考题 请编制程序,其功能是:内存中连续存放着10个无符号8位格雷码表示的数,现将此10个数转换成10个8位二进制数,结果存入内存,其转换方法为二进制数的最高位D[7]与格雷码的最高位G[7]相同,二进制数的其余七位D[k](k=6,…,0)分别为格雷码的位G[k](k=6,…,0)与二进制数的位D[k+1](k=6,…,0)异或的结果。例如:内存中有:00H,03H,2BH,67H,0CH,15H,54H,02H,D8H,C7H结果为:00H,02H,32H,45H,081-I,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:FARN EQU 10STAC SEGMENT STACKDB 128 DUP(?)STAC ENDSDATA SEGMENTSOURCE DB N DUP(?) ; 顺序存放10个字节数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 ; 数据区起始地址LEA SI,NAME0 ; 原始数据MOV CX,N ; 字节数CALL LOAD ; 从INPUT1.DAT中读取数据;* ***BEGIN****LEA SI,SOURCELEA DI,RESULTMOV CX, 10AGN0: MOV AL,[SI](1)MOV CX,8MOV BX,0AGN1: MOV AH,0SHL BL,1(2) AL,1RCL AH, 1CMP AH, (3)(4)JMP NEXTSET ONE: OR BL,01HNEXT: MOV (5) ,BL(6)LOOP AGN1(7)MOV [DI],BLINC SIINC DILOOP AG

考题 请编制程序,其功能是:内存中连续存放着16个12位无符号二进制数DB11DB10…DB0,其存放格式均为DB11 DB10 DB9 DB8 DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0请判别这16个12位二进制数是否大于800H:若大于800H,则相应地在内存中存入01H;否则,存入00H。最后存放这16个12位二进制数中大于800H的数的个数n(n用一个字节表示)。例如:内存中有12H,30H,84H,50H,80H,00H…结果为 00H,01H,00H…(共16个字节),后跟n部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。请填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成所要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:

考题 请编制程序,其功能是:内存中连续存放着10个十六位二进制数,每个数的序号依次定义为0,1,…,9。统计每个数中位为0的个数N0,N1,…,N9(均用一个字节表示),然后按序将N0至N9存入内存中,最后再用一个字节表示这10个数中为0的位的总数n(n=N0+N1+…+N9)。例如:内存中有:0000H,000FH,FFFFH…结果为: 10H,0CH,00H…最后为n部分程序已给出,其中原始数据由过程LOAD从文件INPUT.DAT中读入SOURCE开始的内存单元中。运算结果要求从 RESULT开始存放,由过程SAVE保存到文件OUTPUT.DAT中。请填空BEGIN和END之间已给出的源程序使其完整,空白己用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可,或删除BEGIN和END之间原有的代码并自行编程来完成所要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。【试题程序】EXTRN LOAD:FAR,SAVE:FARN EQU 10STAC SEGMENT STACKDB 128 DUP (?)STAC ENDSDATA SEGMENTSOURCE DW N DUP(?)RESULT DB N+1 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,SOURCE ; 数据区起始地址LEA SI,NAME0 ; 原始数据文件名MOV CX,N*2 ; 字节数CALL LOAD ; 从'INPUT.DAT'中读取数据; ******** BEGIN ********MOV DI,OFFSET RESULTMOV CL,NMOV BX,0MOV DR,0PRO: MOV DL,0MOV AX, SOURCE[BX]MOV CH, (1)COUNT: (2)(3) JUMPINC DLJUMP: DEC CHJNZ (4)MOV [DI], DLADD DH,DLINC DIADD (5)DEC CLJNZ PROMOV (6); ******** END ********LEA DX,RESULT ; 结果数据区首址LEA SI,NAME1 ; 结果文件名MOV CX,N+1 ; 结果字节数CALL SAVE ; 保存结果到文件RETSTART ENDPCODE ENDSEND START

考题 如下程序实现为100×100的矩阵初始化为0,假定矩阵按列存放,开始时内存为空,程序和相关变量常驻内存,若分配给矩阵a的内存块为1页,页面大小为每页100个整数字。程序如下; int I,j,a[100][100]; for(j=0;j<100;j++) for (I=0;I<100;I++) a[1][j]=0; 则程序运行完毕发生的缺页中断次数为( )。A.99B.100C.100*100D.不能确定

考题 在数组A中a[0]到a[5]中分别存放一列数{5,4,0,3,1,2},使用简单选择排序法对其按照升序进行排序,第0趟比较后,进行交换的是()。 A、a[3]与a[2]B、a[0]与a[2]C、a[0]与a[1]D、a[0]与a[3]

考题 请编制程序,其功能是:内存中连续存放着16个10位二进制数DB9DB8…DB0,每个二进制数据均用两个字节表示,其存放格式均为:转换结果按原序存放在内存中。例如:内存中有:C048H,4091H,0080H,…结果为: 23H,01H,45H,02H,00H,02H…部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,运算结果要求从 RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。请填空BEGIN和END之间已给出的源程序使其完整,空白已用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可,或删除BEGIN和END之间原有的代码并自行编程来完成所要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。[试题程序]EXTRN LOAD:FAR,SAVE:FARN EQU 16STAC SEGMENT STACKDB 128 DUP(?)STAC ENDSDATA SEGMENTSOURCE DW N DUP(?)RESULT DB N*2 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 ; 数据区起始地址LEA SI,NAME0 ; 原始数据文件名MOV CX,N*2 ; 字节数CALL LOAD ; 从"INPUT1.DAT"中读取数据; ******** BEGIN ********MOV DI,OFFSET RESULTMOV BX,0MOV CH,NPRO: MOV AH,BYTE PTR SOURCE[BX]MOV AL, (1)MOV DL,AH ; 10 位无符号二进制数高八位MOV DH,AL ; 10 位无符号二进制数低二位MOV CL,2SHL AX, (2)SHL DX, (3)MOV AL,DHMOV [DI], (4)MOV [DI+I], (5)ADD DI,2A

考题 将累加器A中存放的无符号二进制数(0~0FFH)转换为三位压缩BCD码(0~255),并将结果存入30H,31H单元中

考题 请思考如何利用变址寻址方式,进行1000个数在内存中的移动?并试着用代码进行说明。 (假设1000个数在内存中连续存放,主存按字编址,若是将其从起始地址2000处搬到地址6000的地方。)