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

请编制程序PROG1.ASM,其功能是:以SOURCE开始的内存区域存放着多个字节的数据,其中有压缩BCD码和

题目

请编制程序PROG1.ASM,其功能是:以SOURCE开始的内存区域存放着多个字节的数据,其中有压缩BCD码和其他数据。现按下列编码规则进行编码:在每个压缩BCD码前面加两个字节前缀代码BEH和CCH,并在其后加两个字节后缀代码DDH和EDH;如果不是压缩BCD码,则该数据前后均加两个代码0DH和0EH。编码后的数据存放到RESULT指示的内存区域。

例如:

原信息为:12H,D9H,86H,54H,……

结果为:BEH,CCH,12H,DDH,EDH,0DH,0EH,D9H,0DH,0EH,BEH,CCH,86H,DDH,EDH,BEH, CCH,86H,DDH,EDH,……

部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件 OUTPUT1.DAT中。

填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。

对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。

试题程序:

EXTRN LOAD:FAR, SAVE:FAR

N EQU 10

STAC SEGMENT STACK

DB 128 DUP (?)

STAC ENDS

DATA SEGMENT

SOURCE DB N DUP(0)

RESULT DB 5*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.DAT中读取数据

;**** BEGIN ****

LEA SI, SOURCE

MOV DI,OFFSET RESULT

MOV CX,N

CLP1: MOV AL, [SI]

MOV BL,AL

MOV AH,AL

(1)

AND AL,0FOH

(2)

MOV CL,4

(3)

POP CX

CMP (4)

JA CLP2

CMP AH,9

JA CLP2

MOV (5)

INC DI

&nbs

参考答案
正确答案:(1)AND AHOFH (2) PUSH CX (3) RORALCL(4) AL9 (5) BYTE PTR [DI]0BEH (6) LOOP CLP1
(1)AND AH,OFH (2) PUSH CX (3) RORAL,CL(4) AL,9 (5) BYTE PTR [DI],0BEH (6) LOOP CLP1 解析:识别是否为压缩BCD码,若是,则利用堆栈的性质,在前面加BEH和CCH,在其后加DDH和EDH;若不是,则该数据前后均加0DH和0EH。最后编码后的数据存放到RESULT指示的内存区域。
看了请编制程序PROG1.ASM,...的网友还看了以下:

987654321=2005如何用括号或者四则运算解决数字和数字之间可以连起来组成两位数或者三位数 数学 2020-05-13 …

表格里面有汉字和数字.怎么自动分成两列同一列信息,每格的内容是汉字与数字组长,且长度不一,如何将汉 其他 2020-05-13 …

数字和数字乘是用一个乘号,数字和字母乘是用一个点来表示,那么数字乘数字乘字母,中间用什么表示?是X 数学 2020-05-13 …

excel同一单元格里面的文字和数字怎么拆分成两个单元格?我希望吧excel同一单元格里面的文字和 其他 2020-05-16 …

两个4位BCD数码相加,被加数和加数分别存于30H,31H和40H,41H单元中(次序为千位、百位 其他 2020-06-17 …

求正则表达式只能有汉字和数字,字母(不能全为数字,字母) 数学 2020-07-23 …

关于图例的叙述,正确的是()A.图例就是用来表示各种地理事物的文字和数字B.地图上表示居民点的符号是 语文 2020-11-06 …

汉仪字体文字和数字怎么不在同一条线上同一行打出来的文字和数字数字怎么像上对齐换其他的字体就不会求原因 其他 2020-11-07 …

关于图例的叙述,正确的是()A.图例就是用来表示各种地理事物的文字和数字B.地图上表示居民点的符号是 其他 2020-11-28 …

关于地图的叙述,正确的是()A.比例尺也叫放大尺B.有经纬网的地图,应根据经纬网判定方向C.地图上等 语文 2021-01-05 …