问题标签 [fasm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - Window doesn't show up (x86 ASM, Windows)
I'm trying to open a window with a listbox in there. Nothing happens though, it stays open for about 5 seconds in Windows' task manager and then closes.
I'm using Flat Assembler (http://flatassembler.net/) to assemble and link my program.
assembly - X86 程序集中的浮点除法给出了奇怪的结果
我目前正在学习Simply FPU 教程。所以作为自己的练习,我想学习如何在汇编中划分浮点数。假设我要将 48.6 除以 17.1。这是代码。
代码的输出是
7.62883e+265
这里出了什么问题?
正如 Jester 所建议的,我使用 OllyDbg 检查了代码
我猜结果是正确的,但不知何故它被 printf 搞砸了?
assembly - x86 汇编器 cpuid 输出函数解析寄存器结果
我制作了一个 fasm 程序,cpuid
输出为:
我使用fprint
from/lib/ld-linux.so.2
来显示这个输出。
所以我需要从EAX
,... regs 中读取所有标志,并使用一些功能来查看所有规范。
这意味着从寄存器中读取位或制作一种cpuid
输出结构。
你能给我一个解决方案吗?
assembly - x86 程序集:movsd 指令问题
这是我的问题:
我尝试使用scanf
(in msvcrt.dll
) 输入单个浮点值,flat assembler
然后我编写了一个简单的“scanf 程序”,如下所示 (in C
):
然后使用参数cl.exe
编译/FA
生成汇编文件,如下所示:
我误解的是movsd
指令。根据这里: http: //faydoc.tripod.com/cpu/movsb.htm它Move doubleword at address DS:(E)SI to address ES:(E)DI
但我没有看到任何设置esi
,edi
在这里和movsd
生成的源文件有两个参数,但在链接中的文档中它不应该。有人可以在这里解释一下吗?
assembly - 将 as86 转换为 fasm
我正在尝试将 as86 的这一程序集转换为 fasm。我有3个问题:
1) 为什么 seg es
给定的error: illegal instruction.
this 在 16 位中无效?
2) mov byte [0],0x41
(FASM 语法) 是否完全等同于mov [0],#0x41
(as86 语法)?如果不是,你能告诉我相当于吗?
3) 为什么entry start
在 FASM 中给出错误?
这是程序集代码:
as86
和我写的 fasm 版本:
FASM
assembly - 在 ASM x86 FASM 汇编器中声明函数
我第一次尝试组装.. 我跳过了 helloworld 并决定直接潜入并做一个 CRC32Checksum :l
现在我很困惑哈哈。。
我的尝试:
如何调用我的 CRC32Checksum?我什至走在正确的轨道上吗?如何在汇编中声明函数?
function - ASM x86 FASM 中的函数参数
如何将参数传递给 Assembly 中的函数?我确实推动了最后一个参数,推动了第二个参数,推动了第一个参数..
但是我无法访问Meh
函数中的参数。我正在做的事情使程序崩溃了。
assembly - 不编译汇编指令
我正在使用平面汇编程序,当我想运行某些东西时,它会在汇编程序指令的每一行中写入:“非法指令”。例如在下面的代码中,它会写出.MODEL SMALL
不合法的内容,如果 id 删除这一行,它会写出.STACK 200H
不合法的内容,依此类推。
对于此代码,它可以工作:
assembly - 如何保持这个值
我保留了由我的汇编例程修改的字节。
我使用pusha
/* 完成了我的工作 */ 然后popa
导致分段错误。
如果我用/* 替换pusha
and做我的工作 */它工作正常。popa
push eax
push ecx
pop ecx
pop eax
但是为什么我会得到这个段错误?它与 有什么关系pusha
?
下面是我的代码的一部分。在这里,我只使用了八个寄存器中的两个。如果我需要在例程中使用 8,我是否需要推送和弹出每个寄存器?有没有办法pusha
只popa
保留buf?
不要给出段错误:
buf定义为:
段可读可写
buf rb 12
linux - 汇编语言中的指针
我试图了解如何在程序集中使用指针。通过阅读一些有关内部的教程,我认为已经了解了一些概念。但是当我去尝试它时,它确实有效。下面是一些将 C 转换为 ASM 的尝试。
C
(这里不是完整的代码,但它是一个字检查,因此,还有两个分别检查 0xFF0000,0xF000000 的 stmts。
ASM:
它返回一个段错误。
并尝试:
这是由 gcc 编译器生成的,您可以在其他一些程序集代码中看到它,返回
invalid symbol
在 FASM 汇编器上。FASM 并不真正支持它,还是我遗漏了什么?