汇编.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语句的汇编表示

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

从汇编代码的角度观察switch与if...else,以及乘除与移位的性能差别。

Switch与if…else 有以下两个函数,功能基本相同,sum5()是switch版本,sum6()是if else版本。 public int sum5(int x,int y){ ...

汇编的if else的分支结构

C: if() { } el

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

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

80386(win32汇编) .if .else .endif 伪指令的使用

; 80386(win32)汇编 ;.if .else .endif的使用 ;作者:邱于涵 ;Time:2017年6月30日16:46:53 ;QQ:1031893464 .386 .model fl...

#if,#endif,!defined的意义和用法

  • 2012年05月10日 12:00
  • 20KB
  • 下载

#if, #elif, #else, and #endif Directives (C/C++)

#if, #elif, #else, and #endif Directives (C/C++) Visual Studio 2010 Other Versions     * Visu...

VC 编译连接(#if #ifdef #ifndef #else #endif defened)

一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条...

C语言的条件编译#if, #elif, #else, #endif、#ifdef, #ifndef_Embeder

有些程序在调试、兼容性、平台移植等情况下可能想要通过简单地设置一些参数就生成一个不同的软件,这当然可以通过变量设置,把所有可能用到的代码都写进去,在初始化时配置,但在不同的情况下可能只用到一部分代码,...

条件编译解决/**/注释嵌套的问题(#if 0 #endif) (哈哈,写的很搞笑啊~转载的)

(hplonline)2010.12.25 《C陷阱与缺陷》里面有一个例子,ex1-2,谈到了注释嵌套的问题。 不过这个excercise讲的只是怎么通过写一段代码来检验编译器,并没有给出解决...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:汇编.if 和.endif的应用
举报原因:
原因补充:

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