汇编程序编译错误
Assembly program compilation error
我在使用以下计算表达式 (ab+cd)/(a-d):
的 16 位 TASM 程序时遇到问题
MyCode SEGMENT
ORG 100h
ASSUME CS:SEGMENT MyCode, DS:SEGMENT MyCode, SS:SEGMENT
Start:
jmp Beginning
a DB 20
b EQU 10
c DW 5
d = 3
Result DB ?
Beginning:
mov al, a
mov bl, b
mov dx,ax
mov al, BYTE PTR c
mov bl, d
mul bl
add dx,ax
mov al, a
sub al,bl
mov bl,al
mov ax,dx
div bl
mov Result, al
mov ax, 4C00h
int 21h
MyCode ENDS
END Start
我在 DOSBox 控制台中遇到的编译错误表明存在未定义的符号 (SEGMENT),并且编译器无法使用当前的 ASSUMEd 段寄存器进行寻址。在我看来,我缺少块的定义,但我不知道如何进一步进行。这段代码有什么问题?
我不会为您修复逻辑错误,但这段代码顶部的语法不正确:
MyCode SEGMENT
ORG 100h
ASSUME CS:SEGMENT MyCode, DS:SEGMENT MyCode, SS:SEGMENT
Start:
您没有在 assume 中使用指令 SEGMENT
,它们必须被删除。删除后,段必须有一个名称应用于它们。 SS:
上缺少一个。它应该看起来像:
MyCode SEGMENT
ASSUME CS:MyCode, DS:MyCode, SS:MyCode
ORG 100h
Start:
在DOS COM 程序中,DATA、CODE 和STACK 的所有段都在同一个段中。您也可以通过将其替换为:
来实现相同的目的
.model tiny
.code
ORG 100h
Start:
TINY 模型设计用于创建 DOS COM 程序。 ORG 100h
指令必须位于 .code
指令之前。通过此修改,您必须 删除 这一行:
MyCode ENDS
我在使用以下计算表达式 (ab+cd)/(a-d):
的 16 位 TASM 程序时遇到问题MyCode SEGMENT
ORG 100h
ASSUME CS:SEGMENT MyCode, DS:SEGMENT MyCode, SS:SEGMENT
Start:
jmp Beginning
a DB 20
b EQU 10
c DW 5
d = 3
Result DB ?
Beginning:
mov al, a
mov bl, b
mov dx,ax
mov al, BYTE PTR c
mov bl, d
mul bl
add dx,ax
mov al, a
sub al,bl
mov bl,al
mov ax,dx
div bl
mov Result, al
mov ax, 4C00h
int 21h
MyCode ENDS
END Start
我在 DOSBox 控制台中遇到的编译错误表明存在未定义的符号 (SEGMENT),并且编译器无法使用当前的 ASSUMEd 段寄存器进行寻址。在我看来,我缺少块的定义,但我不知道如何进一步进行。这段代码有什么问题?
我不会为您修复逻辑错误,但这段代码顶部的语法不正确:
MyCode SEGMENT
ORG 100h
ASSUME CS:SEGMENT MyCode, DS:SEGMENT MyCode, SS:SEGMENT
Start:
您没有在 assume 中使用指令 SEGMENT
,它们必须被删除。删除后,段必须有一个名称应用于它们。 SS:
上缺少一个。它应该看起来像:
MyCode SEGMENT
ASSUME CS:MyCode, DS:MyCode, SS:MyCode
ORG 100h
Start:
在DOS COM 程序中,DATA、CODE 和STACK 的所有段都在同一个段中。您也可以通过将其替换为:
来实现相同的目的.model tiny
.code
ORG 100h
Start:
TINY 模型设计用于创建 DOS COM 程序。 ORG 100h
指令必须位于 .code
指令之前。通过此修改,您必须 删除 这一行:
MyCode ENDS