FASM を使用して、SHR
ビットを右にゼロを追加してシフトする命令で dword をシフトしようとしています。コードは次のとおりです。
format ELF executable 3
entry start
segment readable executable
start:
cmp byte [counter],0
jz fin
mov eax,4
mov ebx,1
mov ecx,some
mov edx,4
int 0x80 ; write 4 bytes
mov eax,4
mov ebx,1
mov ecx,splitter
mov edx,1
int 0x80 ; write a split byte (0x42)
shr dword [some],4
dec byte [counter]
jmp start
fin:
mov eax,1
xor ebx,ebx
int 0x80
segment readable writeable
some db 0x89,0xAB,0xCD,0xEF
splitter db 0x42
counter db 10
私はそのようなものを期待していました:0x89ABCDEF -> 0x089ABCDE -> 0x0089ABCD -> 0x00089ABC -> 0x000089AB -> 0x0000089A -> 0x00000089 -> 0x00000008 -> 0x00000000
しかし、私は代わりにこれを手に入れました:0x89ABCDEF -> 0xB8DAFC0E -> 0xABCDEF00 -> 0xDAFC0E00 -> 0xCDEF0000 -> 0xFC0E0000 -> 0xEF000000 -> 0x0E000000 -> 0x00000000
私は何を間違っていますか?
PS この値は、16 進エディタで出力をリダイレクトするファイルを開くことによって取得されました。(出力そのものではありません)