汇编 – 使用3Dh会导致中断仅返回“已拒绝访问”
配置:
我在Assembly中创建了一个简单的程序,它只应该打开一个文件并为其写一个文本. assume cs:code,ds:data data segment fileName db "input.txt",0 ; We assure it is an ASCIIZ(ero) file. toWrite db "Hello World!","$" data ends code segment writeToFile: ; pentru functia 3Dh mov AH,3Dh mov AL,0h mov dx,offset fileName int 21h ret start_program: mov ax,data mov ds,ax CALL writeToFile mov ax,4c00h int 21h code ends end start_program 我用TurboDebugger看看会发生什么.奇怪的是,它总是放入AX值0005意味着拒绝访问 我可以在互联网上找到的所有东西,用于搜索ASSEMBLY访问被拒绝打开文件是关于DLL的,这没有帮助. 我已经尝试了任何东西,从重新启动程序到打开dosbox“作为管理员”.可悲的是,没有任何效果,我没有想法. 只获得“拒绝访问”的原因是什么?我提到我能够创建,删除和关闭文件,但我无法打开它们. 解决方法
为了正确操作,writeToFile过程需要
>使用允许后续写入的访问模式打开文件 我注意到你用“$”终止你将在这个文件中写的文本.我想知道你是否知道实际编写文件的DOS函数只能在CX中使用指定长度而不能使用任何类型的分隔符.你可以为这个“$”字符提供其他正当理由 – ; writeToFile: mov ax,3D01h ; 01h=WriteAccess mov dx,offset fileName int 21h jc NOK mov bx,ax ; Handle mov dx,offset toWrite mov cx,12 ; Length of "Hello World!" mov ah,40h int 21h jc NOK cmp ax,cx jne NOK NOK: ret 放置NOK标签的地方以及你在那里做的完全取决于你想要花多少精力来处理DOS返回的错误.在这个非常简单的程序中,您可能只是从调用返回并让程序终止. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows-server-2008-r2 – 我有什么版本的Windo
- windows-server-2008-r2 – 如何配置使用Windows
- 调用FileHelperEngine构造函数时,在Presentation
- 适用于Windows的Javascript控制台,如JSC
- Windows与Sony Camera Remote API的兼容性
- windows-7 – 远程重命名一台已经存在的Win 7计算
- 组策略下发提示 8007071a 远程过程调用被取消
- windows-phone-8.1 – 使用ZXing和MFT在Windows
- 配置Windows Server 2008路由器
- Windows – 从java代码中编程查找绝对的java.exe