汇编语言指令集之串处理指令讲解

串处理指令

串处理指令分类情况如下:

指令类型
MOVS move string 传传送
CMPS compare string 串比较
SCAS scan string 串扫描
LODS load from string 从串取
STOS store in to string 存入串
INS input from port to string 串输入
OUTS output string to port 串输出
REP repeat 重复
REPE/REPZ repeat while equal/zero 相等/为零则重复
REPNE/REPNZ repeat while not equal/zero 不相等/不为零则重复

1.MOVS

格式:
   MOVS  DST,SRC
   MOVSB  (字节)
   MOVSW   (字)
   MOVSD  (双字)(386及其后继机型可用)
 
用法:
  指令可以把SI指向的数据段中的一个字节、字或双字(DS:SI)传递到由DI指向的附加段中的一个字节、字或双字(ES:DI)中去,不影响条件标志位,并根据DF以及数据格式对SI和DI进行修改。

2.CMPS

格式:
   CMPS  SRC,DST
   CMPSB  (字节)
   CMPSW   (字)
   CMPSD  (双字)(386及其后继机型可用)
 
用法:
  指令把DS:SI指向的存储单元中的数据与ES:SI指向的存储单元中的数据相减,不保存结果但影响条件标志位,并根据DF的值对SI和DI进行修改。

3.SCAS

格式:
   SCAS     DST
   SCASB  (字节)
   SCASW   (字)
   SCASD  (双字)(386及其后继机型可用)
 
用法:
  指令把AL、AX或EAX中的数据与ES:DI指向的存储单元中的数据相减,不保存结果但影响条件标志位,并根据DF的值对SI和DI进行修改。

4.LODS

格式:
   LODS     SRC
   LODSB  (字节)
   LODSW   (字)
   LODSD  (双字)(386及其后继机型可用)
 
用法:
  指令把DS:SI指向的存储单元中的数据送到AL、AX或EAX中,并根据条件标志位DF的值和数据类型来修改SI。

5.STOS

格式:
   STOS     DST
   STOSB  (字节)
   STOSW   (字)
   STOSD  (双字)(386及其后继机型可用)
 
用法:
  指令把AL、AX和EAX中的内容存入由DS:SI指向的存储单元,并根据DF的值及数据类型修改SI。

6.INS

格式:
   INS  DST,DX
   INSB  (字节)
   INSW   (字)
   INSD  (双字)(386及其后继机型可用)
 
用法:
  指令把端口在DX寄存器中的I/O空间的数据送到由ES:DI指向的存储单元,并根据DF的值和数据类型修改DI。

7.OUTS

格式:
   OUTS  DX,SRC
   OUTSB  (字节)
   OUTSW   (字)
   OUTSD  (双字)(386及其后继机型可用)
 
