本文目录一览

1,汇编语言std和cld指令是什么的缩写

set dfclear df
你说呢...

汇编语言std和cld指令是什么的缩写

2,微机原理中使用CLD命令DI和SI同时改变吗

CLD 是将方向标志DF复零,执行CLD之后,若后续指令中有含有SI,则SI自动递增;若后续指令中有含有DI,则DI自动递增。
需要吧

微机原理中使用CLD命令DI和SI同时改变吗

3,汇编语言中的cld是什么指令

清除方向标志,在字符串的比较,赋值,读取等一系列和rep连用的操作中,di或si是可以自动增减的而不需要人来加减它的值,cld即告诉程序si,di向前移动,std指令为设置方向,告诉程序si,di向后移动

汇编语言中的cld是什么指令

4,CLD汇编语言是什么意思

CLD,全称表达是CentralLivingDistrict,中文翻译就是中央生活区。还有一种是汇编语言CLD(cleardirection)清除方向标志,cld即告诉程序si,di向前移动,std指令为设置方向,告诉程序si,di向后移动。相反功能指令是STD,将方向标志位DF置1, 在字串操作中使SI或DI的地址指针自动递减,字串处理由后往前。扩展资料:CLD指令功能: 将标志寄存器Flag的方向标志位DF清零。 在字串操作中使变址寄存器SI或DI的地址指针自动增加,字串处理由前往后。 例如,以下三条指令执行后,SI自动加1,更新为0001H: CLD MOV SI,0000H LODSB ;将字串中的SI指针所指的一个字节装入AL. 又如,以下三条指令执行后,SI自动加2,更新为0102H: STD MOV SI,0100H LODSW ;将字串中的SI指针所指的一个字(双字节)装入AX. 参考资料来源:搜狗百科—汇编语言
清除方向标志,在字符串的比较,赋值,读取等一系列和rep连用的操作中,di或si是可以自动增减的而不需要人来加减它的值,cld即告诉程序si,di向前移动,std指令为设置方向,告诉程序si,di向后移动
CLD指令功能:将标志寄存器Flag的方向标志位DF清零。在字串操作中使变址寄存器SI或DI的地址指针自动增加,字串处理由前往后。例如,以下三条指令执行后,SI自动加1,更新为0001H:CLDMOV SI,0000HLODSB ;将字串中的SI指针所指的一个字节装入AL.又如,以下三条指令执行后,SI自动加2,更新为0102H:STDMOV SI,0100HLODSW ;将字串中的SI指针所指的一个字(双字节)装入AX.[知识引伸]:相反功能指令是STD,将方向标志位DF置1,在字串操作中使SI或DI的地址指针自动递减,字串处理由后往前。
你好!CLD (clear direction flag),本指令将DF设置为0,在执行串处理指令时,可使地址自动增量;靠!都被采纳的问题,怎么还给我看。记得给问豆啊!
CLD是清方向标志,把标识寄存器的D位置呈零

5,MOVSB和CLD的作用是什么

MOVSB是串处理指令,CLD是设置串处理指令的方向的IBM-PC汇编语言程序设计 上有详细的介绍,自己搜PDF看下吧,有书的话就直接看书,呵呵
先说说movsb(move string byte):即字符串传送指令,这条指令按字节传送数据。通过si和di这两个寄存器控制字符串的源地址和目标地址,比如ds:si这段地址的n个字节复制到es:di指向的地址,复制后ds:si的内容保持不变。而rep(repeat)指令就是“重复”的意思,术语叫做“重复前缀指令”,因为既然是传递字符串,则不可能一个字(节)一个字(节)地传送,所以需要有一个寄存器来控制串长度。这个寄存器就是cx,指令每次执行前都会判断cx的值是否为0(为0结束重复,不为0,cx的值减1),以此来设定重复执行的次数。因此设置好cx的值之后就可以用rep movsb了。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

6,汇编中关于字符串操作的指令

