汇编语言中的符号拓展怎么理解,有哪些规则

 我来答
物理公司的
2015-08-21 · TA获得超过5697个赞
知道大有可为答主
回答量:6105
采纳率:86%
帮助的人:1392万
展开全部

1.符号扩展指令: 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

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

2.符号扩展指令的本质
;一个正数(无符号)或负数(有符号)在扩展储存空间时, 使用这些指令可保证原值不变

 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
AJISky
2011-03-10 · TA获得超过1122个赞
知道小有建树答主
回答量:457
采纳率:100%
帮助的人:247万
展开全部
就是说比如-1
要写成因为是有符号数运算,所以要扩展
16位数 FFFF 是1 的补码,
20位数FFFFF 同样也是1的补码,
如果不扩展,20位数0FFFF就不是1 的补码
就是减法变加法
eax-1
扩展后EAX+FFFF/FFFFF
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

2015-05-31 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
讨论这个问题,实际上是补码的知识。
和汇编语言的关系不大。

另外,汇编语言,也是有好多种的。
楼主究竟想要问什么,想好了再说。

不懂,可以继续追问。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
呀豆荚
2011-03-15 · TA获得超过3080个赞
知道小有建树答主
回答量:752
采纳率:100%
帮助的人:1271万
展开全部
简单来说,就是把最高位扩展到要求的位数。
比如85h(-123)是8位的(最高位为1),如果要求扩展到16位,就是0ff85h(-123)。
比如7bh(123)是8位的(最高位为0),如果要求扩展到16位,就是007bh(123)。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式