【发布时间】:2020-03-17 17:03:00
【问题描述】:
到目前为止,我有以下代码:
char* s;
s = new char[10];
__asm
{
mov ebx, s
mov byte ptr[ebx], 0x48 ;'H'
mov byte ptr[ebx + 1], 0x65 ;'e'
mov byte ptr[ebx + 2], 0x6C ;'l'
mov byte ptr[ebx + 3], 0x6C ;'l'
mov byte ptr[ebx + 4], 0x6F ;'o'
mov byte ptr[ebx + 5], 0x0A ; 'new line'
mov byte ptr[ebx + 6], 0;
mov eax, ebx
push eax
call DWORD ptr printf
pop ebx
}
我想在 asm 中声明一个不使用 DB 的 char 数组,看起来如何?
【问题讨论】:
-
您没有为您的问题提供足够的细节。你在说什么内存分配?您想要汇编语言和
printf()的内存分配?这真的没有意义,因为一个是语言,一个是标准的 C 函数。 -
不,对不起,我措辞不好,我想在 asm 中为 char 数组分配内存,然后调用 printf
-
你问的是如何用汇编语言声明一个字符数组?还是你问如何在运行时动态分配数组?
-
如果您询问如何声明字符数组,请参阅this question。
-
为什么?它是 inline 程序集,与独立程序相反,它更容易返回到 C 中进行打印。此外,NASM 与它有什么关系?内联汇编通常由编译器进行汇编。你的情况下的 C 编译器。
标签: c arrays assembly visual-c++ inline-assembly