汇编语言中的符号拓展怎么理解,有哪些规则
展开全部
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
展开全部
就是说比如-1
要写成因为是有符号数运算,所以要扩展
16位数 FFFF 是1 的补码,
20位数FFFFF 同样也是1的补码,
如果不扩展,20位数0FFFF就不是1 的补码
就是减法变加法
eax-1
扩展后EAX+FFFF/FFFFF
要写成因为是有符号数运算,所以要扩展
16位数 FFFF 是1 的补码,
20位数FFFFF 同样也是1的补码,
如果不扩展,20位数0FFFF就不是1 的补码
就是减法变加法
eax-1
扩展后EAX+FFFF/FFFFF
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
讨论这个问题,实际上是补码的知识。
和汇编语言的关系不大。
另外,汇编语言,也是有好多种的。
楼主究竟想要问什么,想好了再说。
不懂,可以继续追问。
和汇编语言的关系不大。
另外,汇编语言,也是有好多种的。
楼主究竟想要问什么,想好了再说。
不懂,可以继续追问。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
简单来说,就是把最高位扩展到要求的位数。
比如85h(-123)是8位的(最高位为1),如果要求扩展到16位,就是0ff85h(-123)。
比如7bh(123)是8位的(最高位为0),如果要求扩展到16位,就是007bh(123)。
比如85h(-123)是8位的(最高位为1),如果要求扩展到16位,就是0ff85h(-123)。
比如7bh(123)是8位的(最高位为0),如果要求扩展到16位,就是007bh(123)。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询