通过偏移从数据段移动值

时间:2017-06-20 22:14:39

标签: assembly x86 tasm

我有数据段

dataseg segment para 'data'
var1 db 3 
var2 db 5 
dataseg ends

我试图移动这些值,即

mov ax, offset var2
mov bx, [ax]

但它不起作用

1 个答案:

答案 0 :(得分:2)

在16位实模式中,不允许在括号之间使用ax(作为基址寄存器),但bx是:

mov bx, offset var2  ;◄■■ BX INSTEAD OF AX.
mov ax, [bx]

在寻址内存时,只有bxbp可以这种方式用作基址寄存器。 ax通常用于存储/累积值以用于其他目的。

顺便说一下,你的变量是" byte",但你正在将它们的值移到一个大小" word"寄存器。您可以通过两种方式解决它:

var1 DW 3     ;◄■■ USE A WORD SIZE VARIABLE.

mov al, [bx]  ;◄■■ USE A BYTE SIZE REGISTER.