gpt4 book ai didi

assembly - 汇编程序编译错误

转载 作者:行者123 更新时间:2023-12-02 10:42:35 25 4
gpt4 key购买 nike

以下16位TASM程序对表达式(ab + cd)/(a-d)求值时出现问题:

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控制台状态下遇到的编译错误是有一个 undefined symbol (SEGMENT),并且编译器无法使用当前的ASSUMEd段寄存器进行寻址。在我看来,我缺少块的定义,但是我不知道如何进一步进行。此代码有什么问题?

最佳答案

我不会为您修复逻辑错误,但是此代码顶部的语法不正确:

MyCode          SEGMENT     

ORG 100h
ASSUME CS:SEGMENT MyCode, DS:SEGMENT MyCode, SS:SEGMENT

Start:

您无需在假设中使用指令 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

关于assembly - 汇编程序编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49336457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com