Inline ASM C ++中的DB ASM变量

时间:2015-06-10 03:16:05

标签: c++ assembly inline-assembly dos borland-c++

我正在试图弄清楚如何将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);

这是对的吗?

1 个答案:

答案 0 :(得分:3)

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

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

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

你也可以用以下内容替换整个东西:

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