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

请编制程序PROG1.ASM,其功能是:以逻辑尺L变量对内存中连续存放着16个字的数进行去高字节操作:当L

题目

请编制程序PROG1.ASM,其功能是:以逻辑尺L变量对内存中连续存放着16个字的数进行去高字节操作:当L的i位为1则将第i数据的高字节置为全0,当L的i位为0则第i数据不变。将处理的结果存入RESULT指示的内存区。

例如:

设L=0005H

源数:1111H,2222H,3333H,4444H,5555H,6666H…

结果:0011H,2222H,0033H,4444H,5555H,6666H…

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

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

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

PROG1.ASM文件内容如下:

EXTRN LOAD:FAR,SAVE:FAR

N EQU 16

STAC SEGMENT STACK

DB 128 DUP(?)

STAC ENDS

DATA SEGMENT

L DW ?

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

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

MOV CX,2*(N+1) ;字节数

CALL LOAD ;从input1.dat文件中读取数据

;* * * * BECIN * * * *

LEA SI,SOURCE

_______

MOV CX,N

MOV DX,_____

LO: MOV AX,[SI]

_____ L,DX

_____ STORE

NOT AX

STORE: MOV [DI],AX

ADD DI,2

ADD SI,2

LOOP LO

;* * * * END * * * *

LEA DX,RES

参考答案
正确答案:;* * * * BEGIN * * * * LEA SISOURCE LEA DIRESULT ;取结果区首址 MOV CXN MOV DX1 ;定义递移检测位初值 LO: MOV AX[SI] TRST LDX ;测定当前数据的操作性质 JP STORE ;不操作 AND AX00FFH ;置高字节全0 STORE: MOV [DI]AX ADD DI2 ADD SI2 SHL DX1 ;递移检测位左移 LOOP 10 ; * * * * END * * * *
;* * * * BEGIN * * * * LEA SI,SOURCE LEA DI,RESULT ;取结果区首址 MOV CX,N MOV DX,1 ;定义递移检测位初值 LO: MOV AX,[SI] TRST L,DX ;测定当前数据的操作性质 JP STORE ;不操作 AND AX,00FFH ;置高字节全0 STORE: MOV [DI],AX ADD DI,2 ADD SI,2 SHL DX,1 ;递移检测位左移 LOOP 10 ; * * * * END * * * *
看了请编制程序PROG1.ASM,...的网友还看了以下: