【问题标题】:How to print a DWord in assembly?如何在汇编中打印 DWord?
【发布时间】:2016-09-29 00:05:01
【问题描述】:

我正在学习汇编,如果能够在屏幕上输出一个数字而不仅仅是一串文本,那就太好了。我知道如何使用mov eax, 1 打印字符,但这不适用于 DWords。

我使用的是 64 位 Ubuntu。

生成文件:

all:
    nasm -f elf64 asm.s -o asm.o
    ld asm.o -o asm
    rm asm.o

【问题讨论】:

  • 如果没有看到您的代码,makefile 不会帮助任何人。向我们展示您已经编写的内容,并具体描述您收到的错误以及您如何尝试解决它。​​
  • 嗨,我真的没有任何代码,我只是想知道如何打印出一个 dword 而不仅仅是一个 ascii 字符串。很抱歉发布了 makefile,我认为它对了解汇编程序和配置很有用。我的错。
  • 您必须编写一个函数/代码,将数字(如 dword 值)转换为字符串,然后使用系统调用打印该字符串。更简单的方法是使用 GCC 进行链接,使用函数 main 而不是 _start,然后调用像 printf 这样的 C 库函数来打印格式化文本.本教程/代码可能会有所帮助:csee.umbc.edu/portal/help/nasm/sample_64.shtml#printf1_64.asm

标签: assembly numbers nasm dword


【解决方案1】:

打印东西的一种简单方法就是使用printf,你问的是如何打印一个双字,这很简单:

extern _printf

SECTION .data
    msg:     db "Printing a dword: %d",10,0
    number:  dd  123456789

SECTION .text
    global start

start:
    push dword [number]
    push dword msg
    call _printf
    add esp, 8
    mov eax, 0
    ret

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2014-04-03
    相关资源
    最近更新 更多