【发布时间】:2015-10-29 23:49:22
【问题描述】:
我有一个问题要找到这样的偏移量:
假设指令 BNE HERE 位于内存位置 $FF1234,标签 HERE 代表地址 $FF12C0 处的指令。计算该指令的偏移量(位移)。偏移量是否会被典型的汇编器存储为 8 位或 16 位值?为什么?
我尝试这样做以找到位移:
FF1234 + offset = HERE = FF12C0
I tried solving for Offset which is:
FF1234
-FF12C0
等于:33432820?
这是计算偏移量的正确方法吗?
【问题讨论】:
-
不,显然如果
FF1234 + offset = FF12C0那么offset = FF12C0 - FF1234。还要检查 68k 是否使用当前或下一条指令作为基础。 -
好吧,有道理,但是是 8 位还是 16 位?
-
由于偏移量是
8C并且超出了 8 位有符号的范围,因此它将是 16 位。 -
那么8位有符号的范围是多少?如果一个值落在该范围内,那么它必须是 8 位?我理解正确吗?
-
范围是十进制的 -128 到 +127,不,在这种情况下它必须为 8 位,因为所有这些都可以表示为 16 位也。但是,超出该范围的任何内容都不能是 8 位。