CBW CWDE CDQ CWD 擴充套件指令

2021-06-08 20:08:44 字數 3234 閱讀 6663

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 無影響, 也無引數

; 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

retmain

endp

end main

符號擴充套件指令的本質

;乙個正數(無符號)或負數(有符號)在擴充套件儲存空間時, 使用這些指令可保證原值不變

; test25_2.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

mov

al,

68 

cbw  printhex

ax;0044

printdec

ax;68

mov

al, -

68 

cbw  printhex

ax;ffbc

printdec

ax;-68

retmain

endp

end main

cbw、cwde 和 movsx 的關係

; 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

retmain

endp

end main

CBW CWDE CDQ CWD 擴充套件指令

cdq 是乙個讓很多人感到困惑的指令。這個指令把 eax 的第 31 bit 複製到 edx 的每乙個 bit 上。它大多出現在除法運算之前。它實際的作用只是把edx的所有位都設成eax最高位的值。也就是說,當eax 80000000,edx 為00000000 當eax 80000000,edx ...

php uuid 擴充套件,PHP 擴充套件

編譯安裝時候沒有啟用下面擴充套件的,可以單獨安裝 php關鍵性擴充套件安裝 www lanmps 假設 套件 安裝目錄 www lanmps php 7.0.11 假設 php 安裝目錄 1.fileinfo 擴充套件 它應用於檔案處理的改進 進入套件解壓縮後目錄 假設套件目錄為 root lanm...

位擴充套件和字擴充套件

字位擴充套件 儲存資訊一般是儲存在儲存器 rom ram 上的 在實際應用中,經常出現一片rom或ram晶元不能滿足對儲存器容量需求的情況,這就需要用若干片rom或ram組合起來 形成乙個儲存容量更大的儲存器。而組合方式有子擴充套件和位擴充套件兩種。字擴充套件用多片位寬相同的儲存器 rom或ram ...