【问题标题】:What is the longest byte instruction possible in 8088?8088 中最长的字节指令是多少?
【发布时间】:2014-03-26 17:12:27
【问题描述】:

我正在为 8088 制作一个简约的汇编程序。我想知道最长的字节指令组合是什么?

目前我找到的最长指令是6个字节。:

add word [0134], 0032

翻译成

81 06 34 01 32 00

是否有超过 6 个字节的内容?


另外一个问题,我完全理解除了第 4 个字节之外的整个 6 个字节。

例如:

第一个字节表示:与16位立即数相加

第2个字节表示:基址指针+位移指令

第3个字节表示:位移

5-6字节表示:16bit数据

但我不知道第 4 个字节是什么意思,特别是“1”值。

这是什么意思?

【问题讨论】:

  • 34 01 不只是一个 16 位地址吗?
  • 它不应该是,除非我解释错了,8088 手册说:(第 2 个字节)mod 0 0 0 r/m 因为 06 转换为 00000110 r/m = 110。它表示如果 r/m = 110。那么 EA = (BP) + 位移。所以我假设 100 是基本指针,34 是位移。第 4 个字节对我来说仍然是个谜
  • 8088上有无限条指令,执行时不可中断。只需用段前缀(例如 CS:)填充 64Kbytes。处理器永远不会停止执行这个非常长的指令,因为地址会在 64K 边界处换行 :)
  • chepner 已经在指令中回答 34 01 来自 0134 而 32 00 来自 0032。
  • > 超过 6 个字节? - 使用将生成前缀字节的备用段寄存器(如 es:)。

标签: assembly x86 x86-16


【解决方案1】:

对于您已经确定的字长算术类型函数,8088 支持的最长字节为 4 字节。这些 4 字节指令不包含您建议的第 3 字节位移。 '1' 是指前 1 个字节的尾随位,而不是整个字节本身。

参考: The 8088 Data Sheet - Page 26-30

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多