DF标志和串移动指令(movsb/movsw)

1.标志寄存器的第10位DF,方向标志位。在串处理指令中,控制每次操作后si,di的增减

DF=0,每次操作后,si、di增加

DF=1,每次操作后,si、di减小

我们可以用汇编语法描述movsb的功能如下:

mov es:[di],byte ptr ds:[si]   ;8086不支持这样的指令,仅做描述之用

如果DF=0:inc si

inc di

如果DF=1:dec si

dec di

可以看出,movsb的功能是将ds:si指向的内存单元中的字节送入es:di中,然后根据标志寄存器DF位的值,将si和si递增或者递减。

2.rep

一般来说,movsb都和rep配合使用,格式如下:rep movsb

用汇编语法来描述:

s:mov sb

loop s

可见rep的作用就是根据cx的值,重复执行后面的串传送指令。由于没执行一次movsb将si/di都会递增或者递减一个内存单元,则rep movsb可以循环实现(cx)个字符的传送

DF标志和串移动指令(movsb/movsw),布布扣,bubuko.com

时间: 2024-10-10 23:07:00

DF标志和串移动指令(movsb/movsw)的相关文章

DF标志和串传送指令

DF标志和串传送指令 flag的第10位是DF,方向标志位.在串处理指令中,控制si.di的递减. df = 0 每次操作后si.di递增 df = 1 每次操作后si.di递减 串传送指令 格式1: movsb 功能描述 1. ((es)*16+di) = ((ds)*16+si) 2. 如果 df=0 则: (si)=(si)+1 (di)=(di)+1 如果 df=1 则: (si)=(si)-1 (di)=(di)-1 C语言描述 // si,di 相当于C语言循环中 i,j 变量的功能

汇编实现: C库常见函数,串操作指令作用

目录 汇编实现: C库常见函数 一丶汇编实现Strncpy拷贝函数 汇编实现: C库常见函数 一丶汇编实现Strncpy拷贝函数 void __asmStrncpy(char *des,char *src,int len) { __asm { mov edi,[ebp + 8]; //获取局部变量地址 des mov esi,[ebp + 0xc]; //获取局部变量地址 src mov ecx,len; //使用movs指令,需要给ecx长度 cld //设置DF = 0; 内存方向, 此时e

stos 串存储指令

stos 包括 stosb   stosw   stosd, 涉及的寄存器是eax, edi, 功能如下: stosb    将al中的值复制到 byte ptr es:[edi] 中, 同时edi++ stosw    将ax中的值复制到 word ptr es:[edi] 中, 同时edi++ stosd    将eax中的值复制到 dword ptr es:[edi] 中, 同时edi++ 例子: int a[0x22] = {0};    //平时习惯的初始化方法,  但由于汇编时调用了

标志寄存器综述

转载自: http://www.cnblogs.com/dennisOne/archive/2012/10/23/2736238.html ?标志寄存器综述 8086CPU的标志寄存器(flags Register, FR)有16位,其中存储的信息通常被称为程序状态字(PSW),flag寄存器与其他寄存器不同,flag寄存器是按位起作用的.8086的flag寄存器中有CF.PF.ZF.SF.OF.DF标志位. 8086的FR的9个标志位 标志位 名称 功能 ZF 零标志位(Zero Flag)

汇编语言学习第十一章-标志寄存器

本博文系列参考自<<汇编语言>>第三版,作者:王爽 8086CPU的标志寄存器有16位,其中存储的信息通常被称为程序状态字(PSW).除了前面介绍的寄存器.本博文将介绍最后一个寄存器,标志寄存器.不同于之前的寄存器,标志寄存器是按位起作用的.其每一位都有特殊的含义. 8086标志寄存器的结构如下图所示: 标志寄存器的1,3,5,12,13,14,15都没有特殊含义.其0,2,4,6,7,8,9,10,11用作标志位使用. 11.1 ZF标志(zeros flag) 标志寄存器第6位

王爽汇编笔记

  第一章 内存地址空间的地址段分配 地址:0~7FFFH的32kb空间为主随机存储器的地址空间 地址:8000~9FFFH的8kb空间为显存地址空间 地址:A000~FFFFH的24kb空间为各个rom的地址空间   第二章 进入DOS模式 重新启动计算机,进入DOS模式,此时进入的是实模式的DOS 在Windows中进入DOS方式,此时进入的是虚拟8086模式的DOS   使用命令 -R 查看寄存器内容 -R 寄存器 可以修改寄存器的内容 -D查看内存中的内容 –D 段地址:偏移地址 输入后

[转]汇编语言:MOVSB,MOVSW,MOVSD

汇编语言:MOVSB,MOVSW,MOVSD 转自: http://blog.csdn.net/zhenyongyuan123/article/details/8364011 目前80386系列的处理器提供几组处理字节.字和双字数值的指令,尽管这些指令成为基本字符串指令,但他们的用法并不局限于字符数组. 指令:                                                MOVSB, MOVSW, MOVSD                           

复习8086汇编指令

CLI :clear InterupetSTI :set InterupetCLD:clear DirectorSTD:set Director:::::::::::::::::::CLI和STI是屏蔽中断和设置中断用的.CLD与STD是用来操作方向标志位DF(Direction Flag).CLD使DF复位,即DF=0,STD使DF置位,即DF=1.用于串操作指令中.CLD是使得传送方向从低地址到高地址,而STD就刚好相反了. 原文地址:https://blog.51cto.com/13652

x86—EFLAGS寄存器详解[转]

鉴于EFLAGS寄存器的重要性,所以将这一部分内容从处理器体系结构及寻址模式一文中单独抽出另成一文,这部分内容主要来自Intel Developer Mannual,在后续的内核系列中遇到的许多和EFLAGS寄存器有关的内容将直接从本文引用.众所周知,IA-32体系结构为通用系统(general system)提供了16个基本的程序执行寄存器:包含一些通用目的寄存器(General-purpose registers).段寄存器(Segment registers)以及EFLAGS和EIP寄存器