zoukankan      html  css  js  c++  java
  • 学 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
    

  • 相关阅读:
    cuda、cudnn环境配置
    1.python的 a,b=b,a+b 和 a=b b=a+b 的区别
    例子:循环语句--打印一个菱形
    7.python基础语法--format()函数
    例子:循环语句--九九乘法表
    例子:循环语句--输入N个整数,判断最大值,最小值,和,平均值。
    例子:循环语句--素数问题
    例子:循环语句--打印一个边长为n的正方形。
    例子:循环语句--给定一个不超过5位的正整数,判断该数的位数,依次打印出个位、十位、百位、千位、万位的数字。
    6.python基础语法--循环结构
  • 原文地址:https://www.cnblogs.com/del/p/1717408.html
Copyright © 2011-2022 走看看