Assembly movb如何将文件扩展名设置为.asm?
我在找。我认为这是lexer的一部分 我遇到了Assembly movb如何将文件扩展名设置为.asm?,assembly,Assembly,我在找。我认为这是lexer的一部分 我遇到了MOVB指令,在注释中它说这将文件扩展名设置为“asm”: 这是如何工作的?标签EXTEND,该地址被移动到源索引(SI)寄存器(注意末尾的两个零字节)。目标索引(DI)寄存器指向偏移量9处的,该偏移量对应于中的文件扩展名 下面的movw和movb指令将2+1+2字节从EXTEND复制到FCB,同时增加SI和DI()。我对DOS内部结构或汇编编程一无所知,但+9似乎相关,由于DOS FAT文件名具有著名的8.3格式,因此扩展名从字符(在DOS FAT
MOVB
指令,在注释中它说这将文件扩展名设置为“asm”:
这是如何工作的?标签
EXTEND
,该地址被移动到源索引(SI
)寄存器(注意末尾的两个零字节)。目标索引(DI
)寄存器指向偏移量9处的,该偏移量对应于中的文件扩展名
下面的
movw
和movb
指令将2+1+2字节从EXTEND
复制到FCB
,同时增加SI
和DI
()。我对DOS内部结构或汇编编程一无所知,但+9
似乎相关,由于DOS FAT文件名具有著名的8.3格式,因此扩展名从字符(在DOS FAT中字符==字节)9开始。它正在初始化一个。文件扩展名位于偏移量9,“ASM”占用3个字节。所以16位代码中的MOVW+MOVB。您链接的参考是MOV,而不是MOVB或MOVW。是否有一些汇编器为movsb和movsw接受movb和movw,或者这是问题中的一个错误?我不认为这是一个错误,因为代码来自1982年,是从官方MS-DOS源代码repo复制的。我个人不记得有任何汇编程序使用这种语法;可能是某个内部工具从那时起停止/更新了。似乎支持MOVB/MOVW作为MOVSB/MOVSW别名的汇编器正是问题中的示例代码的来源。
MOV [LSTFCB],AL
MOV [LSTDEV],AH ;Flag device for list ouput
MOV SI,EXTEND
MOV DI,FCB+9
MOVW
MOVB ;Set extension to ASM
MOVW ;Zero extent field