-----------------------------------------------------------------------------------------------------------------------------------------------------------------

;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 无影响, 也无参数

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

.code
main proc
    ;CBW
    mov al, 7Fh
    cbw
    PrintHex ax ;007F
   
    mov al, 80h
    cbw
    PrintHex ax ;FF80
   
    ;CWDE
    mov ax, 7FFFh
    PrintDec ax ;32767
    cwde
    PrintHex eax ;00007FFF
    PrintDec eax ;32767
   
    mov ax, 8000h
    PrintDec ax   ;-32768
    cwde
    PrintHex eax ;FFFF8000
    PrintDec eax ;-32768
   
    ;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

嗯  看见没  符号数的存储   数据的存储方式

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

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

.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

-------------------------------------------------------------------------------------------------------------------

Win32ASM学习[14]:符号扩展指令: CBW,CWDE,CDQ,CWD相关推荐

  1. 学习笔记(符号扩展指令:SXTB和SXTH)

    前言 这些笔记主要是记录自己在学习CM3汇编中的一些问题(因为我们老师上stm32的嵌入式课是从基础汇编开始讲的,CM3汇编在网上能查到的例子讲解有点少,哭!),其中可能借鉴过网上一些大佬的文章,如果 ...

  2. 汇编语言符号扩展指令及应用示例

    1. 什么是符号扩展?为什么要用符号扩展? 所谓符号扩展,就是将数据的表示大小加倍,数值仍保持不变,即将符号位扩展到同样大小的寄存器空间中去,由两部分构成一个比原值表示大一倍的数.正数必须要0扩展,负 ...

  3. 符号拓展指令CBW、CWD、CDQ、CWDE、CDQE

    符号拓展指令,使用符号位拓展数据类型. cbw 使用al的最高位拓展ah的所有位 cwd使用ax的最高位拓展dx的所有位 cdq使用eax的最高位拓展edx的所有位 cwde使用ax的最高位拓展eax ...

  4. 汇编语言的符号拓展指令CBW、CWD、CDQ、CWDE、CDQE

    符号拓展指令,使用符号位拓展数据类型. cbw 使用al的最高位拓展ah的所有位,(最高位即为符号位) cwd使用ax的最高位拓展dx的所有位 cdq使用eax的最高位拓展edx的所有位 cwde使用 ...

  5. Intel8086处理器使用NASM汇编语言实现操作系统08-关于负数的相关处理idiv/cbw/cwde/cdqu/cwd/cdq/cdo/

    很多人都知道一个有符号的数,最高位是1,则表示负数,最高位是0,则表示正数,如果假设我的CPU是4位CPU,那么对于1001这个数,是表示+9,还是表示-7呢??? 其实CPU并不关心这个数是+9还是 ...

  6. Win32ASM学习[12]:位测试指令位扫描指令

    ---------------------------------------------------------------------------------------------------- ...

  7. Win32ASM学习[15]:加减指令: INC、DEC、NEG、ADD、ADC、SUB、SBB、CMP

    ---------------------------------------------------------------------------------------------------- ...

  8. cbw与cwd符号扩展的实际意义

    符号扩展的实际意义 符号扩展的实际意义是什么? 将数据进行符号扩展是为了产生一个位数加倍.但数值大小不变的结果,以满足有些指令对操作数位数的要求,例如倍长于除数的被除数,再如将数据位数加长以减少计算过 ...

  9. CBW、CWDE、CDQ、CWD: 扩展指令

    CDQ 是一个让很多人感到困惑的指令.  这个指令把 EAX 的第 31 bit 复制到 EDX 的每一个 bit 上. 它大多出现在除法运算之前.它实际的作用只是把EDX的所有位都设成EAX最高位的 ...

最新文章

  1. 报表统计-mysql存储过程
  2. 记一次数据库事务的并发同步控制
  3. python可以用于机电控制么_都知道砂石骨料可以用于建筑,但是砂石的分类你都清楚么?...
  4. div css页面布局 模板_HTML 布局
  5. golang log日志
  6. 去哪儿-13-city-vuex
  7. Linux /proc目录详解
  8. c java交互_C和Java程序之间的交互/通信
  9. DB2 SQL性能调优秘笈
  10. WCF Data Services查询
  11. 指针的意义和linux的内存回收艺术
  12. 微信公众号消息推送教程
  13. 苹果应用商店审核_苹果应用商店AppStore审核规则指南
  14. git鉴权失败问题 以及每次clone 都要输入用户名密码问题
  15. 国产本地互联网络(LIN)物理层收发器 TJA 1028T
  16. python文件怎么另存为,python文件怎么保存
  17. 电脑HDMI接电视 设置耳机输出声音
  18. java计算移动平均值_多种移动平均计算总结(MA,EMA,SMA,DMA,TMA,WMA)
  19. URL传参小用法获取url中的参数
  20. Android安全防护之旅—只需要这几行代码让Android程序项目变得更加安全

热门文章

  1. 比较二进制_浮点数比较的精度问题
  2. vue学习经验分享,在这个大前端时代,你再不会vue就out啦
  3. 【ECharts系列|02可视化大屏】 舆情分析,人口分析及警情警力活动情况的实现【下篇】
  4. 算法属于计算机服务还是软件,第06讲 服务器软件设计的算法和问题
  5. mac solr mysql 配置文件_Solr配置文件浅析
  6. flex弹性布局操练2
  7. easyui树形菜单实现
  8. JS中的数据类型转换
  9. Netty : writeAndFlush的线程安全及并发问题
  10. json - json对象和json字符串直接的相互转换