repz cmpsb 如果ds:si和es:di所指向的两个字节相等,则继续比较。

CMPSB指令,是用 DS:[SI] 所指的字节单元内容,减去 ES:[DI] 所指的字节单元的内容。
DS:[SI] 是被减数, ES:[DI] 是减数。
验证方法很简单,将这两个内存单元的内容设置成不同的数,看指令执行后CF是0还是1,就能证明了。
例如,你将DS:[SI]单元内容设成01H,将ES:[DI]单元内容设成02H,然后执行CMPSB,你会发现,CF是1,而不是0。这就证明了是前者减去后者的运算。

ZF=1表示是0,对吗?ZF=0,结果非0
是的,ZF=1,表明运算结果为0

cmpsb和rep cmpsb的区别?他们的执行过程是怎样的?
答:
repe/repz:相等则重复
32位:
rep string_op (串操作指令)
string_op : ins, movs,outs,stos
rep:一个串操作前缀,它使其后的串操作重复执行ecx次。
操作:
while (ecx!=0)
{
ecx=ecx-1;
string_op; /串操作/
}
;========================
repe/repz string_op
string_op:cmps,scas
repz:串操作前缀,重复执行ecx次或执行到ZF为0时。
操作:
while(ecx!=0)
{
ecx=ecx-1;
string_op;
if(ZF==0)
break;
}

cmpsb一次只能比较字符串里的一个字符,比较整个串需要用到循环,可以在前加上前缀(repz/repe或者rep)。
答:是的,自己有什么想法的时候,要多动手,用debug
在debug中怎么用a命令写汇编指令
,比如像这样
E:>debug
-a
18A6:0100 db “hello world!”
18A6:010C db “world hello!”
18A6:0118 db “hello world!”
18A6:0124 mov si,100
18A6:0127 mov di,10c
18A6:012A mov cx,0c
18A6:012D repz cmpsb
18A6:012F mov si,100
18A6:0132 mov di,118
18A6:0135 mov cx,0c
18A6:0138 repz cmpsb
18A6:013A
-r ip
IP 0100
:124
-t

可参考:https://blog.csdn.net/fulinus/article/details/8277442

汇编中的REPZ CMPSB相关推荐

  1. 汇编中各寄存器的作用(16位CPU14个,32位CPU16个)和 x86汇编指令集大全(带注释)

    From:https://www.cnblogs.com/zimmerk/articles/2520011.html From:https://blog.csdn.net/bjbz_cxy/artic ...

  2. 汇编中各寄存器的作用(16位CPU14个,32位CPU16个)和 x86汇编指令集大全(带注释)...

    From:https://www.cnblogs.com/zimmerk/articles/2520011.html From:https://blog.csdn.net/bjbz_cxy/artic ...

  3. 汇编中的串操作指令(MOVS,CMPS,SCAS,LODS,STOS)

           学汇编的都知道,汇编中很多问题都是对字符串进行的操作,但是我们操作时总是重复相同的操作,用多个指针进行记录,不断判断只针对位置,这样确实很麻烦,于是汇编提供了一种对字符串进行操作的指令, ...

  4. 汇编中Enter和Leave指令

    Enter的作用相当==push ebp和mov ebp,esp 这后面两句大家很熟悉吧?函数开始一般都是这两句 Leave的作用相当==mov esp,ebp和pop ebp 而这后面这两句也很常见 ...

  5. 逆向知识十三讲,汇编中数组的表现形式,以及还原数组

    讲解数组之前,要了解数组的特性 1.数据具有连续性 2.数据类型相同 比如: int Ary[3] = {0,1,2}; 我们可以看出,上面定义的数组,数据是连续的,其中每个数据类型大小都是int类型 ...

  6. 汇编中的DW:DW 定义一个字

    汇编中的DW是什么意思?那DB呢 DW 定义一个字 DB 定义一个字节 DD 定义一个双字 前面的D表示定义,后面的字母W .B .D依次表示字(一般为16位).字节(为8位).双字(一般为32位)

  7. ARM汇编:汇编中proc、endp、ret、near、far指令用法

    ARM汇编:汇编中proc.endp.ret.near.far指令用法 子程序名 PROC NEAR ( 或 FAR ) -- ret 子程序名 ENDP (1)NEAR属性(段内近调用): 调用程序 ...

  8. 汇编中16进制的写法问题

    在汇编中,16进制的存放不允许字母开头. eg: A8H   这样写是错误的 0A8H  应该这样写 转载于:https://www.cnblogs.com/ciaociao/p/6529132.ht ...

  9. 汇编中addr和offset

    汇编中addr和offset的异同点!!! 一.相同点 1.addr 和 offset 操作符都是获得操作数的偏移地址: 2.addr 和 offset 的处理都是先检查处理的是全局还是局部变量,若是 ...

最新文章

  1. 搭建网络及服务器系统,网络服务器搭建与管理
  2. iOS 崩溃日志在线符号化实践
  3. 【鬼网络】之Linux网络设置
  4. Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call.
  5. 原来这才是日志打印的正确姿势!
  6. MATLAB中unwrap函数
  7. java读取日志_Java实时监控日志文件并输出的方法详解
  8. JS中元素的属性(class、style)操作
  9. 为什么我感觉生活不易挣钱太难
  10. 你已经是一个成熟的码农了,这些思维习惯你要有!
  11. FCKEditor报java.lang.NullPointerException
  12. mysql 一台电脑多个服务_怎么在一台windows主机上安装多个mysql服务
  13. 前端三级联动 distpicker插件
  14. 连八股文都不懂还指望在后端混下去么
  15. 【2017NOIP普及组】T4:跳房子 试题解析
  16. [2016][34]基于大数据的牛顿(Knewton)平台自适应学习机制分析
  17. C语言循环语句的研究意义,C语言中循环语句的应用研究
  18. 借助云开发实现小程序朋友圈的发布与展示
  19. 铂西学习日记---进程与线程
  20. 应急响应 - Windows启动项分析,Windows计划任务分析,Windows服务分析

热门文章

  1. GENTLE.NET(六)--空值处理
  2. 用户管理和su,id 命令
  3. Mybatis-plus多表关联查询,多表分页查询
  4. 日报 18/06/04
  5. 聊聊Servlet、Struts1、Struts2以及SpringMvc中的线程安全
  6. 一. DotNet MVC4.0+EasyUI Web简单框架-前言
  7. windows多线程同步--临界区
  8. 华为vrrp默认优先级_华为eNSP配置VRRP协议实验
  9. React-Context
  10. 【Android 逆向】函数拦截 ( CPU 高速缓存机制 | CPU 高速缓存机制 导致 函数拦截失败 )