您好、欢迎来到现金彩票网!
当前位置:2019正版免费全年资料 > 通道命令字 >

汇编语言---字符串操作指令

发布时间:2019-06-12 04:01 来源:未知 编辑:admin

  字符串操作指令的实质是对一片连续的存储单元进行处理,这片连续的存储单元由隐含指针DS:SI或ES:DI来指定;字符串操作指令可对内存单元按照字节、字、双字进行处理,并能根据操作对象的字节数使变址寄存器SI/DI增加或减少1、2、4字节;

  A.当DF=0时,变址寄存器SI/DI增加1、2、4字节;即:变址寄存器SI/DI递增的步长可以是1、2、4字节;

  B.当DF=1时,变址寄存器SI/DI减少1、2、4字节;即:变址寄存器SI/DI递减的步长可以是1、2、4字节;

  从指针DI:SI所指定的内存单元开始,取一个字节/字/双字,然后存入到AL/AX/EAX中,并根据标志位DF的值对寄存器SI做相应的增减;把存放字符串数据的连续存储区当做是数据源,使用寄存器SI;

  在指令LODS中,它会根据地址表达式的属性来决定读取一个字节、字或双字;即:当该地址表达式的属性为字节、字或双字时,将从指针DI:SI处读取一个字节到AL中,或读取一个字到AX中,或读取一个双字到EAX中,与此同时,SI还将分别增减1、2、4字节;

  该指令把寄存器AL/AX/EAX中的值存入指针ES:DI所指向内存单元开始的一片存储单元中,并根据标志位DF的值对寄存器DI做相应的增减;把存放字符串的连续存储区当做是数据的目的地,使用寄存器DI;

  该指令把指针DS:SI所指向的字节、字或双字传送给指针ES:DI所指向的内存单元,并根据标志位DF的值对寄存器DI和SI分别作相应的增减;

  四、输入字符串指令(Input String Instruction)

  该指令是从某一指定端口接受一个字符串,并存入到一片连续的存储单元中;输入端口由寄存器DX指定,存储单元的首地址由指针ES:DI来确定,读入的数据个数由寄存器CX来确定;在指令的执行过程中,还要根据标志位DF的值来对寄存器DI做相应的增减;把存放字符串的连续存储区当做是数据的目的地;

  该指令是把一个给定的字符串输出到一个指定的端口中;输出端口由通用寄存器DX指定,输出数据的首地址由指针DS:SI确定,输出数据的个数由计数寄存器CX来确定;在指令执行的过程中,还要根据方向标志DF的值来对变址寄存器SI做相应的增减;

  该指令是把指针DS:SI所指向的字节、字、双字的值与指针ES:DI所指向的字节、字、双字的值相减,并用所得到的差来设置相关标志位;与此同时,变址寄存器SI和DI也将根据方向标志位DF的值做相应的增减;

  该指令是用指针ES:DI所指向字节/字/双字的值与相应的AL/AX/EAX的值相减,并依据所得到的差值来设置相关标志位;与此同时,变址寄存器DI还将根据方向标志DF的值来做相应的增减;

  前面的字符串操作指令:取字符串数据、置字符串数据、字符串传送、输入字符串、输出字符串、字符串比较、字符串扫描,等指令,都是执行一次所具有的功能;但是,每个字符串通常都是由多个字符组成的,所以,需要重复执行这些字符串操作指令;为了满足这种需要,指令系统提供了一组重复前缀指令;

  虽然在这些字符串指令的前面都可以添加一个重复前缀指令,但是由于指令执行结果的差异,对某个具体的字符串指令又不用重复前缀指令而改用其它循环来实现重复的需要;

  重复前缀指令是重复其后指定的字符串操作指令,重复的次数由计数寄存器CX来决定;

  STEP3:否则,CX=CX-1(不影响相关标志位),并执行重复前缀指令后面指定的字符串操作指令,在该指令执行完后,再转到步骤STEP1;

  从上面的重复前缀指令格式来看,虽然我们可以使用重复前缀指令来重复取字符串数据指令(第一组指令),但是可能会因为指令的执行结果而在程序中几乎不会使用;

  例如:编写一段程序,计算字符串12345abcdefg中各个字符的ASCII之和;

  从程序片段中看,虽然REP LODSB能从字符串中逐一取出每个字符,但这个操作是在同一条指令中完成的,程序的其它指令根本无法处理每次取出的字符数据,指令的执行结果是:AL中只保存了最后一次取出的字符h的ASCII码;

  所以,为了实现本例的要求,不能使用重复前缀指令,而要把指令REP LODSB改写成如下四条指令:

  条件重复前缀指令与重复前缀指令的功能相似,所不同的是:条件重复前缀指令中的重复次数不仅由CX来决定,而且还会由标志位ZF的值来决定;根据ZF所起的作用又可分为两种:相等重复前缀指令和不等重复前缀指令;

  STEP3:否则,CX=CX-1(不影响任何标志位),并执行重复前缀指令后面指定的字符串操作指令,在该指令执行后,再转到步骤STEP1;

  80X86汇编提供的字符串操作指令,每次只能处理一个字或字节,所以需要提供一个循环。而8086提供了一个“重复前缀”REP,REP重复执行后面的串操作指令,每一次执行,都先判断CX是否为0,如果CX为...博文来自:joney526的专栏

  【版权声明:尊重原创,转载请保留出处:shallnet,文章仅供学习交流,请勿用于商业用途】    在计算机操作的最底层,所有计算机处理器都按照制造厂商在处理器内部定义的二...博文来自:程序猿的挨踢人生

  在计算机中,大部分数据存放在主存中,8086CPU提供了一组处理主存中连续存放的数据串的指令——串操作指令。串操作指令中,源操作数用寄存器SI寻址,默认在数据段DS中,但允许段超越;目的操作数用寄存器...博文来自:龍卷風的专栏

  REPNZ用作为一个串操作指令的前缀,它重复气候的串操作指令动作。没重复一次CX的值减一,重复一直进行到CX为0,获知串操作指令使零标志ZF为1时止。重复操作指令REPNZ主要用在字符串扫描指令SCA...博文来自:joney526的专栏

  来自:在计算机中,大部分数据存放在主存中,8086CPU提供了一组处理主存中...博文来自:tenfyguo的技术专栏

  字符串操作首先明确什么是字符串:字符串是字符的一个序列,对字符串的操作处理包括复制、比较和检索等,为了有效地处理字符串,IA-32系列处理器有专门处理字符串的指令,称之为字符串操作指令,简称为串操作指...博文来自:ai-exception的博客

  汇编语言之串处理操作基础知识SHL为逻辑座椅命令,其中OPR为寄存器或者内存单元,移位次数可以是1或者CL寄存器,如需移位的次数大于1,则可以在该移位指令前把移位次数先送CL寄存器中。LOOP为循环指...博文来自:Pengwills Blog

  串操作指令1,串传送指令MOVS2,串装入指令LODS3,串送存指令STOS4,串比较指令CMPS5,串扫描指令SCAS串操作指令的特征是对数据块(字符串或数值串)进行操作,并且其中部分指令可以两个操...博文来自:Leonards Blog

  汇编语言指令大全最新发布完整版一、数据传输指令───────────────────────────────────────它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. 1.通用数据传送指...博文来自:huangkangying的专栏

  From:一、数据传输指令它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.1...博文来自:My growing road~

  对于在学习汇编的人来说,不知道英文全称就去记一些常用的汇编指令,感觉还是很纠结的,所以,整理了一份简要的汇编指令英文全称,供参考。汇编语言指令英文全称 1.通用数据传送指令MOV----moveMO...博文来自:oBuYiSeng的博客

  本文参考了马维华老师的《微机原理与接口技术》一书指令格式:MUL    REG/MEM   ;REG寄存器,MEM存储器IMUL  REG/MEM   MUL和IMUL指令分别用于实现无符号数的乘法和...博文来自:Betterc5的博客

  1000/100除数:    分8位和16位,存放在reg(寄存器)或内存单元被除数:    分16位和32位    被除数为16位,则除数为8位,被除数默认存放在AX中;    被除数为32位,则除...博文来自:Hohongs Blog

  本博文系列参考自第三版,作者:王爽call与ret都是转移指令,它们可以改变IP值,或者同时改变CS与IP的值,往往在程序中使用它们进行子程序模块的设计。10.1 ret和retfret用栈的数据修...博文来自:vpoet

  汇编语言(王爽)中,讲CS:I[寄存器的地方有这样一则图示:其中IP=IP+所读指令的字节数。那么,所读指令的字节数应该怎么判断呢?汇编指令长度与寻址方式有关,规律或原则如...博文来自:的博客

  汇编指令系统具体指令系统细节,在该网盘链接里:链接:密码:2jh2...博文来自:the growth of Nick

  跳转指令分三类:一、无条件跳转:JMP;二、根据CX、ECX寄存器的值跳转:JCXZ(CX为0则跳转)、JECXZ(ECX为0则跳转);三、根据EFLAGS寄存器的标志位跳转,这个太多了.根据标志位跳...博文来自:Puzzle的专栏

  (一)显示内存单元内容的命令D格式(1):-D地址从指定地址开始,显示128个字节的内容,每一行的左边显示段内偏移地址,接着显示16个单元的内容,最右边区域则显示这一行的16个单元所对应的可显示的字符...博文来自:的博客

  int指令是X86汇编语言中最重要的指令之一。它的作用是引发中断,调用“中断例程”(interruptroutine)。本文将介绍int指令的基本原理和应用,以及BIOS和DOS系统的中断例程。一、i...博文来自:Sagittarius_Warrior的博客

  ARM汇编语言最常用指令一、ARM汇编语言的特点:1.所有运算处理都是发生通用寄存器(一般是R0~R14)的之中.所有存储器空间(如C语言变量的本质就是一个存储器空间上的几个BYTE)的值的处理,都是...博文来自:何哥的博客

  汇编语言中,CPU对外设的操作通过专门的端口读写指令来完成;读端口用IN指令,写端口用OUT指令。例子如下:INAL,21H;表示从21H端口读取一字节数据到ALINAX,21H;表示...博文来自:积累点滴,保持自我

  本博文系列参考自第三版,作者:王爽1.[bx]和内存单元的描述[bx]与我们前面见过的[0]类似,movax,[0]的意思是将内存地址为DS:0的两字节内容存入ax中。其中[0]中的0代表的是偏移地...博文来自:vpoet

  跳转指令分三类:一、无条件跳转:JMP;二、根据CX、ECX寄存器的值跳转:JCXZ(CX为0则跳转)、JECXZ(ECX为0则跳转);三、根据EFLAGS寄存器的标志位跳转,这个太多了.根据标志位跳...博文来自:拒绝修仙拒绝睡的博客

  from: 指令中断信息可以来自CPU的内部和外部,当CPU的内部有...博文来自:fivedoumi的专栏

  本篇介绍汇编程序功能、伪操作及汇编语言的指令格式。博文来自:CherryWang1997的博客

  现在在学习汇编,感觉挺有意思的!,我就把学习的东西写下来吧,当作以后可以学习的笔记~   loop指令的格式是:loop标号,cpu执行loop指令的时候,要进行两步操作1:(cx)=(cx)-1  ...博文来自:熊尧的专栏

  call、ret指令,本质上还是汇编『跳转指令』,它们都用于修改IP,或同时修改CS和IP;这两个指令经常被用来实现子程序的设计ret指令和retf指令ret指令用栈中的数据,修改IP的内容,从而实现...博文来自:清风阁

  指令和数据是应用上的概念,在内存或磁盘中,指令与数据没有任何区别,都是二进制信息。二进制信息:0--89D8H数据0--MOVAX,BX...博文来自:放心飞吧

  移位指令是一组经常使用的指令,包括:算数移位、逻辑移位、双精度移位、循环移位、带进位的循环移位;移位指令都有一个指定需要移动的二进制位数的操作数,该操作数可以是立即数,也可以是CL的值;在8086中,...博文来自:fivedoumi的专栏

  cmp是比较指令,cmp的功能是相当于减法指令,只是不保存结果.cmp指令执行后,将对标志寄存器产生影响.其他相关指令通过识别这些被影响的标志寄存器来得知比较结果.cmp指令格式:cmp 操作对象1,...博文来自:zer1123的博客

  本章围绕“mov”、”add”、”sub”指令展开讲解,旨在为后续学习更高级的语法和指令做一个好的铺垫:)mov指令已学的mov指令的几种形式:mov寄存器立即数mov寄存器寄存器mov寄存器内存单元...博文来自:清风阁

  汇编语言教程-返回指令(RET)当子程序执行完时,需要返回到调用它的程序之中。为实现此功能,指令系统提供了一条专用的返回指令。其格式如下:RET/RETN/RETF[Imm]子程序的返回在功能上是子程...博文来自:diligentcat的专栏

  中self用法详解) 写的很不错,推荐看一看...博文来自:CSDN5529的博客

  最近比较有空,大四出来实习几个月了,作为实习狗的我,被叫去研究Docker了,汗汗! Docker的三大核心概念:镜像、容器、仓库 镜像:类似虚拟机的镜像、用俗话说就是安装文件。 容器:类似一个轻量...博文来自:我走小路的博客

  本篇文章是根据我的上篇博客,给出的改进版,由于时间有限,仅做了一个简单的优化。相关文章:将excel导入数据库2018年4月1日,新增下载地址链接:点击打开源码下载地址十分抱歉,这个链接地址没有在这篇...博文来自:Lynn_Blog

  多重背包问题:有N种物品和容量为V的背包,若第i种物品,容量为v[i],价值为w[i],共有n[i]件。怎样装才能使背包内的物品总价值最大?网上关于“多重背包”的资料倒是不少,但是关于怎么实现O(N*...博文来自:flyinghearts的专栏

  学事件分发是为了什么呢?还不是为了解决滑动冲突的。 实际上,如果仅仅是为了解决滑动冲突的,大可不必看源码,只需要掌握事件分发的外在规律即可。 只要记住这张图,再明白内部拦截法和外部拦截法,滑动冲突...博文来自:的博客

  本文主要介绍代码注入攻击的一种特殊类型:XPath 盲注。 如果您不熟悉 XPath 1.0 或需要了解基础知识,请查看 W3 Schools XPath 教程。您还可以在 developerWor...博文来自:WEB安全测试学习中……

  最近项目在使用树莓派,需要在树莓派上挂载多个USB转串口模块,但是linux下识别USB设备通常是按照插入顺序命名的,比如第一个插入就是USB0第二个USB1如此类推。。。这样就给我们写脚本或者写程序...博文来自:-Yo Law-

  在之前两次章我们都已经 说完了对 信息读写 和核验的操作, 那么剩余的类其实 有只用调用方法即可, 如果不会的可以看 JAVA小项目-银行管理系统(图形化界面)4-验证 博文来自:知足常乐的博客

  数据分析之 – 离群值(Outliers)   一:什么是Outliers Outliers是统计学专业术语,是指相比一组数据中的其它数据的极限值   二:极限值意味什么  1. 决定...博文来自:关注微信公众号【OpenCV学堂】

  扫二维码关注,获取更多技术分享 本文承接之前发布的博客《 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付》必须阅读上篇文章后才可以阅读这篇文章。由于最近一段时间工作比较忙,...博文来自:Marswill

  基本功能1. 自定义标题栏。(标题栏不做任何功能)2. 有左右发送按钮。(这个只能自己和自己聊天哦,所以有左右发送按钮) (1)点击左边按钮发送按钮,在ListView的左侧显示。 (...博文来自:To_be_Designer

  jquery/js实现一个网页同时调用多个倒计时(最新的) 最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦! //js ...博文来自:Websites

  强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量   使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点)   定义: int Ti...博文来自:九野的博客

  MATLAB编程题 题目描述:从一个NxM的矩阵C中找出与1xM的矩阵P欧氏距离最小的某一行row,要求不能用循环!!! 输入:矩阵C(NxM)、矩阵P(1xM) 输出:row 解题思...博文来自:henryzhihua

  command窗口是命令窗口,即为sqplus窗口,有命令提示符,识别sqlplus命令,基本的命令都可以执行 sql仅可执行DDL、select、DML等...博文来自:Ape55的博客

  zmcochun:你好,我们正在做一款亚马逊saas系统,需要招开发人员,看到你有亚马逊方面的开发经验,能否聊聊?vx

http://disyu.com/tongdaominglingzi/293.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有