您的位置:首页 > 其它

STOSB指令的使用方法

2007-06-26 16:26 253 查看
;程序简要说明了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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: