zoukankan      html  css  js  c++  java
  • 学 Win32 汇编[25] 符号扩展指令: CBW、CWDE、CDQ、CWD


    CBW、CWDE、CDQ、CWD: 扩展指令
    
    ;CBW(Convert Byte to Word):             将 AL 扩展为 AX
    ;CWDE(Convert Word to Extended Double): 将 AX 扩展为 EAX
    ;CDQ(Convert Doubleword to Quadword):   将 EAX 扩展为 64 位数 EDX:EAX
    ;CWD(Convert Word to Doubleword):       将 AX 扩展为 DX:AX
    
    ;它们都是用符号位填充多出的空间
    
    ;它们对 EFLAGS 无影响, 也无参数
    
    ; Test25_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 ;CBW mov al, 7Fh cbw PrintHex ax ;007F mov al, 80h cbw PrintHex ax ;FF80 ;CWDE mov ax, 7FFFh cwde PrintHex eax ;00007FFF mov ax, 8000h cwde PrintHex eax ;FFFF8000 ;CDQ mov eax, 7FFFFFFFh cdq PrintHex edx ;00000000 PrintHex eax ;7FFFFFFF mov eax, 80000000h cdq PrintHex edx ;FFFFFFFF PrintHex eax ;80000000 ;CWD mov ax, 7FFFh cwd PrintHex dx ;0000 PrintHex ax ;7FFF mov ax, 8000h cwd PrintHex dx ;FFFF PrintHex ax ;8000 ret main endp end main

    符号扩展指令的本质
    
    ;一个正数(无符号)或负数(有符号)在扩展储存空间时, 使用这些指令可保证原值不变
    
    ; Test25_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 al, 68
        cbw
        PrintHex ax ;0044
        PrintDec ax ;68
        
        mov al, -68
        cbw
        PrintHex ax ;FFBC
        PrintDec ax ;-68
        ret
    main endp
    end main
    

    CBW、CWDE 和 MOVSX 的关系
    
    ; Test25_3.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
        ;CBW 等价于 movsx ax, al
        mov al, 80h
        cbw
        PrintHex ax ;FF80
        
        mov al, 80h
        movsx ax, al
        PrintHex ax ;FF80
        
        ;CWDE 等价于 movsx eax, ax
        mov ax, 8000h
        cwde
        PrintHex eax ;FFFF8000
        
        mov ax, 8000h
        movsx eax, ax
        PrintHex eax ;FFFF8000
        ret
    main endp
    end main
    

  • 相关阅读:
    单个对象的内存管理分析
    在eclipse中引入jquery.js文件报错的解决方案
    ajax复习
    jquery介绍
    ajax调试小技巧
    ajax实现聊天室功能
    ajax(2)
    ajax经典案例--省市联动
    ajax技术返回json如何处理
    ajax如何处理返回的数据格式是xml的情况
  • 原文地址:https://www.cnblogs.com/del/p/1712702.html
Copyright © 2011-2022 走看看