本实验要求将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。
程序设计要点:获取数据源的段地址和偏移地址,将源地址的数据一个一个的复制到目的地址上去,直到字符串复制完成。传送数据的程序流程图如图 2-2-1 所示。
图 2-2-1 数据传送流程图
DATA SEGMENT ;定义数据段
MSR DB "HELLO,WORLD!$"
LEN EQU $- MSR
DATA ENDS
EXDA SEGMENT ;定义附加数据段
MSD DB LEN DUP(?)
EXDA ENDS
MYSTACK SEGMENT STACK ;定义堆栈段
DW 20 DUP(?)
MYSTACK ENDS
CODE SEGMENT ;定义代码段
ASSUME CS:CODE,DS:DATA,ES:EXDA
START: MOV AX,DATA
MOV DS,AX ;装载数据到 DS 中
MOV AX,EXDA
MOV ES,AX ;装载附加数据到 ES 中
MOV SI,OFFSET MSR ;设置 SI
MOV DI,OFFSET MSD ;设置 DI
MOV CX,LEN
NEXT: MOV AL,[SI] ;开始传输数据
MOV ES:[DI],AL
INC SI
INC DI
DEC CX
JNZ NEXT
PUSH ES
POP DS ;将附加段寄存器指向的段值赋给数据段寄存器
MOV DX,OFFSET MSD
MOV AH,9
INT 21H
KEY: MOV AH,1 ;判断是否有按键按下?
INT 16H ;(为观察运行结果,使程序有控制的退出)
JZ KEY
MOV AX,4C00H ;结束程序退出
INT 21H
CODE ENDS
END START