例子就没有了 以下希望能有所帮助1 串传送指令:DF决定DI增减当DF=0时(由CLD指令设置),按增量修改;若DF=1(由STD指令设置),按减量修改。格式: MOVS 目的串,源串MOVSB ;字节操作MOVSW ;字操作功能: [ES:DI] ← [DS:SI]SI ← SI±1,DI ← DI±1 (字节操作) 或SI ← SI±2,DI ← DI±2 (字操作)2 串比较指令:将由SI作为指针的源串中的一个元素(字节或字)与由DI为指针的目的串的相应元素相比较(源串减去目的串,结果不送回目的串,但影响标志位)格式: CMPS 源串,目的串CMPSB ;字节操作CMPSW ;字操作功能: [DS:SI] - [ES:DI]SI ← SI±1,DI ← DI±1 (字节操作) 或SI ← SI±2,DI ← DI±2 (字操作)3 串扫描指令:将AL或AX的内容减去由DI作为指针的目的串元素,结果影响标志寄存器,但AL/AX内容不变。格式: SCAS 目的串SCASB ;字节操作SCASW ;字操作功能: AL/AX - [ES:DI] DI ← DI±1(字节操作) 或 DI ← DI±2(字操作)4 串送存指令:将AL或AX的内容传送到由DI作为指针的目的串中,然后自动修改地址指针,指向下一元素。格式: STOS 目的串STOSB ;字节操作STOSW ;字操作功能: [ES:DI] ← AX/AL DI ← DI±1(字节操作) 或 DI ← DI±2(字操作)
字符串操作指令是对一片连续存储单元进行处理,这片存储单元是由隐含指针DS:SI或ES:DI来指定的。字符串操作指令可对内存单元按字节、字或双字进行处理,并根据操作对象的字节数使变址寄存器SI(或DI)增减1、2或4。具体规定如下: (1)、当DF=0(由CLD指令设定)时,变址寄存器SI(或DI)增加1、2或4; (2)、当DF=1(由STD指令设定)时,变址寄存器SI(或DI)减少1、2或4。LODS、STOS、MOVS、INS、OUTS、CMPS、SCAS-----------------------------------------1、读字符串数据指令(Load String Instruction) 从由指针DS:SI所指向的内存单元开始,取一个字节、字或双字进入AL、AX或EAX中,并根据标志位DF对寄存器SI作相应增减。该指令的执行不影响任何标志位。 指令格式:LODS类型标识LODSBLODSW LODSD ;80386+ LODS根据其类型标识的属性来决定读取存储单元的大小并将SI相应增减。 -----------------------------------------2、写字符串数据指令(Store String Instruction) 该指令把寄存器AL、AX或EAX中的值存于以指针ES:DI所指向内存单元为起始的一片存储单元里,并根据标志位DF对寄存器DI作相应增减。该指令不影响任何标志位。 指令格式:STOS类型标识 STOSBSTOSW STOSD ;80386+-----------------------------------------3、字符串传送指令(Move String Instruction) 该指令把指针DS:SI所指向的字节、字或双字传送给指针ES:DI所指向内存单元,并根据标志位DF对寄存器DI和SI作相应增减。该指令不影响任何标志位。 指令格式:MOVS类型标识MOVSBMOVSW MOVSD ;80386+-----------------------------------------4、输入字符串指令(Input String Instruction)该指令从某一指定的端口接受一个字符串,并存入一片存储单元之中。输入端口由DX指定,存储单元的首地址和读入数据的个数分别由ES:DI和CX来确定。在指令的执行过程中,还根据标志位DF对寄存器DI作相应增减。该指令不影响任何标志位。与指令有关的操作数ES、DI、DX和CX等都是隐含操作数。指令格式:INS类型标识INSBINSWINSD ;80386+-----------------------------------------5、输出字符串指令(Output String Instruction)该指令把一个字符串输入到指定的输出端口中。输出端口由DX指定,其输出数据的首地址和个数分别由DS:SI和CX来确定。在指令的执行过程中,还根据标志位DF对寄存器SI作相应增减。该指令的执行不影响任何标志位。与指令有关的操作数DS、SI、DX和CX等都是隐含操作数。指令格式:OUTS类型标识OUTSB/OUTSWOUTSD ;80286+-----------------------------------------6、字符串比较指令(Compare String Instruction)该指令把指针DS:SI和ES:DI所指向字节、字或双字的值相减,并用所得到的差来设置有关的标志位。同时,变址寄存器SI和DI也将根据标志位DF的值作相应增减。指令格式:CMPS类型标识CMPSBCMPSWCMPSD ;80386+受影响的标志位:AF、CF、OF、PF、SF和ZF-----------------------------------------7、字符串扫描指令(Scan String Instruction)该指令用指针ES:DI所指向字节、字或双字的值与相应的AL、AX或EAX的值相减,用所得到的差来设置有关标志位。同时,变址寄存器DI还将根据标志位DF的值进行增减。指令格式:SCAS类型标识SCASBSCASWSCASD ;80386+受影响的标志位:AF、CF、OF、PF、SF和ZF
此程序可以增加灵活性,可以输入要修改的位置及修改成什么字符,并将修改前后的内容输出对比。 data segment msg1 db "source string is:$" s db "0000h", 0dh,0ah,"$" msg2 db 0dh,0ah, "please input a location(0-3):$" msg3 db 0dh,0ah, "please input a char:$" msg4 db 0dh,0ah, "destination string is:$" data ends code segment assume ds:data,cs:code start: mov ax,data mov ds,ax lea dx,msg1;显示原串 mov ah,9 int 21h lea dx,s mov ah,9 int 21h lea dx,msg2;输入想修改原串哪个位置 mov ah,9 int 21h next: mov ah,1 int 21h sub al,30h;位置在0-3之间 jz next cmp al,3 ja next mov ah,0 lea si,s add si,ax;用si表示要修改的实际地址 lea dx,msg3;输入想修改成的字符 mov ah,9 int 21h mov ah,1; int 21h mov [si],al;将指定位置修改成指定字符 lea dx,msg4;显示目的串 mov ah,9 int 21h lea dx,s mov ah,9 int 21h mov ah,1;按任意键终止 int 21h mov ax,4c00h;结束程序 int 21h code ends end start
LODS是用来取指令和字符的,基本就是用来取内存的数据!其中SB是按字节取,sw按字取,sd是按双字取!这个指令基本不与rep一起用。mov al soucre[si]lodsb这里吧指令取了以后放在AL中,让字去以后放在ax中,双字则放在DX:AX中STOB显然是存指令的,而stosb是按字节存,sw是按字存,sd是按双字存!比如stosb则是与lodsb相反,他把al中的内容放在目标寄存器里!其他的都差不多!!!呵呵,这个主要是自学,做几个题!!!自己慢慢就懂了!

文章TAG:cld指令  汇编语言std和cld指令是什么的缩写  
下一篇