Win32ASM学习[14]:符号扩展指令: 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 无影响, 也无参数
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
.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相关推荐
- 学习笔记(符号扩展指令:SXTB和SXTH)
前言 这些笔记主要是记录自己在学习CM3汇编中的一些问题(因为我们老师上stm32的嵌入式课是从基础汇编开始讲的,CM3汇编在网上能查到的例子讲解有点少,哭!),其中可能借鉴过网上一些大佬的文章,如果 ...
- 汇编语言符号扩展指令及应用示例
1. 什么是符号扩展?为什么要用符号扩展? 所谓符号扩展,就是将数据的表示大小加倍,数值仍保持不变,即将符号位扩展到同样大小的寄存器空间中去,由两部分构成一个比原值表示大一倍的数.正数必须要0扩展,负 ...
- 符号拓展指令CBW、CWD、CDQ、CWDE、CDQE
符号拓展指令,使用符号位拓展数据类型. cbw 使用al的最高位拓展ah的所有位 cwd使用ax的最高位拓展dx的所有位 cdq使用eax的最高位拓展edx的所有位 cwde使用ax的最高位拓展eax ...
- 汇编语言的符号拓展指令CBW、CWD、CDQ、CWDE、CDQE
符号拓展指令,使用符号位拓展数据类型. cbw 使用al的最高位拓展ah的所有位,(最高位即为符号位) cwd使用ax的最高位拓展dx的所有位 cdq使用eax的最高位拓展edx的所有位 cwde使用 ...
- Intel8086处理器使用NASM汇编语言实现操作系统08-关于负数的相关处理idiv/cbw/cwde/cdqu/cwd/cdq/cdo/
很多人都知道一个有符号的数,最高位是1,则表示负数,最高位是0,则表示正数,如果假设我的CPU是4位CPU,那么对于1001这个数,是表示+9,还是表示-7呢??? 其实CPU并不关心这个数是+9还是 ...
- Win32ASM学习[12]:位测试指令位扫描指令
---------------------------------------------------------------------------------------------------- ...
- Win32ASM学习[15]:加减指令: INC、DEC、NEG、ADD、ADC、SUB、SBB、CMP
---------------------------------------------------------------------------------------------------- ...
- cbw与cwd符号扩展的实际意义
符号扩展的实际意义 符号扩展的实际意义是什么? 将数据进行符号扩展是为了产生一个位数加倍.但数值大小不变的结果,以满足有些指令对操作数位数的要求,例如倍长于除数的被除数,再如将数据位数加长以减少计算过 ...
- CBW、CWDE、CDQ、CWD: 扩展指令
CDQ 是一个让很多人感到困惑的指令. 这个指令把 EAX 的第 31 bit 复制到 EDX 的每一个 bit 上. 它大多出现在除法运算之前.它实际的作用只是把EDX的所有位都设成EAX最高位的 ...
最新文章
- 报表统计-mysql存储过程
- 记一次数据库事务的并发同步控制
- python可以用于机电控制么_都知道砂石骨料可以用于建筑,但是砂石的分类你都清楚么?...
- div css页面布局 模板_HTML 布局
- golang log日志
- 去哪儿-13-city-vuex
- Linux /proc目录详解
- c java交互_C和Java程序之间的交互/通信
- DB2 SQL性能调优秘笈
- WCF Data Services查询
- 指针的意义和linux的内存回收艺术
- 微信公众号消息推送教程
- 苹果应用商店审核_苹果应用商店AppStore审核规则指南
- git鉴权失败问题 以及每次clone 都要输入用户名密码问题
- 国产本地互联网络(LIN)物理层收发器 TJA 1028T
- python文件怎么另存为,python文件怎么保存
- 电脑HDMI接电视 设置耳机输出声音
- java计算移动平均值_多种移动平均计算总结(MA,EMA,SMA,DMA,TMA,WMA)
- URL传参小用法获取url中的参数
- Android安全防护之旅—只需要这几行代码让Android程序项目变得更加安全