首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FASM SHR奇怪的行为

FASM SHR奇怪的行为
EN

Stack Overflow用户
提问于 2012-04-25 02:56:35
回答 1查看 162关注 0票数 0

使用FASM,我正在尝试使用SHR指令来移位双字,该指令应该将位右移并附加零。代码如下:

代码语言:javascript
复制
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

我做错了什么?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-25 02:59:58

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

为清楚起见,0x89ABCDEF存储为0xEFCDAB89,因此右移位将以相反的顺序生成0x0EFCDAB8,即您看到的字节

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10304287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档