15.3.2 運算元長度覆蓋
運算元長度覆蓋(Operand-size override),運算碼是66 h再與其他運算碼搭配使用,用在16位元與32位的大小切換。其實他是一個在現有編碼上面的擴充方法,怎麼說呢?
還記得上個小節裡我們故意不講的AX、CX、DX、BX嗎?是的,他就用了這個擴充碼來與32位元的EAX、ECX、EDX、EBX共用運算碼。我們用同法來追蹤一下:
放大來看,每個都有66h開頭,搭配EAX、ECX、EDX、EBX,就把32位元暫存器切換成16位元暫存器:
把剩下的給驗證完:此處定義(#define)中的倒斜線(\)是換行表示用,只是整齊好看而已。
同樣的,8位元的SP、BP、SI、DI也用這種運算元重寫(Operand override) 66 h來與ESP、EBP、ESI、EDI共用編碼,這樣各位可以把上小節的運算碼給填補齊全了嗎?