用法:
  指令把由DS:SI指向的存储单元中的数据送到端口号在DX寄存器中的I/O端口中,并根据DF的值和数据类型改变SI。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 汇编语言环境搭建软件与教程

    1.编写汇编程序需要的环境: 1]dosbox 2]masm 上面两个软件打包下载:https://www.jb51.net/softs/709793.html 2.搭建步骤: 1]下载dosbox 2]安装dosbox 下载的dosbox解压: 运行exe,一直下一步即可: 3]下载masm masm用来编译汇编程序: 到网上搜索下载即可: 解压目录如下: 将解压masm,将文件放在特定的目录下: 例如:D:\GongJu\masm 4]挂载dosbox 目的是将dosbox的c盘挂载到mas

  • 汇编语言 口算异或xor小结

    复制代码 代码如下: 123 145 167 189 1AB 1CD 1EF 246 257 28A 29B 2CE 2DF 347 356 38B 39A 3CF 3DE 48C 49D 4AE 4BF 58D 59C 5AF 5BE 68E 69F 6AC 6BD 78F 79E 7AD 7BC

  • 汇编语言之寄存器详解

    上图是cpu中三个组成部分:寄存器 运算器 控制器.其中寄存器是cpu中程序员用指令读取的唯一部件(调剂界面中的 寄存器窗口).如果是16位cpu,就是处理,传输,暂时存储的数据长度都是16位.所以16位的cpu,寄存器也是16位.<汇编语言>这本书中使用的是16位寄存器位例子来讲的,所以下面的内容也都是16位寄存器的. ps:查看处理器型号以及几核cpu,我现在的电脑4核64位 寄存器名字 16位的寄存器有:AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW

  • 汇编语言编译环境搭建过程

    1. 将masm615文件夹拷贝在C或D盘或其他(文件路径不要有中文文件夹) 2. 运行DOSBox(网上下载) 3. DOSBox软件中输入命令mount C C:\masm615(假设masm615安装在C盘),回车输入C: 4. 测试程序test1.asm DATA SEGMENT BUFFER DB "1 STYLE ONE ", 0DH, 0AH DB "2 STYLE TWO ", 0DH, 0AH DB "3 EXIT ", 0DH

  • 汇编语言常见错误信息中文注解

    本文的目标是收集大部分汇编中常见错误信息及对其的中文注解,方便大家在写汇编程序时能够快速地定位错误并解决问题. ml.exe错误信息: 复制代码 代码如下: FATAL   严重错误 cannot open file不能打开文件 I/O error closing fileI/O错误 正在关闭文件 I/O error writing fileI/O错误 正在写文件 I/O error reading file            I/O错误 正在读取文件 out of memory      

  • 汇编语言无效指令错误概述

    问题:cmpxchg8b 指令比较一个8字节值edx和EAX带有8字节值内存( 目的地操作数). 只有有效目标操作数用于此指令是内存 操作数. 如果目标操作数是一个寄存器处理器应产生一个 无效OpCode例外,执行的指令cmpxchg8b应当停止和 处理器应该执行无效OpCode异常处理程序. 此错误发生是 锁定前缀为使用cmpxchg8b指令与一个(无效)寄存器目的地 操作数. 在这种情况下,处理器可能无法启动执行无效OpCode 异常处理程序,因为总线已锁定. 这将导致系统挂起. 提示:如果

  • 什么是汇编语言

    汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址.在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令.普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植. 许多汇编程序为程序开发.汇编控制.辅助调试提供了额外的支持机制.有

  • 汇编语言入门教程阮一峰版

    汇编语言是一种最低级.最古老.不具有移植性的编程语言,它能够直接访问计算机硬件,所以执行效率极高,占用资源极少,一般用于嵌入式设备.驱动程序.实时应用.核心算法等. 汇编语言的缺点是开发周期特别长,实现一个简单的功能都非常麻烦,已经很少用来编写应用程序了. 学习编程其实就是学高级语言,即那些为人类设计的计算机语言. 但是,计算机不理解高级语言,必须通过编译器转成二进制代码,才能运行.学会高级语言,并不等于理解计算机实际的运行步骤. 计算机真正能够理解的是低级语言,它专门用来控制硬件.汇编语言就是

  • 汇编语言超浓缩教程

    所以我个人看法学汇编,不一定要写程序,写程序确实不是汇编的强项,大家不妨玩玩DEBUG,有时CRACK出一个小软件比完成一个程序更有成就感(就像学电脑先玩游戏一样).某些高深的指令事实上只对有经验的汇编程序员有用,对我们而言,太过高深了.为了使学习汇编语言有个好的开始,你必须要先排除那些华丽复杂的命令,将注意力集中在最重要的几个指令上(CMP LOOP MOV JNZ--).但是想在啰里吧嗦的教科书中完成上述目标,谈何容易,所以本人整理了这篇超浓缩(用WINZIP.WINRAR-依次压迫,嘿嘿!

  • 汇编语言rep movsd 的使用详解

    mov esi,offset @s1mov edi,offset @s2 mov ecx,10cld rep movsd 1.rep movsd 每次ecx!=0便执行movsd ,然后ecx=ecx-1 movsd移动ds:[si] 到es:[di],在32位汇编下可以用esi代替si,edi代替di 2.同时由于在一般exe中ds = es 程序起始位置所以另esi = offset @s1就可以找到变量s1 ,edi= offset @s2就可以找到变量s2 3.movsd此类指令有个性质

  • 详解如何在Mac上用汇编语言写HelloWorld

    首先,Mac自带nasm,不过我们要先将其升级. 升级它的方法有很多种,因为我已经装好了homebrew,所以我直接在终端输入: brew install nasm 这样就升级啦- 接下来,创建一个HelloWorld.asm文件! msg: db "hello world!", 0x0a len: equ $-msg SECTION .text global _main kernel: syscall ret _main: mov rax,0x2000004 mov rdi,1 mo

随机推荐