Assembly 对dseg寄存器求和

Assembly 对dseg寄存器求和,assembly,Assembly,好的,例如,我有以下代码(使用TASM和Dosbox): 所以程序应该把b(3)加到a(2)上,然后求和到5。问题是它给了我这个错误:“表达式中需要寄存器”。如何解决这个问题?x86系列处理器通常不支持对多个内存操作数进行直接操作-其中一个操作数必须加载到寄存器中,例如: mov al, a add b, al x86系列处理器通常不支持对多个内存操作数进行直接操作-其中一个操作数必须加载到寄存器中,例如: mov al, a add b, al x86系列处理器通常不支持对多个内存操作数进

好的,例如,我有以下代码(使用TASM和Dosbox):


所以程序应该把b(3)加到a(2)上,然后求和到5。问题是它给了我这个错误:“表达式中需要寄存器”。如何解决这个问题?

x86系列处理器通常不支持对多个内存操作数进行直接操作-其中一个操作数必须加载到寄存器中,例如:

mov al, a
add b, al

x86系列处理器通常不支持对多个内存操作数进行直接操作-其中一个操作数必须加载到寄存器中,例如:

mov al, a
add b, al

x86系列处理器通常不支持对多个内存操作数进行直接操作-其中一个操作数必须加载到寄存器中,例如:

mov al, a
add b, al

x86系列处理器通常不支持对多个内存操作数进行直接操作-其中一个操作数必须加载到寄存器中,例如:

mov al, a
add b, al


内存中的变量不是寄存器。寄存器是AX、BX等,它们不驻留在内存中。它们就在CPU芯片上。内存中的变量不是寄存器。寄存器是AX、BX等,它们不驻留在内存中。它们就在CPU芯片上。内存中的变量不是寄存器。寄存器是AX、BX等,它们不驻留在内存中。它们就在CPU芯片上。内存中的变量不是寄存器。寄存器是AX、BX等,它们不驻留在内存中。它们就在CPU芯片上。是的,我一开始就是这么做的,但希望它能被缩短。如果你能回答的话,我还有另一个问题:如果没有中间跳跃,我如何修复“相对跳跃超出范围”错误?与扩展跳转一样?自非常早期的x86版本以来,有两种大小的相对跳转-使用有符号单字节偏移量的跳转称为
短跳转,而使用有符号32位偏移量的跳转称为
近跳转(出于历史原因)。显然,我已经记不清TASM是怎么做的了,因为我的印象是它能自动正确地调整跳跃的大小。你是否指定了一个尺寸(短/近)?请在这个问题上发布一个单独的问题,并附上相关代码。是的,这是我第一次做的,但希望它能以某种方式缩短。如果你能回答的话,我还有另一个问题:如果没有中间跳跃,我如何修复“相对跳跃超出范围”错误?与扩展跳转一样?自非常早期的x86版本以来,有两种大小的相对跳转-使用有符号单字节偏移量的跳转称为
短跳转,而使用有符号32位偏移量的跳转称为
近跳转(出于历史原因)。显然,我已经记不清TASM是怎么做的了,因为我的印象是它能自动正确地调整跳跃的大小。你是否指定了一个尺寸(短/近)?请在这个问题上发布一个单独的问题,并附上相关代码。是的,这是我第一次做的,但希望它能以某种方式缩短。如果你能回答的话,我还有另一个问题:如果没有中间跳跃,我如何修复“相对跳跃超出范围”错误?与扩展跳转一样?自非常早期的x86版本以来,有两种大小的相对跳转-使用有符号单字节偏移量的跳转称为
短跳转,而使用有符号32位偏移量的跳转称为
近跳转(出于历史原因)。显然,我已经记不清TASM是怎么做的了,因为我的印象是它能自动正确地调整跳跃的大小。你是否指定了一个尺寸(短/近)?请在这个问题上发布一个单独的问题,并附上相关代码。是的,这是我第一次做的,但希望它能以某种方式缩短。如果你能回答的话,我还有另一个问题:如果没有中间跳跃,我如何修复“相对跳跃超出范围”错误?与扩展跳转一样?自非常早期的x86版本以来,有两种大小的相对跳转-使用有符号单字节偏移量的跳转称为
短跳转,而使用有符号32位偏移量的跳转称为
近跳转(出于历史原因)。显然,我已经记不清TASM是怎么做的了,因为我的印象是它能自动正确地调整跳跃的大小。您是否指定了尺寸(短/近)?请在此问题上单独提问,并附上相关代码。