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

本文详细介绍了x86架构中用于进行符号扩展的指令,包括CBW、CWDE、CDQE、CWD、CDQ和CQO。这些指令用于将低精度寄存器中的数值扩展到高精度寄存器,保持符号位不变。通过示意图、机器码和测试代码,阐述了每个指令的功能和使用方法,并展示了在不同寄存器之间的符号扩展过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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开发文档和手册

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值