汇编.if 和.endif的应用

原创 2013年12月05日 20:59:17
;***********************************************
TITLE .IF和.ELSEIF
;***********************************************



;***********************************************
;程序运行平台
.386
.MODEL FLAT,STDCALL
OPTION CASEMAP:NONE
;***********************************************


;***********************************************
;文件包含
INCLUDE Irvine32.inc
;***********************************************

;***********************************************
.DATA
result byte ?
str1 byte "测试成功",0dh,0ah,0
str2 byte "测试失败",0dh,0ah,0
testByte byte 234
;***********************************************

;***********************************************
;代码段
.CODE
main proc
  .if testByte>200
     mov result,1
  .else
     mov result,0
  .endif
  .if result>0
     mov edx,offset str1
     call WriteString
  .else
     mov edx,offset str2
     call WriteString
  .endif
  exit
main endp
end main

;***********************************************


;***********************************************************
TITLE 查找数组中一共有多少个0
;***********************************************************

;***********************************************************
;程序运行平台说明
.386
.MODEL FLAT,STDCALL
OPTION CASEMAP:NONE
;***********************************************************

;***********************************************************
;文件包含
INCLUDE Irvine32.inc
;***********************************************************

;***********************************************************
;数据段定义
.DATA
testArray byte 1,1,4.2,89,0,23,89,56,0,45,0,12
arrayLength=$-testArray
strSucess byte "the number of Zero is ",0
;***********************************************************

;***********************************************************
;代码段定义
.CODE
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;函数说明:寻找全局数组中0的个数
;函数参数:ecx
;返回值  :无
getZeroCount proc uses esi eax
   mov esi,arrayLength;
   dec esi
   xor eax,eax
   .while esi!=0
     .if testArray[esi]==0
         inc eax
     .endif
     dec esi;    
   .endw
   push eax
   mov edx,offset strSucess
   call WriteString
   pop eax
   call WriteInt
   ret;
getZeroCount endp
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
main proc
   call getZeroCount
   exit
main endp
end main
;***********************************************************



;*********************************************
TITLE 数组求和
;*********************************************


;*********************************************
;程序运行平台说明
.386
.MODEL FLAT,STDCALL
OPTION CASEMAP:NONE
;*********************************************

;*********************************************
;文件包含
INCLUDE Irvine32.inc
;*********************************************


;*********************************************
;数据段定义
.DATA
arrayW DWORD 10,60,20,33,72,89,45,65,72,18
sample DWORD 50
ArraySize DWORD sizeof arrayW/type DWORD
sum DWORD  0
strSuc BYTE "the sum is",0
;*********************************************


;*********************************************
;代码段定义
.CODE
main proc
   mov ecx,ArraySize      
   dec ecx
   mov eax,ecx
   shl eax,2
   .while ecx>0
      mov ebx,arrayW[eax]
      .if ebx>sample
          mov ebx,arrayW[eax]
          add sum,ebx
      .endif
      dec ecx
      mov eax,ecx
      shl eax,2
   .endw
   mov edx,offset strSuc
   call WriteString  
   xor eax,eax
   mov eax,sum
   call WriteInt
   exit
main endp
end main
;*********************************************



使用汇编语言实现if else 循环 函数调用

需要使用汇编来演示如下代码 需要下载ollydbg汇编调试器 点击File-Open随意打开一个exe文件 我这里随便找到c:/windows/explorer.exe文件 这里EIP的值表示下一...
  • liaomin416100569
  • liaomin416100569
  • 2016年08月06日 12:13
  • 1944

if语句的汇编表示

gcc产生的代码,可以使用objdump查看它对应的汇编代码(gcc查看汇编代码),本文主要介绍条件语句if语句的汇编表示   有以下代码: int max(int x,int y) { if (x>...
  • u011608357
  • u011608357
  • 2014年03月30日 15:06
  • 2705

汇编的if else的分支结构

C: if() { } el
  • hutao1101175783
  • hutao1101175783
  • 2014年10月16日 21:11
  • 1120

条件汇编

条件汇编是汇编器在汇编阶段,依据所设定的条件,使汇编器汇编某一段程序,或不汇编某一段程序。一般而言,条件汇编常配合宏使用,使得撰写汇编语言源文件能有初步的结构化 (注一 )。底下小木偶使用条件汇编与宏...
  • benny5609
  • benny5609
  • 2008年06月12日 19:54
  • 3488

Objective--C语言预处理命令之条件编译(#ifdef,#else,#endif,#if等)

预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。 在C语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义...
  • wwwang89123
  • wwwang89123
  • 2013年12月20日 10:23
  • 6475

特征点检测学习_3(Harris算法)

角点的定义 角点可以认为是图像亮度变化剧烈的点或图像边缘曲线上曲率极大值的点 角点就是极值点,在某个方面属性特别突出的点 角点可以是两条线的交叉处,也可以是位于相邻的两个主要方向不同的事物上的点 ...
  • yangleo1987
  • yangleo1987
  • 2016年11月21日 17:32
  • 182

32位汇编语言学习笔记(9)--分析while循环的汇编代码

 while循环与do-while循环不同,是先判断循环条件。gcc会把while循环转换成如下格式的代码,再生成汇编代码: if (循环条件不成立) goto done ...
  • swordmanwk
  • swordmanwk
  • 2014年11月24日 20:44
  • 2178

gcc预编译#if,#elif,#endif以及常用宏定义

 转载:http://blog.chinaunix.net/uid-26854432-id-3181585.html #if语句 #if语句会计算它后面的表达式,并检查表达式的结果,...
  • haohao1945
  • haohao1945
  • 2016年05月16日 10:38
  • 1500

头文件为什么要加#ifndef #define #endif

一 #ifndef 在头文件中的作用一个大的软件工程里有多个文件同时包含一个头文件,当这些文件编译链接成一个可执行文件时,就会出现大量“重定义”的错误。这时在头文件中使用#ifndef #defin...
  • xu1129005165
  • xu1129005165
  • 2016年11月22日 21:07
  • 642

关于浏览器 hack 目前ie版本为IE11

ie hacker
  • ashcn2001
  • ashcn2001
  • 2017年01月17日 10:21
  • 133
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:汇编.if 和.endif的应用
举报原因:
原因补充:

(最多只允许输入30个字)