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

学 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
分享到:
评论

相关推荐

    汇编指令(chm格式)

    8088 汇编速查手册 一、数据传输指令 ─────────────────────────────────────── 它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. 1. 通用数据传送指令. ...

    汇编速查手册

    主要内容 一、数据传输指令 ─────────────────────────────────────── 它们在存贮器和寄存器、寄存器和输入输出端口之间...CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去)

    meteor-tinytest-tools:流星的 tinytest 工具的助手

    tinytest-tools v0.2.0 (Wanabee 集)用于使用 Meteor 的 ... addAsync ( "Example Test" , function ( test , onComplete ) { var CBW = new CallbacksWatcher ( test ) ; // create a callback that should b

    The Art of Assembly Language Programming

    Conversions 6.4.1 - The MOVZX, MOVSX, CBW, CWD, CWDE, and CDQ Instructions 6.4.2 - The BSWAP Instruction 6.4.3 - The XLAT Instruction 6.5 - Arithmetic Instructions 6.5.1 - The Addition ...

    汇编考试模拟题及答案

    汇编考试题目经典 《汇编语言程序设计》模拟试题 一、单项选择题 1、指令JMP FAR PTR DONE属于( )。  A.段内转移直接寻址 B.段内转移间接寻址 C.段间转移直接寻址 D.段间转移间接寻址  2、执行下面指令序列后,...

    USBCTRL USB上位机控制软件(源码)

    本工程基于libusb-win32-bin-1.2.6.0 开发。 需要先用libusb的驱动程序替换掉原来设备的驱动,就可以通过libusb进行控制,(libusb-win32-bin\bin\inf-wizard.exe可以产生相应设备新的驱动) 1.通过设备的VID和PID...

    ABB UniSwitch-CBW 金属封闭开关设备.pdf

    ABB UniSwitch-CBW 金属封闭开关设备pdf,ABB UniSwitch-CBW 金属封闭开关设备

    8086寻址方式及指令系统

    21.执行IMUL指令时,如果乘积的高位部分不是低位部分的符号扩展,则( )。 A.OF=0、CF=0 B.OF=0、CF=1 C.OF=1、CF=0 D.OF=1、CF=1 22.设AX=3762H,CL=5,执行“SHR AX,CL”后,AX=( )。 A.0376H B.01BBH...

    ABB Uniswitch-CBW金属封闭开关设备说明书.pdf

    ABB Uniswitch-CBW金属封闭开关设备说明书pdf,ABB Uniswitch-CBW金属封闭开关设备安装使用说明书

    微型计算机讲稿

    带符号乘除法用CBW、CWD扩展被除数 十进制数运算的调整指令,加减乘后调整,除先调整 比较指令与减法指令 。逻辑运算类 按位运算,可对指定位置位复位或取反 测试指令和与指令 ...

    cbw.rar_ok

    cbw.h cabeza para la libreria cbw32.dll

    风华贴片磁珠CBW(大电流型).pdf

    风华贴片磁珠CBW(大电流型).pdf

    发现还是好多人没有找到C#Builder个人版的KEY,这时上传一个,放

    %02%9A%9F%EE%5C%92%26%0D%A5%DC%81%29%82%2F%17%CE%BA%CB7%86o%12%DA%BB%E4%3A%FB%1C_%CB%E1%BBl%BD%02n%9A%BF%CBW%96%1Bx%C1%98%95A%BB%09M%BF%CB%B5b%C2%7E%02%87%90%A4%0C%EE%22p%BB%E9%89Y%BA%0Bx%8E%A6%E9W%...

    cbw:地穴破坏者的工作台

    地穴破坏者的工作台 (CBW) CBW 于 1987 年 6 月 17 日由 Rich Salz 在作者 Robert W. Baldwin 许可下发布到 usenet。 它在 mod.sources (comp.unix.sources) Volume 10, Issue 1 中可用,在很多地方都有镜像,例如...

    BIos原代码《陈文钦》

    优秀的,完整的BIOS 代码 page ,132 title . PROCESSOR_TIMER_PARITY_REFRESH_NMI TEST ;*****************************************************************; ;********************************************...

    易语言程序免安装版下载

     支持静态链接其它编程语言(如C/C++、汇编等)编译生成的静态库(.LIB或.OBJ),但仅限于COFF格式,支持cdecl和stdcall两种函数调用约定。  使用说明如下:函数声明和调用方法与DLL命令一致;“库文件名”以.lib...

    Microsoft Library MSDN4DOS.zip

    CWD/CDQ Convert Word to Doubleword/Convert Doubleword to DAA Decimal Adjust AL after Addition DAS Decimal Adjust AL after Subtraction DEC Decrement by 1 DIV Unsigned Divide ENTER Make Stack Frame for ...

    Calcolatori-Elettronici-polito

    目录处理方法直接寻址注册间接寻址基本相对寻址直接索引寻址基本索引寻址细分和地址字符的输入/输出键盘输入字符字符输出: 数据传输说明影片XCHG LEA: 堆栈(按入,弹出) 算术指令加和减溢流控制CBW CWD 模数转换...

    USB CD-ROM数据包分析

    USB CDB command分析,Bulk-Only,MassStorage,CBW,CSW数据结构和实际数据解析。对于USB ROM的USB通信协议分析非常有帮助。

    [CBW]梁宽较对.fas

    梁宽校对

Global site tag (gtag.js) - Google Analytics