汇编x86-调用C函数

母亲

我想知道是否可以在不声明数据段中的格式数组的情况下调用printf。这个问题是关于x86的。

#include <stdio.h>

int main()
{
    __asm
    {
        push 1 ; number to print
        push 3710092110 ; format in ascii for %d\n
        call printf
        add esp, 8
    }

    return 0;
}

好的,我们需要推送格式的地址,而不是格式本身,所以类似这样的内容应该足够接近吧?

#include <stdio.h>

int main()
{
    __asm
    {
        push 3710092110 ; 3710092110 = format in ascii for %d\n
        push 1; argument to print
        lea edx, dword ptr[esp + 4]; get address of the format on stack
        push edx ; push the address of the format
        call printf
        add esp, 12
    }

    return 0;
}

你们碰巧有时间演示一个有效的例子吗?在互联网上找不到任何有关它的信息。

九月罗兰

您的第二个代码段接近,但对于格式字符串%d \ n的内容,仍需要使用其他值

涉及的字符转换为 = 37,d = 100,\ n = 10(十进制)。
但是使用十六进制要容易得多: = 25h,d = 64h,\ n = 0Ah由于缺乏端正性,我们必须将第一个字符放在dword的最低字节中以压入堆栈。我们将最高字节保留为零以具有必要的null终止。

%d\n  -->  000A6425h

您的代码:

#include <stdio.h>

int main()
{
    __asm
    {
        push 000A6425h ;= format in ascii for %d\n
        push 1; argument to print
        lea edx, dword ptr[esp + 4]; get address of the format on stack
        push edx ; push the address of the format
        call printf
        add esp, 12
    }

    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用于调用函数的 x86 汇编宏(带参数)

来自分类Dev

如何在x86体系结构上从C调用汇编函数?

来自分类Dev

从C程序调用x86汇编函数时出现分段错误

来自分类Dev

汇编x86-调用C函数

来自分类Dev

调用在malloc之后执行(汇编NASM x86)

来自分类Dev

在x86汇编中实现toupper函数

来自分类Dev

了解此x86汇编函数的作用,递归

来自分类Dev

x86汇编:递归函数的序幕弄乱了参数

来自分类Dev

了解x86 IA32汇编中的函数调用的汇编前/汇编后代码

来自分类Dev

基于汇编32位(x86)编写C代码

来自分类Dev

将x86汇编代码片段转换为C

来自分类Dev

汇编 x86 转换为 ARM 函数调用,并带有不同数量的参数到 Arm

来自分类Dev

x86 SIMD指令汇编中的16字节对齐(无C内部函数)

来自分类Dev

x86汇编-为什么[e] bx保留在调用约定中?

来自分类Dev

x86汇编gcc调用约定esp寄存器

来自分类Dev

哪种C ++代码将生成此x86汇编指令?

来自分类Dev

C ++中功能钩子:获取寄存器值并跳回[Windows上的x86汇编]

来自分类Dev

什么样的C ++代码将生成此x86汇编指令?

来自分类Dev

C 调用 ASM (YASM x86)

来自分类Dev

如何从带有C.bin扩展名的C程序中查看x86汇编-Linux

来自分类Dev

使用AND,OR,SHR和SHL指令以及数组将循环从x86汇编转换为C语言

来自分类Dev

x86汇编简介

来自分类Dev

汇编代码x86

来自分类Dev

x86中的下划线前缀问题:从C ++函数调用NASM函数在x64中有效,但在x86中失败

来自分类Dev

从C程序调用x86 Assembly函数时检索到错误的矩阵值

来自分类Dev

从C程序调用x86 Assembly函数时检索到错误的矩阵值

来自分类Dev

在32位x86 AT&T程序集上调用C函数的问题

来自分类Dev

x86过程调用内存分配

来自分类Dev

在x86中调用printf

Related 相关文章

  1. 1

    用于调用函数的 x86 汇编宏(带参数)

  2. 2

    如何在x86体系结构上从C调用汇编函数?

  3. 3

    从C程序调用x86汇编函数时出现分段错误

  4. 4

    汇编x86-调用C函数

  5. 5

    调用在malloc之后执行(汇编NASM x86)

  6. 6

    在x86汇编中实现toupper函数

  7. 7

    了解此x86汇编函数的作用,递归

  8. 8

    x86汇编:递归函数的序幕弄乱了参数

  9. 9

    了解x86 IA32汇编中的函数调用的汇编前/汇编后代码

  10. 10

    基于汇编32位(x86)编写C代码

  11. 11

    将x86汇编代码片段转换为C

  12. 12

    汇编 x86 转换为 ARM 函数调用,并带有不同数量的参数到 Arm

  13. 13

    x86 SIMD指令汇编中的16字节对齐(无C内部函数)

  14. 14

    x86汇编-为什么[e] bx保留在调用约定中?

  15. 15

    x86汇编gcc调用约定esp寄存器

  16. 16

    哪种C ++代码将生成此x86汇编指令?

  17. 17

    C ++中功能钩子:获取寄存器值并跳回[Windows上的x86汇编]

  18. 18

    什么样的C ++代码将生成此x86汇编指令?

  19. 19

    C 调用 ASM (YASM x86)

  20. 20

    如何从带有C.bin扩展名的C程序中查看x86汇编-Linux

  21. 21

    使用AND,OR,SHR和SHL指令以及数组将循环从x86汇编转换为C语言

  22. 22

    x86汇编简介

  23. 23

    汇编代码x86

  24. 24

    x86中的下划线前缀问题:从C ++函数调用NASM函数在x64中有效,但在x86中失败

  25. 25

    从C程序调用x86 Assembly函数时检索到错误的矩阵值

  26. 26

    从C程序调用x86 Assembly函数时检索到错误的矩阵值

  27. 27

    在32位x86 AT&T程序集上调用C函数的问题

  28. 28

    x86过程调用内存分配

  29. 29

    在x86中调用printf

热门标签

归档