试题要求如下:请编制程序,其功能是:从20个有符号字节数据中取出负数并计算其绝对值之和(字型),然后存放在指定的内存区中,多余的空间填0。例如:内存中有:80H,02H,00H,7CH,7BH,81H……结果为: 80H,FEH,FDH,05H,00H,00H……部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,运算的结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。补充BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。对程序进行汇编,并与IO.OBJ链接产生执行文件,最终运行程序产生结果。调试中发现整个程序中存在错误之处,请加以修改。试题程序:EXTRN LOAD: FAR, SAVE: FARN EQU 20STAC SEGMENT STACKDB 256 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, AXMOV ES, AXLEA DX, SOURCE ; 数据区起始地址LEA SI, NAME0 ; 原始数据文件名MOV CX, N ; 字节数CALL LOAD ; 从'INPUT1.DAW'中读取数据**** BEGIN ****LEA SI, SOURCELEA DI, RESULTMOV DX, 0MOV CX, NCLDCON: LODSB(1)JGE (2)MOV [DI], ALINC DI(3)INC DIADD DL, AL(4)NEXT: LOOP CONMOV [DI], DXADD DI, 2MOV CX, 40SUB CX, DIMOV AL, (5)(6); **** END ****LEA DX, RESULT ; 结果数据区首址

试题要求如下:

请编制程序,其功能是:从20个有符号字节数据中取出负数并计算其绝对值之和(字型),然后存放在指定的内存区中,多余的空间填0。

例如:

内存中有:80H,02H,00H,7CH,7BH,81H……

结果为: 80H,FEH,FDH,05H,00H,00H……

部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,运算的结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。补充BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。

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

试题程序:

EXTRN LOAD: FAR, SAVE: FAR

N EQU 20

STAC SEGMENT STACK

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

MOV ES, AX

LEA DX, SOURCE ; 数据区起始地址

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

MOV CX, N ; 字节数

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

**** BEGIN ****

LEA SI, SOURCE

LEA DI, RESULT

MOV DX, 0

MOV CX, N

CLD

CON: LODSB

(1)

JGE (2)

MOV [DI], AL

INC DI

(3)

INC DI

ADD DL, AL

(4)

NEXT: LOOP CON

MOV [DI], DX

ADD DI, 2

MOV CX, 40

SUB CX, DI

MOV AL, (5)

(6)

; **** END ****

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


相关考题:

请编制程序,其功能是:内存中连续存放着20个无符号字节数序列,请将它们排成升序(从小到大)。例如:内存中有01H,04H,02H…(假设后17个字节均大与04H)结果为 01H,02H,04H…(后跟17个字节,按从小到大的顺序排列)部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。请填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并白行编程来完成所要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:

请编制程序,其功能是:内存中连续存放着两个无符号字节序列AK和BK((K=0,1,……,9),求序列CK,CK=AK-BK(CK以有符号字的形式按C0,C1……,C9的顺序连续存放)。例如:序列AK为:30H,FFH,80H,FFH…序列BK为:00H,FFH,FFH,OAH…结果CK为:0030H,000H,FF81H,FFF5H…部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SURCE开始的内存单元中,运算结果要求从 RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。请填空BEGIN和END之间已给出的源程序使其完整,空白已用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可,或删除BEGIN和END之间原有的代码并自行编程来完成所要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。[试题程序]EXTRN LOAD:FAR,SAVE:FARN EQU 10STAC SEGMENT STACKDB 128 DUP(?)STAC ENDSDATA SEGMENTSOURCE DB N*2 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,SOURCE ; 数据区起始地址LEA SI,NAME0 ; 原始数据文件名MOV CX,N*2 ; 字节数CALL LOAD ; 从"INPUT1.DAT"中读取数据******** BEGIN ********MOV DI,OFFSET RESULT ; 结果从RESULT开始存放MOV BX,0(1)PRO: MOV AH,0MOV AL,SOURCE[BX] ; 序列Ak中的一个字节SUB AL, (2) ; Ck=Ak-Bk(3) JUMP ; 无借位转JUMPMOV AH, (4) ; 有借位转换成有符号字(为负)JUMP: MOV (5) ,AADD DI,2INC BXDEC CXJNZ PRO; ******** END ********LEA DX,RESULT ; 结果数据区首址

请编制程序,其功能是:将内存中由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

程序Cmody091.C,其功能是计算1至100之间的奇数之和,偶数之和。请改正错程序中的错误。

从键盘输入一组无符号整数并保存在数组arr[N]中,以整数0结束输入,即第N+1个数是0,要求这些数的最大位数不超过4位,其元素的个数通过变量num传人函数proc()。请补充函数proc(),其功能是:从数组arr中找出个位和十位的数字之和大于5的所有无符号整数,结果保存在数组yy中,其个数由函数proc返回。例如,当arr[8]={13,1,205,252,2,333,4444,21)时实际输人时,数与数之间用Enter键分开,bb[4]={252,333,4444)。注意:部分源程序给出如下。请勿改动函数main()和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。试题程序:

关于整数补码表示方法的叙述中,( )是正确的。 A、负数的补码其符号位是“0”B、负数的补码是该数绝对值的原码最末位加1C、负数的补码是该数绝对值的反码最末位加1D、负数的补码与该数的原码形式相同

关于整数补码表示方法的叙述中,____________是错误的。A.负数的补码其符号位是"1"B.负数的补码是该数绝对值的原码最末位加1C.负数的补码是该数绝对值的反码最末位加1D.正数的补码与该数的原码形式相同

用二进制补码运算计算下列各式。式中的4位二进制数是不带符号位的绝对值。如果和为负数,请求出负数的绝对值。 (1)1101-1011 (2)-1101-1010

某定点小数字长16位,含1位符号位,补码表示,写出其对应的典型值(8分,每小题2分) (1)非零最小正数 (2)最大正数 (3)绝对值最小负数 (4)绝对值最大负数