在 C 中使用内联汇编:在数据段中分配标签

Using inline Assembly in C: Assigning labels in data segment

我正在阅读有关在 DOS 中为 VGA-256 颜色汇编打印字符的教程。我正在阅读的教程是用 Pascal 编写的,我对这种语言的经验很少,而且我所有的 VGA 程序都是用 C 编写的。

我的问题是关于用于访问每个字符的位图的标签。在 Pascal 中,他们有这个:

procedure chr6x7_dat; assembler;
asm
  db  [=10=],[=10=],[=10=],[=10=],[=10=],[=10=],[=10=],[=10=],,,,,[=10=],,[=10=],
  db  ,[=10=],[=10=],[=10=],[=10=],[=10=],,$f8,,,$f8,,[=10=],,$f8,$a0
  db  $f8,,$f8,[=10=],$c8,$d0,,,,,[=10=],,$a0,,$a8,
  db  ,[=10=],,,[=10=],[=10=],[=10=],[=10=],[=10=],,,,,,,[=10=]
  db  ,,,,,,[=10=],,,$f8,,,[=10=],[=10=],,
  db  $f8,,,[=10=],[=10=],[=10=],[=10=],[=10=],,,,[=10=],[=10=],[=10=],$f8,[=10=]
  db  [=10=],[=10=],[=10=],[=10=],[=10=],[=10=],[=10=],,,[=10=],[=10=],,,,,
  db  [=10=],,,,$a8,$c8,,[=10=],,,,,,,[=10=],
  db  ,,,,$f8,[=10=],$f8,,,,,,[=10=],,,
  db  ,$f8,,[=10=],$f8,,$f0,,,,[=10=],,,$f0,,
  db  ,[=10=],$f8,,,,,,[=10=],,,,,,,[=10=]
  db  ,,,,,,[=10=],,,[=10=],[=10=],,,[=10=],,
  db  [=10=],,,,[=10=],[=10=],,,,,,[=10=],[=10=],$f8,[=10=],$f8
  db  [=10=],[=10=],[=10=],[=10=],,,,,,[=10=],,,,,[=10=],
  db  [=10=],,,$a8,$b8,,,[=10=],,,,$f8,,,[=10=],$f0
  db  ,$f0,,,$f0,[=10=],,,,,,,[=10=],$e0,,
  db  ,,$e0,[=10=],$f8,,$f0,,,$f8,[=10=],$f8,,$f0,,
  db  ,[=10=],,,,,,,[=10=],,,$f8,,,,[=10=]
  db  ,,,,,,[=10=],,,,,,,[=10=],,$a0
  db  $c0,$a0,,,[=10=],,,,,,$f8,[=10=],,$d8,$a8,
  db  ,,[=10=],,$c8,$a8,,,,[=10=],,,,,,
  db  [=10=],$f0,,,$f0,,,[=10=],,,,$a8,,,[=10=],$f0
  db  ,,$f0,,,[=10=],,,,,,,[=10=],$f8,,
  db  ,,,[=10=],,,,,,,[=10=],,,,,
  db  ,[=10=],,,,$a8,$a8,,[=10=],,,,,,,[=10=]
  db  ,,,,,,[=10=],$f8,,,,,$f8,[=10=],,
  db  ,,,,[=10=],[=10=],,,,,,[=10=],,,,
  db  ,,[=10=],,,,[=10=],[=10=],[=10=],[=10=],[=10=],[=10=],[=10=],[=10=],[=10=],$f8
  db  [=10=],$f8,$f8,$f8,$f8,$f8,$f8
end;

我想在 C 中有一个类似的标签,这样我就可以在我的内联汇编命令中访问它,以根据 ASCII 值计算偏移量。但是我不知道如何声明我上面在 C 中发布的内容。

谁能帮帮我?

使用pascal $ char用于定义hexadecimals

如果您想在 中定义它,只需创建一个 uint8_t 的 array/matrix 并用帕斯卡值初始化它,用 $ 替换 0x

$F5 将是 0xF5