关于指令test ecx,ecx

本篇文章参考了这篇文章:

http://zhidao.baidu.com/question/361835425.html


测试指令 TEST 

格式: TEST OPRD1,OPRD2 

功能: 其中OPRD1、OPRD2的含义同AND指令一样,也是对两个操作数进行按位的'与'运算,

唯一不同之处是不将'与'的结果送回目标操作数

注意:

test指令只影响标志位


说明: TEST与AND指令的关系,有点类似于CMP与SUB指令之间的关系.


1.)test指令的作用:

   test指令是把目标操作数与源操作数进行‘与’操作,影响一些标志位,如ZF

举例:

test ecx,ecx		//测试ecx 寄存器的值是否为0,等于0时跳转到5566

je 5566




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SCASB指令是x86汇编语言中的一种比较指令,用于比较AL寄存器中的数据与存储器中指定地址处的一个字节(8位)的数据是否相等。SCASB指令的语法格式为: - SCASB:将AL寄存器中的数据与ES:DI指向的存储器中的一个字节(8位)进行比较 下面是一个使用SCASB指令的程序示例,该程序在字符串中查找字符'X',如果找到则将该字符的位置打印出来,如果未找到则输出"not found": ``` section .data str db 'Hello, World! This is a test string.',0 msg_found db 'The character X is found at position: ' msg_not_found db 'The character X is not found!' section .text global _start _start: mov eax, 'X' ; 要查找的字符 mov edi, str ; 字符串起始地址 cld ; 清除方向标志位,确保向前查找 mov ecx, 0 ; 索引计数器初始化为0 scan_loop: scasb ; 将AL中的数据与ES:DI指向的存储器中的一个字节进行比较 jne not_found ; 如果不相等跳转到not_found标签 inc ecx ; 索引计数器加1 cmp al, 0 ; 判断是否已经扫描完整个字符串 jne scan_loop ; 如果未扫描完,继续查找 mov eax, 4 ; 系统调用号4表示输出到标准输出 mov ebx, 1 ; 文件描述符1表示标准输出 mov ecx, msg_found ; 输出提示信息 int 0x80 ; Linux系统调用 mov eax, ecx ; 输出查找到的字符位置 sub eax, msg_found ; 计算字符位置 add eax, 1 ; 索引从1开始,所以要加1 mov ebx, eax ; 将结果存放在EBX寄存器中 mov eax, 1 ; 系统调用号1表示退出程序 xor ecx, ecx ; 返回值为0 int 0x80 ; Linux系统调用 not_found: cmp al, 0 ; 判断是否已经扫描完整个字符串 je end_prog ; 如果已经扫描完整个字符串,跳转到end_prog标签 loop scan_loop ; 索引计数器递减,继续查找 jmp not_found ; 如果未找到,跳转到not_found标签 end_prog: mov eax, 4 ; 系统调用号4表示输出到标准输出 mov ebx, 1 ; 文件描述符1表示标准输出 mov ecx, msg_not_found ; 输出提示信息 int 0x80 ; Linux系统调用 mov eax, 1 ; 系统调用号1表示退出程序 xor ebx, ebx ; 返回值为0 int 0x80 ; Linux系统调用 ``` 以上代码中,SCASB指令用于将AL寄存器中的数据与ES:DI指向的存储器中的一个字节进行比较。如果相等,则将索引计数器ecx加1,如果未扫描完整个字符串,则继续查找。如果已经扫描完整个字符串仍未找到,则输出"not found"。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

friendan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值