You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在8086模式下强制NASM生成0x82操作码?

如何让NASM在CPU 8086模式下生成0x82操作码

核心逻辑

0x82操作码对应带字节立即数的ADD/ADC/SUB/SBB/CMP/TEST指令,和0x80操作码语法重叠,但NASM默认优先选择0x80(0x80支持字节/字立即数,兼容性更广)。要触发0x82,需用NASM的strict关键字强制指定窄操作码类型。

可用指令示例

在CPU 8086伪指令之后,通过strict byte限定立即数,就能让NASM生成0x82操作码:

  • 寄存器操作数场景:
    CPU 8086
    add strict byte al, 0x10   ; 输出字节:0x82 0xC0 0x10
    adc strict byte bl, 0x20   ; 输出字节:0x82 0xD3 0x20
    sub strict byte cl, 0x30   ; 输出字节:0x82 0xE1 0x30
    sbb strict byte dl, 0x40   ; 输出字节:0x82 0xF2 0x40
    cmp strict byte ah, 0x50   ; 输出字节:0x82 0xF4 0x50
    test strict byte bh, 0x60  ; 输出字节:0x82 0xE7 0x60
    
  • 内存操作数场景(需符合8086寻址规则):
    CPU 8086
    add strict byte [bx], 0x70     ; 输出字节:0x82 0x07 0x70
    cmp strict byte [bp+si+0x80], 0x80  ; 输出字节:0x82 0x3C 0x80 0x80
    

注意事项

  • 必须在CPU 8086伪指令之后使用,否则NASM可能生成现代CPU兼容的操作码。
  • 验证方式:用nasm -f bin -o test.bin test.asm编译后,通过xxd test.bin查看十六进制输出,确认开头为0x82的指令字节。

内容的提问来源于stack exchange,提问作者Clamps

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 15:27:05