试编制一个将字符串STR1传送到字符串STR2的调用程序与子程序(设两串无地址重叠)。并将STR2串送显示。
DATA SEGMENT
STR1 DB 'ABC' ;源串
N EQU $-STR1
STR2 DB N DUP(0),'$'
DATA ENDS
STAK SEGMENT STACK
DB 100 DUP(0)
STAK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX
PUSH DS
LEA SI,STR1
LEA DI,STR2
MOV CX,N
PUSH CX ;入口参数3进栈
PUSH DI ;入口参数2进栈
PUSH SI ;入口参数1进栈
CALL SMOVB
MOV AH,4CH
INT 21H
;子程序名:SMOVB
;功能:完成字符串传送,并显示STR2
;输入参数:源、目的串首址及字符串长度的SI,DI,CX进栈
;输出参数:在附加段中存放STR2开始的目的串
SMOVB PROC NEAR
POP BX ;取出断点地址偏移量
POP SI ;取出输入参数1
POP DI ;取出输入参数2
POP CX ;取出输入参数3
PUSH BX ;恢复断点保存,要关注断点地址
CLD ;增址方向
REP MOVSB ;重复串传送
LEA DX,STR2 ;9号功能的字符串显示
MOV AH,9
INT 21H
RET
SMOVB ENDP
CODE ENDS
END START