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
    

  • 相关阅读:
    利用Fiddler模拟通过Dynamics 365的OAuth 2 Client Credentials认证后调用Web API
    Dynamics CRM中的操作(action)是否是一个事务(transaction)?
    Dynamics CRM 2015/2016新特性之三十二:新增乐观并发处理
    Dynamics CRM 2015/2016新特性之三十三:有了ExecuteTransactionRequest,再也不用担心部分成功部分失败了
    提权案例(一)渗透某asp.net网站通过sql server数据库public 提权 思路分享
    windows 抓hash获取管理员密码
    第三方应用 flashfxp,filezilla提权
    第三方软件 G6ftp提权
    第三方软件 vnc提权
    第三方软件 radmin提权
  • 原文地址:https://www.cnblogs.com/del/p/1717408.html
Copyright © 2011-2022 走看看