- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
使用 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/
我想使用Fasm使用简单的MsgBox编译x64应用程序。我已经编写了代码,它可以成功编译,但是当我运行它时,没有显示任何内容,并且程序刚刚结束。怎么了? format PE64 GUI 4.0 en
所以我正在阅读有关如何创建结构的手册。 起初,我是这样做的: struc point X, Y { .X dw X .Y dw Y } section '.code' code reada
“消息” block 和它的输出有问题(print_less、print_more、print_equal、print_final)。我真的不知道如何存储字符串,所以这就是为什么我在输出中获取所有字符
这是我在 FASM 中使用的代码: format PE console entry main include '..\MACRO\import32.inc' section '.data' data
我对这一件事真的很困惑。我正在阅读 x86 处理器的程序集编程一书,并且正在阅读有关 mov 指令及其工作原理的信息。所以,作者说下面的指令是有效的mov mem,reg .....基本上将寄存器值移
我正在用 FASM 汇编程序编写程序,想看看所有宏展开后生成的代码是什么。通常可以使用 objdump -d 来反汇编二进制文件,但是对于由 fasm 生成的二进制文件,它只输出以下内容: $ cat
bios 中断函数 21h (ah = 1h) 应该从标准输入中读取一个字符并回显它。 我的阅读功能: mov ah, 1h int 21h 所以,如果我按下一个键,它会意识到这一点,
如何将参数传递给 Assembly 中的函数?我确实推送了最后一个参数,推送了第二个参数,推送了第一个参数.. 但是我无法访问 Meh 函数中的参数..我正在做的事情使程序崩溃了.. format P
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
使用 FASM 我正在尝试使用 SHR 指令移动双字,该指令应该将位移动到右附加零。这是代码: format ELF executable 3 entry start segment readab
维基百科指出: High-level assemblers in computing are assemblers for assembly language that incorporate fea
我有一个使用以下代码在 Delphi XE2 中编码的 dll: procedure xMain(MSG:String);export; begin MessageBox(0,PWideChar(
我已经完成了ARM汇编编程,并且想学习Intel Assembler。我一直听到所有提到的所有这些F / M / N / ASM,但是我不确定它们与我希望达到的目标之间有何关系? 有人可以帮我确定我需
我尝试在 FASM 中编译以下代码: mov DWORD PTR [ebp - 4], 1234567 它给了我一个“无效表达式”错误。但是以下代码有效: mov DWORD [ebp - 4],
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
只是想知道是否有一种方法可以将数字打印到控制台通过调用。它可以是 10 进制,也可以是十六进制,我不介意。 我想看看一些函数返回的格式。 我宁愿不使用 WriteConsole 和大量 asm 来做这
这个问题在这里已经有了答案: What are the calling conventions for UNIX & Linux system calls (and user-space funct
Flat Assembler 中的 win32a、win32ax、win32axp、win32w、win32wx 和 win32wxp .inc 文件有什么区别?我试图在 FASM 文档中找到它,但找
我想将寄存器 si 中存储的用户输入与另一个字符串进行比较。 顺便说一句,我正在使用 FASM。这是用户输入后到目前为止我的代码。 如果我使用 repe cmpsb 命令,我知道我必须使用额外的段,但
有谁知道如何添加FASM支持CMake?我试过原始指南 here ,但这对我不起作用。 最佳答案 因此,我设法添加了三个文件,如 here 所述在我的 CMake\share\cmake-3.7\Mo
我是一名优秀的程序员,十分优秀!