Chinaunix首页 | 论坛 | 博客
  • 博客访问: 222305
  • 博文数量: 253
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 3
  • 用 户 组: 普通用户
  • 注册时间: 2014-09-21 12:29
文章分类

全部博文(253)

文章存档

2014年(253)

我的朋友

分类: LINUX

2014-09-21 12:46:49

原文地址:汇编中cmov指令 作者:andyhzw

操作系统:ubuntu11.10

    条件传送指令集包含了许多指令,所有指令都具有如下格式:
        cmovx source, destination
        其中 x 是一个或者连个字母的代码,表示将触发传送操作的条件。
        条件取决于 EFLAGS 寄存器的当前值。

        条件传送指令使用的特定位如下:





实例:

点击(此处)折叠或打开

  1. .section .data
  2.     output:
  3.         .asciz "The largest value is %d\n"

  4.     values:
  5.         .int    105,234,61,315,134,221,53,145,117,5

  6. .section .text
  7. .global    _start
  8.     _start:
  9.         nop
  10.         movl    values,    %ebx
  11.         movl    $1,        %edi

  12.     loop:
  13.         movl    values( ,%edi,4),    %eax
  14.         cmp        %ebx,    %eax
  15.         cmova    %eax,    %ebx    
  16.         inc        %edi
  17.         cmp        $10,    %edi
  18.         jne        loop

  19.         pushl    %ebx
  20.         pushl    $output
  21.         call    printf
  22.         addl    $8,        %esp
  23.         pushl    $0
  24.         call    exit

结果:





阅读(1077) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~