一、实验目的
1、了解内存中数据块移动方法。
2、掌握分支程序的设计。
二、实验内容
设计一通用数据块间数据搬移程序。
三、编程指南
程序要求把内存中一数据区(称为源数据块)传送到内存另一数据区(称为目的数据块)。源数据块和目的数据块在存贮中可能有三种情况,如下图所示。
对于两个数据块分离的情况,如图(a),数据的传送从据块的首址开始,或者从数据块的末址开始均可。但对于有部分重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭破坏。
可以得出如下结论:当源数据块首址大于目的块首址时,从数据块首地址开始传送数据。当源数据块首址小于目的块首址时,从数据块末址开始传送数据。
四、实验程序框图
五、实验步骤
联机模式:
(1)在源数据块4000H~4FFFH中首址、末址几个单元,填入几个标志性字节,按下MON键,返回P状态。
(2)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开598K8ASM文件夹,点击S8.ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译装载,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。
(3复位RST键,查看目的数据块4100H~4FFFH数据是否和源数据块4000H~4FFFH单元相一致。
脱机模式:
⑴在P.态下,按SCAL键,然后在源数据块4000H~4FFFH中首址、末址几个单元,填入几个标志性字节,按下MON键,返回P状态。
⑵在P.态下,输入2EF0,按EXEC键。
⑶复位RST键,查看目的数据块4100H~4FFFH数据是否和源数据块4000H~4FFFH单元相一致。
六、实验程序清单
CODE SEGMENT ;S8.ASM
ASSUME CS:CODE ;MOV RAM:4000-40FFH TO 4100-41FFH
ORG 2EF0H
START: MOV CX,0100H ;数据长度
MOV SI,4000H ;源首址
MOV DI,4100H ;目首址 ;
CMP SI,DI ;比较源,目首址大小
JA FADR ;SI>DI FADR
ADD SI,CX ; 源末址+1
ADD DI,CX ;目末址+1
DEC SI
DEC DI
CON1: MOV AL,[SI] ;取源数
MOV [DI],AL ;写目数
DEC SI ;源址减1
DEC DI ;目址减1
DEC CX ;长度减1
JNE CON1 ;未完继续
JMP $
FADR: MOV AL,[SI] ;取源数
MOV [DI],AL ;写目数
INC SI ;源址加1
INC DI ;目址加1
DEC CX ;长度加1
JNE FADR ;未完继续
JMP $
CODE ENDS
END START