为什么我的程序debug正常,但是在片上运行不起来

为什么我的程序debug正常,但是在片上运行不起来,第1张

因为你的程序没有等待输入的功能,所以运行结果一闪而过,你都来不及看。建议在程序运行结束肢饥前加入键盘输入的功能。这样,运行结束前就会等待你输入之后才结束空饥坦斗桐程序,这样你也就能看得到运行的结果了。debug之所以会有结果显示是因为,程序运行完后,结果显示在命令窗口上。那时候命令窗口并没有关闭,因为它要求你手动关闭。

在keil中使用stlink调试时,点击运行,程序始尘敬终跑不起来,巧让可能的运行是:在上一次调试中,有程序运行错误,例如:数组访问越界,导致keil中的项目工程文件出现错误,所以跑不起来,可以新建工程解决该问题,问题主要出现在keil的孝兄局工程文件上

05-07 补充:

这个问题的原因是,前唤蚂掘面定义的数据当作被当作指令,但物模这些指令的执行并不影响后面的结果,你可以反汇编看一下。

13EA:0100 48DEC AX

13EA:0101 65DB 65

13EA:0102 6CDB 6C

13EA:0103 6CDB 6C

13EA:0104 6FDB 6F

13EA:0105 20576FAND [BX+6F],DL

13EA:0108 726C JB 0176

13EA:010A 64DB 64

13EA:010B 2124 AND [SI],SP

前面的这些就是那些数据对应的指令,他们没有影响后面的这3条指令的执行。

13EA:010D B409 MOV AH,09

13EA:010F CD21 INT 21

13EA:0111 CD20 INT 20

05-06 原始解答

问题不在你的程序,而在你的程序之后,

13A4:0100 db 'Hello World!$'

13A4:010D mov dx,0100

13A4:0110 mov ah,9

13A4:0112 int 21

13A4:0114

由于没有程序结束(返回DOS)的指令,这后面的不确定和核数据被作为指令执行,从而导致执行了非法指令而被 *** 作系统强制关闭。

你只需要在其后加上一条指令即可 INT 20


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12561314.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存