64位汇编语言中的符号位扩展说明

3.汇编指令:【字节扩展到字 CBW】、【字扩展到双字CWD】 字节扩展到字 CBW;将寄存器AL中的符号位,扩展到寄存器AH 字扩展到双字 CWD; 将寄存器AX中的符号位,扩展到寄存器DX 1. 字节扩展指令格式:CBW (隐含的操作数为AL) 执行的操作 : 当AL的最高位为0时(D7=0)——>AH=00H 当AL的最高位为1时(D7=1)——>AH=FFH 2. 字扩展指令格式: CWD (隐含的操作数为AX) 执行的操作 : 当AX的最高位为0时(D15=0)——>DX=0000H 当AX的最高位为1时(D15=1)— 阅读详情

1. 同一个寄存器进行符号扩展(AL,AX,EAX,RAX)
1.1 指令说明
CBW(Convert Byte to Word):将AL寄存中的8位数值的符号位扩展到16位AX寄存中高8位的每一位。
CWDE(Convert Word to Double word for Extension或Convert Word to Extened Double word):将AX寄存中的16位数值的符号位扩展到32位EAX寄存中高16位的每一位。
CDQE(Convert Double word to Quad word for Extension或Convert Double word to Extened Quad word):将EAX寄存中的32位数值的符号位扩展到64位RAX寄存中高32位的每一位。
(注:后两个带E后缀的指令可能是后来加的,表示扩展;CDQE只对64位模式有效。)
1.2 示意图:
助记符--------------机器码----------------------描述
CBW-----------------98--------------------------符号扩展AL到AX
CWDE----------------98--------------------------符号扩展AX到EAX
CDQE----------------98--------------------------符号扩展EAX到RAX
1.3 测试代码(执行后观察RAX寄存器值的变化)
1.3.1 测试CBW
    XOR RAX,RAX
    XOR RDX,RDX
    MOV AL,-1H
    CBW
1.3.2 测试CWDE
    XOR RAX,RAX
    XOR RDX,RDX
    MOV AX,-1H
    CWDE
1.3.3 测试CDQE
    XOR RAX,RAX
    XOR RDX,RDX
    MOV EAX,-1H
    CDQE
2. 一个寄存器向另一个寄存器进行符号扩展(AL,AX,EAX,RAX-分别扩展到DL,EX,EDX,RDX)
2.1 指令说明
CWD(Convert Word to Double word):将AX寄存中的16位数值的符号位扩展到16位DX寄存中的每一位。
CDQ(Convert Double word to Quad word):将EAX寄存中的32位数值的符号位扩展到32位EDX寄存中的每一位。
CQO(Convert Quad word to Octonary word):将RAX寄存中的64位数值的符号位扩展到64位RDX寄存中的每一位。
(注:CQO只对64位模式有效。)
2.2 示意图:
助记符--------------机器码----------------------描述
CWD-----------------99--------------------------符号扩展AX到DX
CDQ-----------------99--------------------------符号扩展EAX到EDX
CQO-----------------99--------------------------符号扩展RAX到RDX
2.3 测试代码(执行后观察RDX寄存器值的变化)
2.3.1 测试CBW
    XOR RAX,RAX
    XOR RDX,RDX
    MOV AX,-1H
    CWD
2.3.2 测试CWDE
    XOR RAX,RAX
    XOR RDX,RDX
    MOV EAX,-1H
    CDQ
2.3.3 测试CDQE
    XOR RAX,RAX
    XOR RDX,RDX
    MOV RAX,-1H
    CQO

参考资源:

amd和intel开发文档和手册

汇编指令CBW和CWD实战:如何快速理解符号位扩展(附代码示例) 本文深入解析x86汇编指令CBW和CWD的符号位扩展机制,通过补码表示法原理和实战代码示例,展示如何正确处理有符号数的乘除运算和混合运算。文章详细介绍了字节扩展到字(CBW)和字扩展到双字(CWD)的操作逻辑,帮助开发者掌握底层数据转换技巧,提升汇编编程能力。 阅读详情

