【发布时间】:2014-06-06 05:30:14
【问题描述】:
我正在尝试使用 C 的 printf 仅打印字符串的特定字节数。我正在使用 Nasm 汇编程序。问题是我不能使用例如“%.5s”,因为我需要打印的字节数发生了变化。
我有这样的事情:
extern printf
section .data
format: db "%s",10,0
msg: db "0123456789ABCDEF"
section .text
global main
main:
push msg
push format
call printf
add esp,12
mov eax,1
mov ebx,0
int 80h
【问题讨论】:
-
为什么这是一个汇编问题?您正在使用 C 函数,因此解决方案与在 C 中的解决方案相同。使用汇编程序只是一个不重要的细节。
-
但在 C 中我只需要写 printf("(%.*s)", n, string);其中 n 是我要打印的字节数,但在汇编程序中我不能这样做。
-
为什么不能在汇编器中这样做?
-
这不是汇编指令。
-
@olmanqj:它只是在调用
printf之前将另一个参数压入堆栈,就像您对msg所做的那样。
标签: c assembly printing printf nasm