windows – 汇编中的非法指令
发布时间:2020-12-14 05:47:40 所属栏目:Windows 来源:网络整理
导读:我真的不明白为什么这个简单的代码在第一次尝试时工作正常但是什么时候 把它放在一个程序中,错误显示: NTVDM CPU遇到了非法指令 CS:db22 IP:4de4 OP:f0 ff ff ff ff 第一个代码段工作得很好: .model small.stack 100h.codestart: mov ax,@data mov ds,a
我真的不明白为什么这个简单的代码在第一次尝试时工作正常但是什么时候
把它放在一个程序中,错误显示: NTVDM CPU遇到了非法指令 第一个代码段工作得很好: .model small .stack 100h .code start: mov ax,@data mov ds,ax mov es,ax MOV AH,02H ;sets cursor up MOV BH,00H MOV DH,02 MOV DL,00 INT 10H EXIT: MOV AH,4CH INT 21H END 但是这会产生错误: .model small .stack 100h .code start: mov ax,ax call set_cursor PROC set_cursor near MOV AH,02H ;sets cursor up MOV BH,00H MOV DH,02 MOV DL,00 INT 10H RET set_cursor ENDP EXIT: MOV AH,4CH INT 21H END 注意:Windows配置没有任何问题.我尝试过很多样本代码,但效果很好 谢谢 解决方法
你遗漏了一个JMP:
call set_cursor jmp EXIT ; <== you forgot this part PROC set_cursor near 发生了什么事情,在调用set_cursor之后,你会直接进入proc并再次执行它,然后当你点击ret时它弹出堆栈然后你跳到了,嗯,谁知道呢? 编辑:正如其他人指出的那样,你最好在主代码结束后放置你的PROC,而不是将它粘在中间并跳过它.但你可能已经想到了:) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 有谁知道如何在Windows上设置ZeroMQ以使用OpenPGM?
- windows-7 – 如何在Windows 7中增加剪贴板的大小?
- windows – MS.Internal.XcpImports.MethodEx(IntPtr ptr,S
- windows – CoInitializeSecurity错误
- 使用WIX的InstallDir UI扩展时,有条件地选择两个退出对话框
- Windows上禁用SSL V3需要重启吗? – 贵宾犬利用
- windows – 如何使用UTF-8编码knit2html?
- windows-server-2003 – PHP MYSQL站点性能
- windows – 如何“真正”减少KVM VM映像的大小?
- Windows Server 2003下配置IIS6.0+php5+MySql5+PHPMyAdmin环
推荐文章
站长推荐
热点阅读