我已经在程序上面声明了常量,比如
cal equ 16
length equ 1000
我的问题是:我可以在我的.txt
文件中声明常量:
cal,cal,cal
要从我使用的文件中读取
mov bx, ax ;file handler
mov ah, 3fh ;interrupt number
mov cx, length
mov dx, offset music
int 21h
我在数据段中声明了
db tab length dup (0)
读取时一切正常,但我们需要读取常量而不是ASCII字符数。例如,如果我有:
cal
它的内容如下:
tab[0]= ascii of c
tab[1]= ascii of a etc
但我需要
tab[0]= 16
这是否可以在带有ASM的DosBox中使用? 对不起我的英文,并提前感谢你;)。
答案 0 :(得分:0)
看起来你很混淆了很多事情。您在上面定义的常量从文本字符串通过EQU
转换为汇编时的整数值(当您汇编程序时)。您尝试从文本文件中读取的字符串不是整数值 - 它们仍然只是文本(没有任何映射到您想要的整数值)。
如果可能的话,从二进制文件重建这个映射会非常复杂。
我怀疑这甚至是可能的 - 除非在汇编之前创建一个单独的字典 - 因为cal
和16
之间的text->值关系被使用在汇编之前用于文本替换的PreProcessor甚至汇编程序都不知道它的。因此,它也不会出现在Debug-info(如.PDB
- 文件左右)中。
即使Debug-info将包含在二进制文件中或随其一起提供,从它重建这种关系也会非常复杂。
所以,简短的回答是:
您必须自己创建一个 Dictionary 或从cal
(字符串)到16
(int)的其他映射来解析.txt
文件并得到您想要的值。