我有数据段
dataseg segment para 'data'
var1 db 3
var2 db 5
dataseg ends
我试图移动这些值,即
mov ax, offset var2
mov bx, [ax]
但它不起作用
答案 0 :(得分:2)
在16位实模式中,不允许在括号之间使用ax
(作为基址寄存器),但bx
是:
mov bx, offset var2 ;◄■■ BX INSTEAD OF AX.
mov ax, [bx]
在寻址内存时,只有bx
和bp
可以这种方式用作基址寄存器。 ax
通常用于存储/累积值以用于其他目的。
顺便说一下,你的变量是" byte",但你正在将它们的值移到一个大小" word"寄存器。您可以通过两种方式解决它:
var1 DW 3 ;◄■■ USE A WORD SIZE VARIABLE.
或
mov al, [bx] ;◄■■ USE A BYTE SIZE REGISTER.