gpt4 book ai didi

linux - FASM SHR 奇怪的行为

转载 作者:太空宇宙 更新时间:2023-11-04 11:32:22 26 4
gpt4 key购买 nike

使用 FASM 我正在​​尝试使用 SHR 指令移动双字,该指令应该将位移动到右附加零。这是代码:


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

我做错了什么?

P. S. 这个值是通过打开我在十六进制编辑器中重定向输出的文件获得的。 (不是输出本身)

最佳答案

您的号码存储为小端。 http://en.wikipedia.org/wiki/Endianness

为了澄清,0x89ABCDEF存储为0xEFCDAB89,所以右移产生0x0EFCDAB8,也就是你看到的字节,倒序

关于linux - FASM SHR 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10304287/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com