【问题标题】:program to delete a file in assembly language?用汇编语言删除文件的程序?
【发布时间】:2020-07-10 10:58:01
【问题描述】:

我试图用汇编语言删除一个文件,但它显示非法路径

我正在使用 tasm 或 dosbox

.MODEL SMALL

.STACK 100H

.DATA

FNAME       DB      'file.txt' ,0

.CODE

MAIN PROC
 
MOV AX,@DATA

MOV DS,AX                   ;initialize OS

MOV AH, 41H                     ;For deleting file

LEA DX, FNAME               ;DX has filename address

INT 21H                     

MOV AH, 4CH                  ; return control to DOS

INT 21H

   MAIN ENDP

 END MAIN

【问题讨论】:

  • 您的代码看起来正确。文件是否存在于所需路径(即当前驱动器的工作目录中)?是否被移除?请注意,AX 仅在退出时设置 CF 时包含错误代码。
  • 您的代码是正确的。你如何组装/链接代码,你从哪里得到错误信息?很可能不是来自您自己的二进制文件,因为 DOS 不会在那里显示任何错误消息

标签: assembly x86 dos x86-16


【解决方案1】:

使用MOV DX, OFFSET(FNAME) 这肯定会解决您的问题!

【讨论】:

  • 这与LEA DX, FNAME 的效果完全相同,但短了 1 个字节。这是一种优化,但问题声称存在某种正确性问题,而不是速度或代码大小。 (评论说代码正确的,所以可能只是构建错误,或者使用不包含file.txt的当前目录运行它)
猜你喜欢
  • 2016-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多