CBW指令(Convert Byte to Word)的用法是將8位的位元組(AL暫存器中的值)擴展為16位的字(AX暫存器中的值)。具體操作如下:
如果AL暫存器中的值是正數(最高位為0),則AH暫存器會被設定為0。
如果AL暫存器中的值是負數(最高位為1),則AH暫存器會被設定為0xFF(即255的十進制值,或者十六進制的FFH)。
這個指令通常用於在進行有符號數運算時對數據進行擴展,以保證結果的正確性。在32位和64位模式下,CBW指令默認運算元大小為16位,但如果使用REX.W前綴,可以操作64位運算元。在64位模式下,CBW指令的行為與CDQE指令相似,後者將EAX暫存器中的雙字擴展為RAX暫存器中的值,同時複製符號位到高32位。
例如,如果AL暫存器中的值為0x4F(即79的十進制值),執行CBW後,AX暫存器中的值將為0x004F。如果AL暫存器中的值為0x8F(即143的十進制值),執行CBW後,AX暫存器中的值將為0xFF8F。