相关推荐

浮点运算与汇编语言编程详解

本博客围绕浮点数的二进制与十进制转换、IEEE浮点表示、双精度浮点数结构、NaN类型、FPU指令集(如FSTP、FST、FADD、FISUB、FSUB)等内容展开,详细讲解了浮点运算的基本原理与实际应用。此外,博客还涵盖汇编语言中的浮点比较、条件输出、寄存器使用、C与汇编混合编程、优化技巧以及质数判断程序的实现,适合对底层编程与浮点运算机制感兴趣的开发者学习。

mqtt6iot的博客 714

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

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

zjlzjlpy的博客 1万+

【RISC-V 指令集】RISC-V DSP 扩展指令集介绍(一)

数字信号处理(DSP)已成为现代电子系统的重要技术。广泛的现代应用利用DSP算法解决特定领域的问题,包括传感器融合、伺服电机控制、音频解码/编码、语音合成和编码、MPEG4解码、医学成像、计算机视觉、嵌入式控制、机器人、人机交互等。提出的P指令集扩展提高了RISC-V CPU IP产品的DSP算法处理能力。通过添加RISC-V P指令集扩展,RISC-V CPU现在可以以更低的功耗和更高的性能运行这些各种DSP应用程序。r.H 表示寄存器的高 16 位(位 31 到 16),等同于 rH1。

u011376987的博客 3625

CBW/CWDE/CDQE扩展指令

CBW/CWDE/CDQE扩展指令使用符号扩展的方式对源操作数进行双倍扩展。CBW指令(将字节转换到字)复制源操作数的符号位(bit 7)到AH寄存器的所有位。CWDE(将字转换为双字)指令复制AX寄存器的符号位(bit 15)到EAX寄存器的高16位。 CBW和CWDE使用同一个操作数。CBW用于操作数大小是16位,CWDE用于操作数属性是32位。有些汇编器可能会强制区分操作数大小。而有些认为这

羽飞的专栏 1万+

【汇编优化系列】关于符号扩展和无符号扩展(包括mips msa实现)

DATE: 2021.11.26 文章目录前言1、参考2、符号扩展和无符号扩展 含义3、举例说明4、mips msa相关指令 前言 1、参考 符号扩展和无符号扩展 extension 2、符号扩展和无符号扩展 含义 MIPS32 指令集架构中,经常会有指令需要将其中的立即数进行符号扩展,或者无符号扩展,一般都是都是将n位立即数扩展为32位。 无符号扩展:直接将扩展后的数据的高(32-n)位置为0。 符号扩展:将扩展后的数据的高(32-n)位置为立即数的最高位。 An integer register

优快云明星博主,认证博客专家,视频、Matlab领域优质创作者。 2252

25、汇编语言指令深入解析

本博客深入解析了汇编语言中的关键指令,包括有符号值的边界处理、MOVSX 指令的符号扩展功能、MUL 和 DIV 指令的隐式操作数及运算流程,以及相关注意事项和实际应用场景。通过具体代码示例和流程图展示,帮助读者更好地理解和正确使用这些指令,提高程序性能和可靠性。

cola5的博客 60

x86中的CWD/CDQ/CQO和CBW/CWDE/CDQE指令

x86中的CWD/CDQ/CQO和CBW/CWDE/CDQE指令简要介绍

zyckk4的博客 2172

25、汇编语言指令的深入解析与应用

本文深入解析了汇编语言中的一些关键指令和概念,包括有符号值的边界与溢出、符号扩展与 MOVSX 指令、MUL 和 DIV 指令的使用、隐式操作数的处理、常见错误及避免方法、实际应用场景以及指令使用的最佳实践。通过详细的示例和流程图展示,帮助读者更好地理解和掌握汇编语言编程的细节,同时提供了参考资料使用的建议和对未来发展趋势的展望。

z5a6b的博客 57

学习pwn需要的基本汇编语言知识

