欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

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

时间:2017-08-26

请编制程序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 * * * *
相关推荐

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。