assembly - MASM 可以自动跳转扩展错误?
问题描述
masm 中的后续页面指出:如果源文件 8086-80286 程序包含超出 -128 到 +127 字节范围的条件跳转,则汇编器发出 3 级警告并生成 2 条指令(包括无条件跳转)相当于所需的指令。可以通过OPTION LJMP和OPTION NOLJMP指令启用和禁用此行为 。
以下代码不执行上述操作:
.8086
OPTION LJMP
.model tiny
.data
mydata db ?
.code
Label1: xor ax,ax
inc ax
db 128 dup (?)
jz Label1
jmp Label1
end
创建的代码如下:
.8086
OPTION LJMP
.model tiny
0000 .data
;Dseg segment byte public
0000 00 mydata db ?
;Dseg ends
;assume ds:Dseg
;Cseg segment byte public
0000 .code
0000 33 C0 Label1: xor ax,ax
0002 40 inc ax
0003 0080 [ dw 128 dup(?)
0000
]
0103 75 03 E9 FEF8 jz label1
0108 E9 FEF5 jmp Label1
;Cseg ends
end
不会产生错误。我预计会出现错误,因为我专门为汇编代码选择了 .8086。请注意,条件跳转的 .386 形式已创建。如果使用 .8086 到 .286,它会创建完全相同的代码。因此,我相信不会产生错误。如果 SHORT 不在指令中,我无法让汇编器为条件跳转生成任何错误消息。这是bug???如何获取发生此错误所需的代码示例?
解决方案
推荐阅读
- java - 使用 newSingleThreadExecutor 消除 ExecutorService 中的竞争条件
- python - Python:具有多个元素的数组的真值是模棱两可的。使用 a.any() 或 a.all()
- node.js - 使用 Node.JS 使用 Apple 的 .p8 文件签署 JWT
- python - 创建向量空间
- web-applications - 将网站大小调整为移动视图时的导航栏之类的应用
- javascript - 在联系表格 7 中的附件中添加删除选项
- spring - 注入配置依赖
- uicollectionview - 在 swift 4 中,uicollectionView 可以仅为特定 indexPath 设置 minimumLineSpacing 吗?
- java - Activity onCreate 后调用(未调用)应用程序 onCreate
- postgresql - Postgres 正在插入 '$,?' 代替表格中我的地址字段中的文本。是编码问题还是其他问题?