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

请编制程序,其功能是:内存中连续存放着10个十六位二进制数。分别对每个数的高位字节和低位字节进

题目

请编制程序,其功能是:内存中连续存放着10个十六位二进制数。分别对每个数的高位字节和低位字节进行逻辑与运算及逻辑或运算。运算结果以字的形式按序连续存放(低位字节存入逻辑与运算的结果,高位字节存入逻辑或运算的结果)。

例如:

内存中有:AA55H,55AAH,FFAAH

结果为: PP00H,FF00H,FFAAH

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

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

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

[试题程序]

EXTRN LOAD:FAR,SAVE:FAR

N EQU 3

STAC SEGMENT STACK

DB 128 DUP (?)

STAC ENDS

DATA SEGMENT

SOURCE DW N DUP(?)

RESULT DW 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,NANE0 ;原始数据文件名

MOV CX,N*2 ;字节数

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

; ********* BEGIN **********

MOV DI,OFFSET RESULT

MOV CX,N

MOV BX,00

PRO: MOV AX, (1)

MOV DX,AX

AND (2) ,DH

(3) AH,AL

MOV (4) ,DL

ADD BX,2

(5)

ADD DI,2

(6)

JNZ PRO

; ******** END ********

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

LEA SI,NAME1 ;结果文件名

NOV CX,N*2 ;结果字节数

CALL SAVE ;保存结果到文件

RET

START ENDP

CODE ENDS

END START

参考答案
正确答案:(1)SOURCE[BX] (2)DL (3)OR(4)AL (5)MOV [DI]AX (6)DECCX
(1)SOURCE[BX] (2)DL (3)OR(4)AL (5)MOV [DI],AX (6)DECCX 解析:该程序的功能是:将每个16位二进制数的高8位和低8位分别进行逻辑“与”运算和逻辑“或”运算,并将运算结果以字的形式按序连续存放,低字节存放逻辑“与”运算的结果,高字节存放逻辑“或”运算的结果。
程序的堆栈段定义了一个128字节的堆栈区。堆栈段下面是数据段。数据段中定义了两个字型变量:原始数据区SOURCE和结果数据区RESULT:两个字节型变量:原始数据文件名NAME0和结果数据文件名NAME1。数据段下面是代码段,在代码段的开始告诉汇编程序,代码段、数据段和堆栈段分别属于段寄存器CS、DS、SS。
在程序的开始部分,是对返回地址的保存和数据段寄存器的初始化,这是每一个汇编程序所必须具有的操作步骤。然后调用外部过程LOAD,从“INPUT1.DAT”中读取数据。准备工作完成以后,程序进入主体部分。
首先将结果数据偏移地址传送给DI,CX赋初值为N,原始数据偏移地址BX赋初值为0。在PRO段,将SOURCE[BX]中的内容送AX,所以第(1)空填写“SOURCE[BX]”。接着将AX中的数据送DX暂存,将DL和DH中的内容(即16位二进制数的高8位和低8位的值)进行逻辑“与”操作,结果存放于DL中,所以第(2)空填写“DL”。然后将AH和AL中的内容进行逻辑“或”操作,结果存放于AH中,第(3)空填写“OR”。将高8位和低8位逻辑“与”的结果(DL的内容)送AL,所以第(4)空填写“AL”。注意,此时AH中的内容为高8位和低8位逻辑“或”的结果。接着将地址指针BX加2,指向下一个16位二进制数。最后,将AX中的逻辑“或”和逻辑“与”的结果存入到字单元[DI]中,所以第(5)空填写“MOV [DI],AX”。
当处理完一个16位二进制数后,CX减1,若CX的内容不为0,则转向PRO段,继续处理下一个16位二进制数:若 CX内容为0,说明1016位二进制数已全部处理完。显然第(6)空应填写“DECCX”,用以实现循环计数。
看了请编制程序,其功能是:内存中连...的网友还看了以下:

左边两个数之和等於右边两个数的和,中间两个数的和是两边数的和的3倍,右边的3个数的和是左边一个数的 数学 2020-04-09 …

1、证明:在8*8的方格表的每个空格中,分别填上3,4,5这三个数中的任意一个,在每行,每列及每条 数学 2020-05-21 …

请帮忙告诉我几个相亲数和完美数完美数等于它全部真因数的和,如:6=1+2+3.相亲数:甲数是乙数的 其他 2020-05-23 …

假设学生在初中的数学成绩和高一数学成绩是线性相关的.现有10名学生的初中数学成绩(x)和高一数学成 数学 2020-07-13 …

简单的高中数学题!1.若a,b,c既是等差数列,又是等比数列,则a、b、c的关系是?2.(1)数列 数学 2020-07-24 …

将一个三位数的个位数与百位数交换位置,将所得到的数和原数相加,若两数的和中没有一个数字是奇数,则称 数学 2020-07-30 …

设三角形三内角的度数分别为x°,y,°z°,如果其中一个角的度数是另一个角的度数的2倍,那我们称数对 数学 2020-10-31 …

帮我完成3道VB题啊啊啊!全部回答正确给40分!第一题:利用随机函数产生[100,200]的随机整数 数学 2020-11-01 …

几道数学题,1.对于一个正整数n,若能找到正整数a和b,使得n=a+b+ab,则称n为一个“和积数” 数学 2020-11-19 …

小学数学题!求简便做法!讲一个数的所有约数两两求和,在所有的和中,最大的和是140,最小的和是4,那 数学 2020-11-26 …