我计划用几次用C语言和汇编语言的角度讲完整个pwn的基础知识点,会涉及32位汇编和64位汇编的讲解,但是在pwn中的gdb工具分析时,需要你认识内联汇编(支持C语言和汇编出现在同一个程序中),内联汇编没什么新的知识点,但是有些东西还是需要你知道C语言方面的话并不需要你的能力很强,懂得一些基本的操作(数组,指针,结构),数据结构(链表,栈,树,图)等等,总之我会从C语言的角度去说PWN中的一些基本结构。

2403_86572967的博客 1287

计算机组成原理(二)—— 数据的表示与运算

本章目录引言一、数制与编码1.1 进位计数制1.1.1 进制及转换1.1.2 真值、机器数1.2 BCD码1.3 ASCII 码1.4 校验码1.4.1 奇偶校验码1.4.2 海明码1.4.3 CRC循环冗余码二、定点数的表示和运算2.1 定点数的表示2.1.1 无符号2.1.2 有符号(原码、反码、补码、移码)2.2 定点数的运算2.2.1 移位运算2.2.2 加减运算(溢出判断)2.2.3 乘法运算2.2.4 除法运算2.3 强制类型转换2.4 数据的存储和排列三、浮点数的表示和运算3.1 浮点数的表示

S mile0804的博客 7473

Flutter蓝牙开发实战:flutter_blue_plus核心功能与实现原理剖析

本文深入剖析了Flutter蓝牙开发插件flutter_blue_plus的核心功能与实现原理。文章从源码解析入手,详细讲解了蓝牙状态管理、设备扫描、GATT连接、服务发现以及数据读写等关键流程的实现机制,并分享了实战中的性能调优与常见问题解决方案,帮助开发者高效构建跨平台蓝牙应用。

weixin_29014237的博客 443

关于零扩展与符号扩展的理解

本文介绍了计算机系统中的零扩展和符号扩展两种数据类型转换方法。零扩展适用于无符号数,高位补0保持数值不变;符号扩展用于有符号数,根据符号位补0或1以保持数值和符号不变。

StarPrayers.的博客 948

FPGA优质开源项目 – UDP万兆光纤以太网通信

本文开源一个FPGA项目:UDP万兆光通信。文章末尾有该工程源码获取方式,有需要的小伙伴可以点赞、分享支持一下~

cjx_csdn的博客 4766

汇编语言期末复习

第一章 基本概念 汇编语言是一种助记符的语言,面向开发者。 机器语言是一种纯数字的语言,面向处理器。 汇编语言不是可移植的,具有较强的平台依赖性。 1.1 源码、反码、补码、移码之间的转换 当源码为正数时,源码=反码=补码,移码=补码+127 当源码为负数时,符号位不变其他位取反就为反码,反码+1为补码,移码为将补码符号位取反 补码转化为真值,符号位为0就为其他几位转化为十进制即可 符号位为1就用-128+其他几位转化为十进制就为真值 补码真值=符号位* (-2^N-1)+其余N-1位值 C/C++内嵌汇编

qq_43165337的博客 3306

电流模架构Bandgap设计与仿真

带隙基准作为集成电路中一个重要模块,被广泛应用在低压差线性稳压(LDO)、充电电池保护芯片和通信电路、射频收发器、flash存储器等多种模拟及数模混合集成电路中,并且是片上集成系统(SOC)芯片中不可或缺的部分,为整个芯片提供精确的电压参考点............

qq_50968231的博客 5万+

程序化广告行业(2/89):从程序化广告深挖数据处理技巧

大家好!我一直希望能和大家在技术学习的道路上携手共进,这也是我写这一系列博客的初衷。上次我们一起学习了Python基础的数据处理知识,这次咱们借助一本程序化广告手册,深入挖掘数据处理的更多技巧。这本手册涵盖了程序化广告从概念到技术实现的诸多方面,而其中处处都涉及到数据处理,相信会给我们带来不少收获

yyy173611的博客 4572

逆向工程与汇编语言之汇编语言基础(五)

逆向工程与汇编语言之汇编语言基础(五)

2303_78851087的博客 1341

