【问题标题】:intel x86 32-bit interrupt英特尔 x86 32 位中断
【发布时间】:2012-02-25 15:03:21
【问题描述】:

我决定开始学习 32 位 x86 intel nasm 语法,我有大量的 16 位编程,并且一直在对 32 位进行一些研究,我有几个关于中断的问题:

中断之间有什么区别吗? (我可以使用来自 16 位汇编的相同中断)如果中断列表相同,我是否必须指定它是否是 32 位中断? (对于 int. 0x16 使用 eax 而不是 ax 来放入读取的字节)。

另外,我确实尝试用谷歌搜索答案,但我找不到它们。

编辑 :: 我没有考虑包括我的操作系统,但现在我在 linux mint 12 上。

【问题讨论】:

  • 抱歉,我把其他问题删掉,改一下题目,把其他问题添加为独立问题。
  • 这将完全取决于您使用的操作系统。
  • 你说的是 CPU 寄存器eax,ax)而不是中断。
  • 我以为我要问的是,32 位汇编的中断是否与 16 位汇编中断相同。

标签: assembly 32-bit nasm


【解决方案1】:
  1. 如果您在实模式下运行程序(例如在 MS-DOS 下),您将能够使用在 16 位程序中使用的相同 DOS/BIOS 服务。
  2. 恐怕您将无法指定您将使用 32 位寄存器,因为 BIOS int 10h、int 13h 等不支持 32 位。只有 16 位的内容寄存器将被考虑在内。
  3. 不,32 位寄存器的上半部分没有名称,您需要使用位掩码和/或位移指令来访问它们。

【讨论】:

    猜你喜欢
    • 2019-09-05
    • 2018-08-26
    • 2019-08-02
    • 2014-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 2011-04-29
    相关资源
    最近更新 更多