万能百科  > 所属分类  > 

请编制程序,其功能为:从SOURCE开始的内存区域存放着N个字节的有符号数。现找出最大的数,结果存放

请编制程序,其功能为:从SOURCE开始的内存区域存放着N个字节的有符号数。现找出最大的数,结果存放到RESULT 指示的,其后存放原N个数逻辑取反后的值。

例如:

数据为:09H,7EH,89H,F6H,17H……67H(N个数据)

结果为:7EH (最大数),F6H,81H,76H,0CH,E8H……98H(原N个数的逻辑反)

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

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

部分程序如下;

;PROG1. ASM

EXTRN LOAD: FAR,SAVE:FAR

N EQU 30

DSEG SEGMENT

SOURCE DW N DUP (?)

RESULT DW N DUP (0)

NAME0 DB 'INPUT1.DAT,0

NAME1 DB 'OUTPUT1.DAT',0

DSEG ENDS

SSEG SEGMENT STACK

DB 128 DHP (?)

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 ***

______ SI,SOURCE

MOV BX,OFFSET SOURCE

LEA DI,RESULT

L1: MOV CX,N

MOV DX,CX

DEC DX

MOV AL,______

L2: INC BX

______ AL,[BX]

______________

MOV AL,[BX]

L3: DEC DX

JNZ______

MOV [DI],AL

INC DI

CLD

MAX: LODSB

NOT AL

______________

LOOP MAX

; *** END ***

LEA DX,RESULT

LEA SI,NAME1

MOV CX,N

CALL SAVE

RET

START ENDP

CSEG ENDS

END START

正确答案:

; *** BEGIN *** LEA SI SOURCE MOV BXOFFSET SOURCE LEA DI RESULT L1: MOV CXN MOV DX CX DEC DX ; 第一个数已经取出故还剩N-1个数需做比较 MOV AL [BX] ; 将 SOURCE 中的第一个数传至AL中

词条内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。

标签