PUSH CS使用TASM 1.01,但是使用TASM 5.4提供了非法索引—如何解决?

问题描述 投票:2回答:1

我有使用的旧版(DOS时代)代码:

push cs
pop ds

并且与TASM v1.01完美结合​​

尝试用TASM v5.4组装时,push cs指令出现'非法索引模式'错误。

我该如何解决?

(搜索[tasm] illegal indexing mode没有针对此特定问题返回任何结果。)

编辑:这是减少到最少(废话)的代码,仍然会产生我正在谈论的错误。

        assume  cs:code
code    segment
main    proc
        push    cs
main    endp
code    ends
        end

这是汇编输出:

Turbo Assembler  Version 5.4  Copyright (c) 1988, 2010 Embarcadero Technologies, Inc.

Assembling file:   sample.ASM
**Error** sample.ASM(4) Illegal indexing mode
Error messages:    1
Warning messages:  None
Passes:            1
assembly x86-16 tasm
1个回答
3
投票
这似乎是汇编程序中的错误,但是解决方法很简单。只需将ASSUME指令移动到code SEGMENT指令之后即可。这是您通常想要的位置,因为您通常不希望在其他段中假设CS为code

((您也可以通过让TASM使用至少两次通过来解决此问题。这既需要使用/m选项,又需要在代码中至少具有一个需要第二次通过的构造,例如前向引用。该错误TASM 5.4中的问题似乎是它无法识别assume cs:code是前向引用。)

© www.soinside.com 2019 - 2024. All rights reserved.