我正在试图弄清楚如何将ASM中的数据库变量用于Inline ASM C ++
我有这个ASM代码:
//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
}
并在C ++中:
NSlog("%f", cell.imageView.frame.size.width);
这是对的吗?
答案 0 :(得分:3)
类型int
只能容纳16位有符号整数,而您尝试分配给filename
的数字超出其范围。由于int
变量长度为两个字节,因此它们对于存储文件名并不是那么有用。相反,您应该将名称存储在char
数组中,如下所示:
char filename[] = "C:\\imagen.bmp";
数组将包含一个零字节作为其最终元素,正如C ++中的字符串一样。
你也可以用以下内容替换整个东西:
int handle;
_dos_open("C:\\imagen.bmp", 0, &handle);