请教关于一个汇编程序段的问题……
来源:百度知道 编辑:UC知道 时间:2024/06/23 02:01:59
将数据区DATA1中的20个字节传送到DATA2区域内,用程序段实现:
MOV AX,DS
MOV ES,AX
LEA SI,DATA1
LEA DI,DATA2
MOV CX,20
REP MOVSB
HLT
其中前2个语句(即MOV AX,DS MOV ES,AX)有什么作用?为什么要将DS和ES都指向同一个位置呢?不用前两句行不行呢?谢谢!
MOV AX,DS
MOV ES,AX
LEA SI,DATA1
LEA DI,DATA2
MOV CX,20
REP MOVSB
HLT
其中前2个语句(即MOV AX,DS MOV ES,AX)有什么作用?为什么要将DS和ES都指向同一个位置呢?不用前两句行不行呢?谢谢!
首先你要弄清楚MOVSB这条指令。他把指针DS:SI所指向的字节传送给指针ES:DI所指向内存单元,并根据标志位DF对寄存器DI和SI作相应增减。因为你的DATA1和DATA2的段地址相同,只是偏移不同,所以才有了这个操作。
段与段不能直接传数据,需要用到寄存器,因此有了MOV AX,DS和MOV ES,AX