解读Autoware.Universe规划模块:Behavior Path Planner

Behavior Path Planner是一个基于行为生成不同形态路径的路径规划器,负责生成 基于交通状况的路径(path), 车辆可以移动的可行驶区域(drivable area)(在路径消息中定义), 将被发送到车辆接口的转向信号(turn signal) 命令。

策 5491

32位汇编语言helloworld_ARM汇编语言 - 简介 [一]

说明:本系列文章将主要以ARMv7和ARMv8架构为例,介绍ARM汇编语言的一些基础知识。关于ARM汇编语言的学习,这里我要推荐一本书和一个网站,其中书是由宋岩翻译的《Cortex-M3权威指南》,其文笔风趣幽默,引人入胜,网站则是azeria-labs。当然,ARM官方的Architecture Reference Manual更是重要的参考。说起与系统结构相关的汇编语言,自然要先介绍该体系结构...

weixin_40000457的博客 649

工业相机的检测原理课件(建议收藏)

本课件为各位工程师详细介绍了工业相机的视觉检测原理 ,旨在为工程师调试工业相机的视觉检测原理时提供理论性指导。

Bamboo265925的博客 498

Android开发工程师(IOT)面试指南与参考答案

【摘要】绿联科技招聘Android开发工程师(IOT方向),要求5年以上Android开发经验,精通Kotlin/Java,熟悉IOT设备交互及跨平台开发。岗位职责包括客户端开发维护、技术调研及性能优化等。核心考察点包括:Kotlin协程在IOT低功耗场景的应用、多协议设备连接层设计、音视频性能优化及离线架构实现。重点技术涉及蓝牙Mesh群控、BLE功耗优化及ReactNative混合开发。需具备GooglePlay合规经验,熟悉Android13+权限管理,并能提供量化性能优化案例。

郑伟强dev的专栏 723

汇编语言之寻址方式

1 固定寻址(inherent addressing ) 特定的单操作数指令,操作数隐含在操作码中,在固定寻址的指令中,操作数被隐含在指令中,不需要执行总线周期,执行速度快 例子: 1.1 CBW命令,将AL中的符号位扩展到AH中,形成16位的操作数。比如AL中的符号位是1,则执行CBW命令后,AH则变成FF,如果符号位是0,则AH则变成00 1.2 PUSH AX ,源操作数是寄存器AX

dingwood的专栏 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

x86汇编语言基础(AT&T语法)

汇编语言可以帮助我们更深入了解计算机底层原理,掌握汇编对于高级语言的学习会有莫大帮助。

保持一颗永远好奇、勇于探索的心 9569

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

树莓派ARM汇编语言编程十讲(第5讲)

内容简介 树莓派单板机(Raspberry Pi Single Computer)是一种极了不起的产品,用户可以以非常低的成本获得一个Linux环境并带GPIO硬件扩展的迷你计算机系统。新一代树莓派4B还提供了良好的工业物联网和AIoT支持。树莓派单板机拥有完整的生态链,软硬件资源丰富,是嵌入式系统开发和智能硬件产品创新的很好选择。 作为嵌入式系统与嵌入式智能硬件开发基础中的基础,汇编语言是许多从...

袁易学的博客(Yuan Yixue's Blog) 1440

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

IA-32汇编语言笔记(1)—— 基础知识

记录汇编语言课笔记,可能有不正确的地方,欢迎指出 教材《新概念汇编语言》—— 杨季文 这篇文章对应书第一章 基础知识 文章目录一、CPU简介1、目标代码2、CPU基本功能二、汇编语言的概念1、机器指令2、汇编指令格式3、汇编语言及优缺点三、数据的表示&存储1. 数值数据的表示2. 非数值数据表示3. 基本数据类型4. 数据的存储 一、CPU简介 1、目标代码 目标代码/目标程序:...

佚失的诗篇 1211
上一篇: Linux/Unix平台X64函数调用约定
下一篇: 汇编语言——数据传输指令(Data Transfer)说明
ComputerInBook
博客等级 码龄19年 1168粉丝 464原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值