【问题标题】:TASM code gives error in YASM: instruction expected after labelTASM 代码在 YASM 中给出错误:标签后预期的指令
【发布时间】:2021-02-09 10:38:00
【问题描述】:

我有为 TASM 编写的代码,据我所知 YASM 与该代码兼容,所以我知道为什么会出现这些错误:

91.asm:3: error: instruction expected after label
91.asm:4: error: instruction expected after label
91.asm:27: error: instruction expected after label

对于此代码:

IDEAL
MODEL small
STACK 21h
DATASEG
; --------------------------
; Your variables here
; --------------------------
CODESEG
global start
start:
; --------------------------
; Your code here
; --------------------------
    mov cx, 21
    mov ax, 1000h
    cmp cx, 0
    je myExit
addStack:
    push ax
    inc ax
    loop addStack
myExit:
exit:
    mov ax, 4C00h
    int 21h
END start

【问题讨论】:

    标签: assembly tasm yasm


    【解决方案1】:

    YASM 与 TASM 兼容,据我所知。它与使用完全不同指令的 NASM 兼容。 (mov reg, label 的含义不同 - 在 NASM/YASM 中,它是地址的 mov-immediate,与 TASM/MASM 不同,它是负载。)

    一行上没有: 的东西可以是标签(如果它不被识别为指令助记符,这是 YASM 假定的)。

    但如果它后面跟着其他也不能理解为指令的内容(如 MODEL small 中的 small),那就是语法错误。

    对 YASM 使用 NASM / YASM 语法。

    【讨论】:

    • 你知道一个兼容 TASM 的汇编器可以在 Linux 上运行,或者制作常规的 bin 文件吗?
    • @sefsf:可能是 JWASM(我认为它至少大部分与 MASM 兼容),但它不像 Linux 可以原生地运行 DOS .com 平面二进制可执行文件。或者您可以将您的代码移植到 YASM;平面二进制文件非常简单,因此您不需要很多指令。 (实际指令的 IMO NASM/YASM 语法是所有 MASM、AT&T 或其他主要选项中设计得最好的。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多