汇编中CLD有什么用

发布网友

我来回答

1个回答

热心网友

CLD(CLear Direction flag)则是清方向标志位,也就是使DF的值为0,在执行串操作时,使地址按递增的方式变化,这样便于调整相关段的的当前指针。这条指令与STD(SeT Direction flag)的执行结果相反,即置DF的值为1。
;example:把当前数据段中偏移1000H开始
;的100个字节数据传送到偏移2000H开始的
;单元中

cld ;指针增值
push DS ;当前数据段,因此压入栈中保存
pop ES ;使ES=DS
mov SI,1000H ;源串指针初值
mov DI,2000H ;目的串指针初值
mov CX,100 ;循环次数
Next:
lodsb ;取一个字节
stosb ;存一个字节
loop Next ;循环CX次

;以下程序片段与上面的等价:

cld ;地址指针增值
……
mov CX,100 ;循环CX次
Next:
movsb ;每次传送一字节数据
loop Next

;或者用更简单的写法:
cld
……
mov CX,100
rep movsb

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com