gpt4 book ai didi

c++ - 内联 ASM C++ 中的 DB ASM 变量

转载 作者:搜寻专家 更新时间:2023-10-31 01:39:45 26 4
gpt4 key购买 nike

我正在尝试弄清楚如何将 ASM 中的 DB 变量用于内联 ASM C++

我有这个 ASM 代码:

filename db "C:\imagen.bmp"
eti0:
mov ah,3dh
mov al,0
mov dx,offset filename
int 21h

在 C++ 中:

//ASCII of C:\imagen.bmp plus zero in the end because of int 21h
int filename=6758921051099710310111046981091120;

asm{
mov ah,3dh
mov al,0
mov dx,offset filename
int 21h
}

这是正确的吗?

最佳答案

int 类型只能容纳一个 16 位有符号整数,而您尝试分配给 filename 的数字超出了它的范围。由于 int 变量的长度为两个字节,因此它们对于存储文件名并不是很有用。相反,您应该将名称存储在 char 数组中,如下所示:

char filename[] = "C:\\imagen.bmp";

数组将包含一个零字节作为其最终元素,这与 C++ 中的字符串一样。

您也可以将整个内容替换为:

int handle;
_dos_open("C:\\imagen.bmp", 0, &handle);

关于c++ - 内联 ASM C++ 中的 DB ASM 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30746492/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com