gpt4 book ai didi

assembly - emu8086错误使用com文件

转载 作者:行者123 更新时间:2023-12-03 06:26:34 24 4
gpt4 key购买 nike

我写了一个简单的汇编代码,总共4个字

STSEG          SEGMENT
DB 32 DUP (?)
STSEG ENDS

DTSEG SEGMENT
DATA_IN DW 234DH,1DE6H,3BC7H,566AH
ORG 100H
SUM DW ?
DTSEG ENDS


CDSEG SEGMENT
MAIN PROC FAR
ASSUME CS:CDSEG,SS:STSEG,DS:DTSEG
MOV AX,DTSEG
MOV DS,AX ; load data segment to DS

MOV CX,04 ; set counter to 4
MOV DI,OFFSET DATA_IN
MOV BX,00 ; this is the sum initialized to 0
ADD_LP: ADD BX,[DI]
INC DI
INC DI ; two INC because we are using words
DEC CX
JNZ ADD_LP
MOV SI,OFFSET SUM ; since org is 100h, SI will be 100H
MOV [SI],BX ; write the value of sum in that location
MOV AH,4CH ; return to DOS
INT 21H
MAIN ENDP
CDSEG ENDS
END MAIN

使用emu8086,我模拟了该代码。然而,正如您在下面的屏幕截图中看到的,寄存器没有获得正确的值。

重要的问题是,为什么程序的名称是.com。我没有具体说明这一点。 CX 值不正确。 CS 和 DS 具有相同的值。为什么?

enter image description here

最佳答案

emu8086 不喜欢数据段内的 ORG 100H。删除它。

要强制执行 .exe 程序,请在源代码顶部添加“#MAKE_EXE#”。

关于assembly - emu8086错误使用com文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33045032/

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