Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly movb如何将文件扩展名设置为.asm?_Assembly - Fatal编程技术网

Assembly movb如何将文件扩展名设置为.asm?

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

我在找。我认为这是lexer的一部分

我遇到了
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