`
zzc1684
  • 浏览: 1224524 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

学 Win32 汇编[30] - 条件及循环伪指令: .IF、.WHILE、.REPEAT 等

 
阅读更多

.IF、.ELSEIF、.ELSE、.ENDIF: 条件伪指令



;可以使用和 C 语言类似的条判断:
a == b
a != b
a >  b
a >= b
a <  b
a <= b
a && b
a &  b
a || b
!a

;还可以直接判断几个常用的标志位:
CARRY?    ;进位标志
OVERFLOW? ;溢出标志
PARITY?   ;奇偶标志
SIGN ;符号标志
ZERO ;零标志

 

; Test30_1.asm
.386
.model flat, stdcall

include    windows.inc
include    kernel32.inc
include    masm32.inc
include    debug.inc
includelib kernel32.lib
includelib masm32.lib
includelib debug.lib

.code
main proc
    xor eax, eax
    .if !eax
        PrintText 'EAX = 0'
    .endif
    ;
    mov eax, 3
    .if eax == 3
        PrintText 'EAX = 3'
    .else
        PrintText 'EAX != 3'
    .endif
    ;
    mov eax, 4
    .if eax == 3
        PrintText 'EAX = 3'
    .elseif eax > 3
        PrintText 'EAX > 3'
    .else
        PrintText 'EAX < 3'
    .endif
    ret
main endp
end main

; Test30_2.asm .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .code main proc   mov eax, 1   mov edx, 0   .if eax && edx     PrintText '&&'   .endif     .if eax || edx     PrintText '||' ;   .endif     .if eax & edx     PrintText '&'   .endif   ret main endp end main


.WHILE、.ENDW: While 循环伪指令:



; Test30_4.asm
.386
.model flat, stdcall

include    windows.inc
include    kernel32.inc
include    masm32.inc
include    debug.inc
includelib kernel32.lib
includelib masm32.lib
includelib debug.lib

.code
main proc
    mov eax, 9
    .while eax > 0 
        PrintDec eax
        dec eax
    .endw    
    ret
main endp
end main


.REPEAT、.UNTIL: Repeat 循环伪指令:



; Test30_5.asm
.386
.model flat, stdcall

include    windows.inc
include    kernel32.inc
include    masm32.inc
include    debug.inc
includelib kernel32.lib
includelib masm32.lib
includelib debug.lib

.code
main proc
    mov eax, 9
    .repeat
        PrintDec eax
        dec eax
    .until eax == 0  
    ret
main endp
end main


.While 与 .Repeat 都支持 .Break 和 .Continue



.WHILE 与 .BREAK:



; Test30_6.asm
.386
.model flat, stdcall

include    windows.inc
include    kernel32.inc
include    masm32.inc
include    debug.inc
includelib kernel32.lib
includelib masm32.lib
includelib debug.lib

.code
main proc
    mov eax, 9
    .while TRUE
        PrintDec eax
        dec eax
    .break .if eax == 5
    .endw    
    ret
main endp
end main


.REPEAT 与 .CONTINUE:



; Test30_7.asm
.386
.model flat, stdcall

include    windows.inc
include    kernel32.inc
include    masm32.inc
include    debug.inc
includelib kernel32.lib
includelib masm32.lib
includelib debug.lib

.code
main proc
    mov eax, 0
    .repeat
        inc eax
    .continue .if eax == 2
        PrintDec eax
    .until eax > 3
    ret
main endp
end main
分享到:
评论

相关推荐

    汇编语言05.ppt

    - `.IF`、`.ELSE`和`.ENDIF`伪指令模拟了高级语言中的条件控制结构。它们在汇编时会被展开成相应的比较和条件转移指令,实现程序的分支。例如: ```assembly IF 条件表达式 分支体1 ELSE 分支体2 ENDIF ``` ...

    汇编语言5PPT课件.pptx

    1. **条件控制伪指令**: - `.IF`, `.ELSE`, `.ENDIF` 用于实现类似于高级语言中的条件判断结构。`.IF` 检查一个条件,如果为真,则执行随后的指令,否则跳过到`.ELSE`后的指令;`.ELSE`提供了一个可选的相反分支,...

    汇编语言.chm 学习汇编语言入门

     3 循环伪指令WHILE  4 循环伪指令FOR  5 循环伪指令FORC  6 转移伪指令GOTO  7 宏扩充的举例  8 系统定义的宏  9.7 习题 第10章 应用程序的设计  10.1 字符串的处理程序  10.2 数据的分类统计程序  ...

    汇编语言教程-学习的极佳资料

     3 循环伪指令WHILE  4 循环伪指令FOR  5 循环伪指令FORC  6 转移伪指令GOTO  7 宏扩充的举例  8 系统定义的宏  9.7 习题 第10章 应用程序的设计  10.1 字符串的处理程序  10.2 数据的分类统计程序  ...

    汇编语言学习大全

     3 循环伪指令WHILE  4 循环伪指令FOR  5 循环伪指令FORC  6 转移伪指令GOTO  7 宏扩充的举例  8 系统定义的宏  9.7 习题 第10章 应用程序的设计  10.1 字符串的处理程序  10.2 数据的分类统计程序  ...

    汇编语言.chm电子书

     3 循环伪指令WHILE  4 循环伪指令FOR  5 循环伪指令FORC  6 转移伪指令GOTO  7 宏扩充的举例  8 系统定义的宏  9.7 习题 第10章 应用程序的设计  10.1 字符串的处理程序  10.2 数据的分类统计程序  ...

    汇编教程 非常详细 说明的非常清楚 学汇编很好的教程

     3 循环伪指令WHILE  4 循环伪指令FOR  5 循环伪指令FORC  6 转移伪指令GOTO  7 宏扩充的举例  8 系统定义的宏  9.7 习题 第10章 应用程序的设计  10.1 字符串的处理程序  10.2 数据的分类统计程序  ...

    汇编语言程序教程(.chm格式)

     3 循环伪指令WHILE  4 循环伪指令FOR  5 循环伪指令FORC  6 转移伪指令GOTO  7 宏扩充的举例  8 系统定义的宏  9.7 习题 第10章 应用程序的设计  10.1 字符串的处理程序  10.2 数据的分类统计程序  ...

    汇编语言基础学习资料

     3 循环伪指令WHILE  4 循环伪指令FOR  5 循环伪指令FORC  6 转移伪指令GOTO  7 宏扩充的举例  8 系统定义的宏  9.7 习题 第10章 应用程序的设计  10.1 字符串的处理程序  10.2 数据的分类统计程序  ...

    汇编语言教程.chm

     3 循环伪指令WHILE  4 循环伪指令FOR  5 循环伪指令FORC  6 转移伪指令GOTO  7 宏扩充的举例  8 系统定义的宏  9.7 习题 第10章 应用程序的设计  10.1 字符串的处理程序  10.2 数据的分类统计程序  ...

    汇编语言教程(AoGo汇编网站)

     3 循环伪指令WHILE  4 循环伪指令FOR  5 循环伪指令FORC  6 转移伪指令GOTO  7 宏扩充的举例  8 系统定义的宏  9.7 习题 第10章 应用程序的设计  10.1 字符串的处理程序  10.2 数据的分类统计程序  ...

    汇编语言教程chm电子书

     3 循环伪指令WHILE  4 循环伪指令FOR  5 循环伪指令FORC  6 转移伪指令GOTO  7 宏扩充的举例  8 系统定义的宏  9.7 习题 第10章 应用程序的设计  10.1 字符串的处理程序  10.2 数据的分类统计程序  ...

    汇编语言入门帮助文档.chm

     3 循环伪指令WHILE  4 循环伪指令FOR  5 循环伪指令FORC  6 转移伪指令GOTO  7 宏扩充的举例  8 系统定义的宏  9.7 习题 第10章 应用程序的设计  10.1 字符串的处理程序  10.2 数据的分类统计程序  ...

    汇编语言程序设计 第二版

    9.6.3 循环伪指令WHILE 9.6.4 循环伪指令FOR 9.6.5 循环伪指令FORC 9.6.6 转移伪指令GOTO 9.6.7 宏扩充的举例 9.6.8 系统定义的宏 习题 第十章 应用程序设计 10.1 字符串的处理程序 10.2 数据的分类统计程序 10.3 ...

    32位汇编1

    此外,汇编语言还提供了许多伪指令,如`addr`获取变量地址,`sizeof`获取变量大小,以及条件判断、循环控制等结构,如`.if`、`.else`、`.endif`、`.break`、`.continue`、`.while`和`.repeat .until`。 以下是一个...

    汇编语言基础教程(8086).rar

     3 循环伪指令WHILE  4 循环伪指令FOR  5 循环伪指令FORC  6 转移伪指令GOTO  7 宏扩充的举例  8 系统定义的宏  9.7 习题 第 10章 应用程序的设计  10.1 字符串的处理程序  10.2 数据的分类统计程序  10.3...

    汇编语言(在一个汇编网站上点击率在前三的电子书)

     3 循环伪指令WHILE  4 循环伪指令FOR  5 循环伪指令FORC  6 转移伪指令GOTO  7 宏扩充的举例  8 系统定义的宏  9.7 习题 第10章 应用程序的设计  10.1 字符串的处理程序  10.2 数据的分类统计程序  ...

Global site tag (gtag.js) - Google Analytics