我有下面的代码:
mov ax,@data
mov ds,ax为什么我不能这样写呢?
mov ds,@data所有来源:
.MODEL small
.STACK 100h
.DATA
HelloMessage DB 'Hello, world',13,10,'$'
.CODE
.startup
mov ax,@data
mov ds,ax
mov ah,9
mov dx,OFFSET HelloMessage
int 21h
mov ah,4ch
int 21h
END谢谢!
发布于 2010-09-11 16:01:01
您不能这样做,因为指令集不包含这样做的指令。这只是x86众多特性中的一个。
这些类型的限制对于汇编语言来说是相当正常的。大多数体系结构都包含一些特殊处理的寄存器(例如处理器状态字),但通常少于x86体系结构。
不为所有可能的移动提供指令的原因是为了减小指令集的大小,以便指令占用更少的内存。总体而言,在两个步骤中执行很少需要的动作会更有效率。
https://stackoverflow.com/questions/3690157
复制相似问题