;下面的处理是对文件进行处理
mov ax,4202h
mov cx,0
mov dx,0
int 21h
lea dx,kill_vir
mov cx,0FFH
mov ah,40h
int 21h
请问下大家这个代码为啥不能在exe文件的末尾写入0,搞了一天了就是写不进去
代码段的定义是:
DSEG segment
filepath db "*.exe",0;通配符,查找exe文件
dta db 02bh dup(0);初始化为0,用于存储上一个文件信息的数据块
kill_vir db 0FFFh dup(0)
string db "I'm a virus!",13D,10D,'$'
content db 30h dup(0) ;读取文件写入的缓冲区
DSEG ends
该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
在汇编语言中,程序写入到可执行文件中的方法与高级语言不同,需要使用特定的工具和技术。具体而言,您需要使用一个链接器(linker)将汇编代码与其他的目标文件(如库文件)组合成可执行文件。通常情况下,链接器会将代码段、数据段等各个段的内容组合成一个完整的可执行文件,并在文件开头加入一些必要的信息,如文件头、段表等。
在您提供的代码中,并没有看到链接器的相关代码。如果您只是将汇编代码保存到一个文件中,然后使用汇编器编译成目标文件,最后想直接将目标文件写入到可执行文件中,是不行的。因为这样生成的目标文件只包含汇编代码的二进制指令和数据,而缺少了必要的文件头和段表等信息。如果您尝试将这样生成的目标文件直接写入到可执行文件的末尾,是无法正确执行的。
因此,如果您想将汇编代码编译成可执行文件,需要使用链接器将其与其他目标文件组合成一个完整的可执行文件。在链接器中,您可以指定程序的入口点、代码段、数据段等各个部分的大小和位置,以及其他必要的信息。在链接器完成链接之后,您就可以得到一个包含完整文件头、段表和代码数据的可执行文件,可以直接运行或者写入到其他文件中。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