大佬教程收集整理的这篇文章主要介绍了汇编 – 使用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“作为管理员”.可悲的是,没有任何效果,我没有想法.
同样奇怪的是,我的一位朋友说,在激活他的窗户10之后,一切都运转正常.
>使用允许后续写入的访问模式打开文件
>检查DOS返回的CF,看看是否一切正常
我注意到你用“$”终止你将在这个文件中写的文本.我想知道你是否知道实际编写文件的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返回的错误.在这个非常简单的程序中,您可能只是从@R_403_1872@并让程序终止.
以上是大佬教程为你收集整理的汇编 – 使用3Dh会导致中断仅返回“已拒绝访问”全部内容,希望文章能够帮你解决汇编 – 使用3Dh会导致中断仅返回“已拒绝访问”所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。