assembly - 在 Assembler 8086 中删除文件时出现问题
问题描述
这篇文章的原因是看看是否可以对这段代码做些什么,发生的情况是我不能删除一个文件,只要创建它的 3CH 函数是用 INT 21H 执行的,因为我做了测试并删除了执行创建文件的中断,如果我直接在 NMF 中输入文件名,删除是否有效,当我再次尝试使用 NMF 中的直接名称执行创建中断时,它会停止工作。
;Enter the file name
MOV AH, 0AH
LEA DX, NMF
INT 21H
MOV BL, NMF[1]
MOV NMF[BX + 2], ' '
;Create the file
MOV AH, 3CH
MOV CX, 0H
LEA DX, NMF + 2
INT 21H
MOV HND, AX
;Close the file
MOV AH, 3EH
MOV BX, HND
INT 21H
;Delete the file
MOV AH, 41H
LEA DX, NMF + 2
INT 21H
NMF 和 HND 定义如下。
NMF DB 100 DUP(' '), 0
HND DW 0
值得一提的是,在启动中断删除文件时CF = 0和AX = 00003,所以我不知道是不是错误,因为CF不是1。我希望你能帮助我,谢谢。
解决方案
DOS 函数CREATE OR TRUNCATE FILE和DELETE FILE在 DS:DX 中需要一个以零结尾的文件名,但您提供了一个以空格结尾的名称:
MOV BL, NMF[1]
MOV NMF[BX + 2], ' '
应该
MOVZX BX,[NMF+1] ; Load BX with the filename size.
MOV [NMF+BX+2],BH ; Zero-terminate the filename (using BH=0).
该指令MOV BX, HND
使用为句柄而不是句柄本身保留的内存变量的偏移量加载 BX;它应该是MOV BX,[HND]
。
推荐阅读
- r - Stargazer 中的指数 CI
- docker - tf_serving docker中的“direct_session_runs”和“graph_runs”有什么区别
- javascript - Facebook Feed 对话框 URL 图片参数未覆盖 og:image
- ios - 如何从主类访问自定义集合视图单元类中的文本视图
- java - 使用 Angular 7 从 Tomcat 错误页面获取错误消息
- sql - 如果组合框 = 特定文本,则在文本框中显示当前日期
- python - 非递归地将列表转换为 numpy.array
- python - 如何缓存和迭代未知大小的数据集?
- javascript - TypeError: collections.Map 不是函数
- python - 在带有 Bokeh serve 的图中使用标签和 openstreetmap