您的位置:首页 > 其它

初学汇编的知识总结!

2007-05-01 03:26 169 查看
  最近刚刚接触输入输出,对中断,I/O的理解还是很乱,在这里做一个总结

  我们通常的MOV是针对主存的,和CPU中的寄存器,在80X86中I/O地址和内存不是统一编址,所以对主存和I/O的操作就不是同一指令,在I/O中用IN,OUT.

  固化在ROM上的BIOS的数据区中包含了各个中断处理程序,和I/O端口地址,而中断向量存储在内存开始的1K内存中

  DOS功能调用是建立在BIOS基础上的,BIOS又是建立在硬件的基础上的,所以越接近底层也就能获取更高效率的程序,但也会更加烦琐,需要你考虑的问题就越多.下面分别来说这3个方面

  直接和硬件对话,最有效率的方法,但一些琐碎的事也就接踵而来,开关中断,外设的状态等等.比如先开中断,相应的控制状态位打开以允许更高级别的中断产生,中断嵌套时的现场保护,你要自己去IN状态,自己判断,自己IN I/O端口的数据,比如打印机,但图形与键盘的缓冲区在内存中,你要自己去输入输出该内存区.

  但BIOS的中断程序似乎要轻松很多,只要入口参数设置好,INT一个中断号(类型),自动通过1K内存中的中断向量表查找段直和偏移来找到中断处理程序,你要的结果就在出口参数所在的寄存器中了,也就是说1个INT把上边和硬件直接对话的程序全都干了.在这里说一下,中断有256种类型,没个类型有2字节的段直,2字节的偏移,所以占用了1K,而且INT属于内部中断,可遇见的,是程序员遇知的,而外部中断是不可遇知的,随即的.要看CPU是否开中断了,中断控制器的响应位是1还是0,所以直接和硬件对话是很麻烦的.

  至于DOS功能调用就不多说了,大家经常用到的.

  建议多用BIOS功能,他主要是根据中断向量找到中断处理程序,而直接对话就是你自己直接去写处理程序,除非非要求效率,不然还是谨慎起见!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: