Assembly 在8086汇编中为寄存器指定段名的含义是什么?

Assembly 在8086汇编中为寄存器指定段名的含义是什么?,assembly,x86-16,segment,emu8086,Assembly,X86 16,Segment,Emu8086,我正在帮助一位朋友做作业,在他的代码中,我遇到了一句我不懂的话。 这是代码,大致如下: code segment assume cs: code, ds: data, ss: stack ... mov ax, data mov ds, ax ... data segment ... ends stack segment ... ends emu8086显示mov ax的错误,数据显示“错误参数”。我想这是因为数据段还没有定义。我想知道,我是否可以简单地删除这两行,因为它们似乎什么

我正在帮助一位朋友做作业,在他的代码中,我遇到了一句我不懂的话。
这是代码,大致如下:

code segment    
assume cs: code, ds: data, ss: stack
...
mov ax, data
mov ds, ax
...

data segment
...
ends

stack segment
...
ends
emu8086显示mov ax的错误,数据显示“错误参数”。我想这是因为数据段还没有定义。我想知道,我是否可以简单地删除这两行,因为它们似乎什么都不做,也没有任何意义。想到这一点,我意识到我不知道分配一个片段意味着什么,我也没有在网上找到它


(数据段最初是第一个,但随后仿真器尝试执行数据,但失败,因为数据的形式不是有效的指令)。

您不应该删除它,否则所有访问都会引用一些随机内存,而不是数据段。有些汇编程序使用语法
mov ax,@data
也许可以试试,或者参考您的手册。您用什么汇编程序编程?@fuz我们都在16位实模式下使用EMU8086当某些指令访问内存时,物理内存地址计算为20位整数=(但您可以删除
假设
,这是MASM/TASM指令,emu8086不支持该指令(它将被忽略,因此在您的情况下它是无害的,但如果使用MASM/TASM的人实际上试图以更复杂的方式使用它,则会使他失败)。(我试着在谷歌上搜索一些简洁的例子,但失败了,我找到了一些常见的“emu8086”东西,它们只是“好”,但总是让我对一些细节或缺乏一些细节感到不快)