为什么汇编程序运行无法运行,应该如何改?

  学习DOS下内存驻留程序的基本思想了解与熟悉用汇编语言编写程序。本课程设计将完成一个小的.com程序运行程序后,你的所有按键输入(指在DOS或Windows的DOS模式下)将不被接受所有输入将被替换成特定的字符串(回车键除外)。

  内存驻留程序的基本思想就是让程序一直停留在内存中不断的执行特定的命令。但内存驻留如何被执行呢一般地,内存驻留程序都是通过修改BIOS或DOS的系统中断向量表来实现的比如修改向量表中16H位置的中断(这個中断接收键盘的按键,在DOS中按键按下,这个中断就会被调用)让其指向我的程序,这时若有按键被按下则执行的是我的程序。下媔是一个最简单的框架:

  这一段代码是根据书上抄下来的先检测AH中是否为0(INT 21H - AH=0表示用户按下键盘),不为0就进入old_keyboard_io由系统原来的處理程序去处理用户的请求。这里”ASSUME DS:nothing”是告诉编译器忽略DS的内容这样才能正确跳转。

  编译运行之后任何按键输入都不起作用了,看来new_keyboard_io还是被执行了的那问题就出现在我写的new_keyboard_io的代码里面了。我查了查书INT 21H ? AH=00H是接受按键消息的啊。但我还发现了一个INT 21H ? AH=10H也是接受键盘消息的会不会DOS在提示符(c:>)下用的是AH=10H呢?我马上在原程序中加了一下代码:

  然后编译运行一切OK!看来是书上的代码给错了。(注:我只昰在WinArray8的MS-DOS环境下调试的不知道纯DOS用的是AH=00H还是AH=10H)

  《DOS内存驻留程序设计与实例》,李振格等北京航空航天大学出版社,1ArrayArray4

  • 以上内容由 搜集整理如转载请注明原文出处,并保留这一部分内容

      “华夏名网” 和 是成都飞数科技有限公司的网络服务品牌,专业经营虚拟主机,域名注册VPS,服务器租用业务。公司创建于2002年经过6年的高速发展,“华夏名网”已经成为我国一家知名的互联网服务提供商被国外权威機构webhosting.info评价为十大IDC服务商之一。

ptoteus自带一编辑器可以编辑汇编语訁。很好用不用像keil那样要诸多设置。

你可以有wave keil 来改啊~~~改好后重新编译生成hex文件,加进去就好了!

你对这个回答的评价是

protues 是不能编辑彙编语言的

不管是不是有运行,都不能!只能通过其他编程软件如keil来修改

你对这个回答的评价是?

我要回帖

更多关于 汇编程序运行 的文章

 

随机推荐