Opecode ADD - HobbyOSs/opennask GitHub Wiki
- ADD命令(Add)
- よく見ると上記の表は間違えていた。デベロッパーズ・マニュアル、中巻 A: 命令セット・リファレンス A-Mを見よう。
結構複雑
符号拡張(ふごうかくちょう、Sign extension)とは、
符号付の数値を表現するビット列が格納領域のビット幅より短い場合に、
隙間を適切に埋めることによって数値としての同一性を維持する手法である。
0x04 ib ADD AL, imm8 imm8をALに加算する
0x05 iw ADD AX, imm16 imm16をAXに加算する
0x05 id ADD EAX, imm32 imm32をEAXに加算する
0x80 /0 ib ADD r/m8, imm8 imm8をr/m8に加算する
0x81 /0 iw ADD r/m16, imm16 imm16をr/m16に加算する
0x81 /0 id ADD r/m32, imm32 imm32をr/m32に加算する
0x83 /0 ib ADD r/m16, imm8 符号拡張imm8をr/m16に加算する
0x83 /0 ib ADD r/m32, imm8 符号拡張imm8をr/m32に加算する
0x00 /r ADD r/m8, r8 r8をr/m8に加算する
0x01 /r ADD r/m16, r16 r16をr/m16に加算する
0x01 /r ADD r/m32, r32 r32をr/m32に加算する
0x02 /r ADD r8, r/m8 r/m8をr8に加算する
0x03 /r ADD r16, r/m16 r/m16をr16に加算する
0x03 /r ADD r32, r/m32 r/m32をr32に加算する
- 例
putloop:
MOV AL,[SI] ; 8a04 ;
ADD SI,1 ; 83c601 ; SIに1を足す