;程序简要说明了stosb指令的功能,并演示了其执行效果
;源数据段,对应DS
DATAS SEGMENT
STRS DB 'HELLO!'
DATAS ENDS
;目标数据段,对应ES
DATAD SEGMENT
STRD DB 6 DUP('D')
DATAD ENDS
;堆栈段
STACKS SEGMENT
DB 256 DUP(0)
STACKS ENDS
;字符显示宏指令的定义
DISP_CH MACRO ascii
mov ah, 2
mov dl, ascii
int 21h
ENDM
;换行宏
NEXT_LINE MACRO
DISP_CH 0DH
DISP_CH 0AH
ENDM
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS,ES:DATAD
START:
MOV AX,DATAS
MOV DS,AX
MOV AX,DATAD
MOV ES,AX
CLD
;填充目标数据段
MOV CX,6H
XOR DI,DI
MOV AL,'$'
REP STOSB ;使用ES:DI
;显示源数据段
MOV CX,6H
MOV SI,OFFSET STRS
SHOW_SD:
DISP_CH DS:[SI]
INC SI
LOOP SHOW_SD
;换行
NEXT_LINE
;显示目标数据段
MOV CX,6H
MOV DI,OFFSET STRD
SHOW_DD:
DISP_CH ES:[DI]
INC DI
LOOP SHOW_DD
MOV AH,4CH
INT 21H
CODES ENDS
END START
;运行结果:
HELLO!
$$$$$$
Press any key to continue
如果注释掉下面的模块:
;填充目标数据段
MOV CX,6H
XOR DI,DI
MOV AL,'$'
REP STOSB ;使用ES:DI
则运行结果为:
HELLO!
DDDDD
Press any key to continue