早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧考试题库频道 --> 计算机类考试 -->计算机三级 -->

请编制程序PROC1.ASM,其功能是:内存中有一个ASCII字符串(从S0URCE开始存放),试将其中所有连续的

题目

请编制程序PROC1.ASM,其功能是:内存中有一个ASCII字符串(从S0URCE开始存放),试将其中所有连续的回车与换行符(0DH,0AH)置换成单个回车符(0DH)。字符串以00H结尾,长度(包括00H)不超过100个字节。

例如:字符串41H,42H,0DH,0AH,43H,00H

转换为41H,42H,0DH,43H,00H

部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUT- PUT1.DAT中。请编写BECIN到END之间的代码。对程序必须进行汇编,并与IO.OBJ连接产生PROC1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。

部分源程序如下:

EXTRN LOAD:FAR,SAVE:FAR

N EQU 100

STAC SEGMENT STACK

DB 128 DUP (?)

STAC ENDS

DATA SEGMENT

SOURCE DB N DUP (0)

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

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

MOV CX,N ; 字节数

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

**** BEGIN ****

***** END *****

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

LEA SI, NAME1 ; 结果文件名

MOV CX,N ; 结果字节数

CALL SAVE

RET

START ENDP

CODE ENDS

END START

编程思路:

第一步:分析程序要求的功能。

本程序需要完成以下功能。

(1)据文件INPUT1.DAT中读取100个ASCII码存放在SOURCE开始的内存单元中。

(2)将SOURCE开始的100个字单元中的ASCII码,将0DH后的0AH删除,并将结果存放在RFSULT开始的内存单元中。

(3)将结果存放在OUTPUT1.DAT中。

第二步:用相应的汇编程序来实现其功能。

(1) 数据的读取和存入文件部分的实现,题目中已经给出。

(2) 如果是将数据在原地进行处理,那么每删除一个数据就要将其后面的所有数据向前移动一个位置,如果直接将扫描处理完毕的数据复制到结果地址中,将会节省移动数据的开销;

因为要删除0DH后面的0AH,所以,在扫描数组的过程中除了要了解当前数据元素的内容还要了解前一个数据的内容。解决方法可使用标志单元记录前一个数据是否为 0DH,然后当前数据元素根据标志单元的内容决定当前元素是否复制到结果中;也可在扫描数组的过程中,如果碰到一个0DH,则进入不同的程序段,这个程序段决定是否将当前数据元素复制到结果中。我们的参考答案采用了后一种方法。

参考答案
正确答案:LEA SISOURCE LEA DIRESULT LO MOV AL[SI] CMP AL0 JZ QUIT ;如果当前字符为0则结束 MOV [DI]AL ;不为0则复制到目的地址 INC SI INC DI CMP AL0DH ;当前字符若为ODH则进入L1状态 JE L1 JMP LO L1:MOV AH[SI] ;在前一个字符为ODH的情况下判断当前字符是符为OAH若为OAH则不将OAH复制到目的地址 CMP AH0AH JEN LO INC SI JMP LO ;重复处理下一个字符 QUIT
LEA SI,SOURCE LEA DI,RESULT LO MOV AL,[SI] CMP AL,0 JZ QUIT ;如果当前字符为0,则结束 MOV [DI],AL ;不为0则复制到目的地址 INC SI INC DI CMP AL,0DH ;当前字符若为ODH,则进入L1状态 JE L1 JMP LO L1:MOV AH,[SI] ;在前一个字符为ODH的情况下,判断当前字符是符为OAH,若为OAH则不将OAH复制到目的地址 CMP AH,0AH JEN LO INC SI JMP LO ;重复处理下一个字符 QUIT
看了请编制程序PROC1.ASM,...的网友还看了以下:

30颗山楂串糖葫芦,4个串一串1;能串多少串?2;若要串9串,还要多少颗山楂树?30颗山楂串糖葫芦 其他 2020-05-14 …

电动机物理题电流通过某一电路,电能(E)转化为机械能(E机)和内能(E内),已知这个电路两端的电压 物理 2020-05-16 …

空心大球内能放多少小球?已知空心大球的内径R,小球半径r,R≥2r,在大球内填充前述小球,请问填充 其他 2020-07-29 …

圆和圆的位置关系(1)圆和圆的位置关系相离外离⇔d>R+r内含⇔0≤d<R−r(R≥r)相切外切⇔d 其他 2020-12-02 …

许多同学喜欢吃烤肉串,用炭火烤肉串的过程中,炭火的能转化为内能,利用方式增加肉的内能,但科学研究表明 物理 2020-12-28 …

校门口新搬来了一个烤臭豆腐的小摊,同学们远远地就能闻到臭豆腐的味道,这属于现象。多同学喜欢吃烤肉串, 物理 2020-12-28 …

校门口新搬来了一个烤臭豆腐的小摊,同学们远远地就能闻到臭豆腐的味道,这属于现象.多同学喜欢吃烤肉串, 物理 2020-12-28 …

烧烤店用炭火烤羊肉串时,阵阵香味四溢,这是现象;烤羊肉串是通过的方法使肉串内能增加的.使物体内能改变 物理 2020-12-28 …

烤羊肉串是小明同学最喜欢的小吃,在烧烤时通过的方式改变了羊肉串的内能,同时能闻到所烤烤肉的香味,这是 物理 2020-12-28 …

用电流表内接法和电流表外接法分别测量某电阻Rx的阻值,测得的结果分别为R内和R外,则所测阻值与真实值 物理 2021-01-22 …