yuruotong1 发表于 2019-1-30 09:48:16

mov [bx],bx会卡死?



请大家看看这段代码什么问题呀

jackz007 发表于 2019-1-30 10:09:58

必然

本帖最后由 jackz007 于 2019-1-30 10:37 编辑

      你的 loop 指令没有设定循环次数,这个值通过 cx 指定。

      内存地址 00000H - 00400H 为 DOS 操作系统的中断向量表,该表毎 4 个字节对应一个中断服务程序的入口地址,系统总共有 100 H 个中断(int 00H ~ int ffH),所以,中断向量表的长度是 400H 字节。

      楼主程序所要操作的目的地址恰好从 00020H 起,对应于 4H 号中断的服务程序入口地址。

      楼主的程序是在破坏 DOS 操作系统最核心的数据区域,其结果必然是灾难性的。例如,如果数据修改覆盖到 9H 和 16H 号中断,会导致键盘失灵,如果覆盖到 10H 号中断,会导致屏幕显示失灵,如果覆盖到 13H 号中断,会导致磁盘 I / O 失灵,如果覆盖到 21H 号中断,所有的操作系统功能都将失灵。楼主所描述的程序卡死估计和这些原因有关。

      楼主应该自己在程序中专门开辟一个数据段,把所有的操作都约束在自己程序所能掌控的内存范围内,这样就不会出问题了。

行客 发表于 2019-2-9 18:53:36

支持楼上分析
页: [1]
查看完整版本: mov [bx],bx会卡死?