相关疑难解决方法(0)

如何在Windows下的汇编程序中编写hello world?

我想在Windows下编写基本的程序集,我正在使用NASM,但我无法正常工作.

如何在Windows上没有C函数的帮助下编写和编译hello world?

x86 assembly winapi nasm

84
推荐指数
8
解决办法
14万
查看次数

x86-64中movq和movabsq之间的区别

我是这里的新手,刚刚开始学习汇编语言.所以,如果我错了,请纠正我,或者如果这篇文章没有任何意义我会删除.

我在讨论x86-64英特尔架构中的数据移动指令.我已经读过,常规movq指令只能有直接的源操作数,可以表示为32位二进制补码数,而movabsq指令可以有任意64位立即数作为其源操作数,并且只能有一个寄存器作为目标.

你能详细说明一下吗?这是否意味着我只能使用movabsq指令移动64位立即值?只有立即价值到登记册?我不知道如何将64位立即值移动到内存中.或者也许我错了一些重要的事情.

x86 assembly x86-64 instruction-set att

19
推荐指数
1
解决办法
8093
查看次数

IDA 反汇编为 Visual Studio 2017 中编译的 exe 生成与 ASM 文件完全不同的代码

我使用 Visual Studio 2017 编译了一个简单的程序

#include <stdio.h>
int main()  
{
    printf("hello, world\n"); 
    return 0; 
}
Run Code Online (Sandbox Code Playgroud)

我用命令行编译

cl 1.cpp /Fa1.asm 
Run Code Online (Sandbox Code Playgroud)

这给了我(大部分)对我有意义的汇编代码

; Listing generated by Microsoft (R) Optimizing Compiler Version 19.14.26429.4 



INCLUDELIB LIBCMT
INCLUDELIB OLDNAMES

CONST   SEGMENT
$SG5542 DB  'hello, world', 0aH, 00H
CONST   ENDS
PUBLIC  ___local_stdio_printf_options
PUBLIC  __vfprintf_l
PUBLIC  _printf
PUBLIC  _main
PUBLIC  ?_OptionsStorage@?1??__local_stdio_printf_options@@9@4_KA ; `__local_stdio_printf_options'::`2'::_OptionsStorage
EXTRN   ___acrt_iob_func:PROC
EXTRN   ___stdio_common_vfprintf:PROC
;   COMDAT ?_OptionsStorage@?1??__local_stdio_printf_options@@9@4_KA
_BSS    SEGMENT
?_OptionsStorage@?1??__local_stdio_printf_options@@9@4_KA DQ 01H DUP (?) ; `__local_stdio_printf_options'::`2'::_OptionsStorage
_BSS    ENDS
; Function compile flags: /Odtp
_TEXT …
Run Code Online (Sandbox Code Playgroud)

assembly ida disassembly visual-studio-2017

1
推荐指数
1
解决办法
1925
查看次数

在 64 位 Windows 上设置汇编程序

我真的需要一些帮助。我已经在网上搜索了大约 2 天,似乎无法找到我遇到的问题的答案。

  1. 我下载了 nasm 并安装了它,它似乎可以工作,但我似乎找不到任何适用于 Windows 64 位的示例代码(如果你能为我或其他东西制作一个简单的 hello world 示例,那就太棒了)。(以及如何编译它)

  2. 我如何将 .o 文件变成 .exe?

  3. 我将如何访问屏幕或 GPU 内存(我认为)以在屏幕上打印内容(例如某种控制台应用程序)?

windows assembly x86-64

0
推荐指数
1
解决办法
2137
查看次数