assembly “mov ds,ax“是否可用于传输8位数据?

uemypmqf  于 2023-01-17  发布在  其他
关注(0)|答案(2)|浏览(158)

我正在学习MP书的作者-GODSE.我的问题:
A)AX、BX、CX、DX 16位寄存器能否用作传输“8位“数据的源?
例如:Mov [734AH],BX;将bx的“内容”复制到ds
在这里,内容意味着什么?

  • 数据或字
  • 只有一句话?

实验2:Mov DS,BX;将“word”从bx复制到ds。为什么他们提到word本身?(如果1字节数据也可以传输,他们会给出“content”本身。)

kkbh8khc

kkbh8khc1#

A)AX、BX、CX、DX 16位寄存器能否用作传输“8位“数据的源?
不完全是。但是,您可以使用AL作为传输8位数据的源(特别是AX的低8位)。AX本身拥有16位,如果您将其用作MOV指令的源,则所有这些位都会被传输。
例如:移动[734 AH],BX;将bx的“内容”复制到ds。这里,内容意味着什么?a)数据或字b)只有字?
“内容”就是BX的内容。它的16位的值。它们被传送到给定的内存地址。
实施例2:移动DS、BX;把“word”从bx复制到ds。为什么他们要提到word本身?
听起来你对“word”的意思很困惑。word是一个数据单位。引用维基百科:
字基本上是一组固定大小的数字(二进制或十进制),由处理器的指令集或硬件作为一个单元处理。

gwbalxhn

gwbalxhn2#

在真实的模式下;你可以在段寄存器中存储任何你喜欢的值(例如ds),只要你不使用不想要的值作为内存引用。例如,像mov [foo],ax这样的指令使用ds作为它的隐含段寄存器,如果你忘记了这一点,并将ds设置为任意值,你的代码将中断。
在保护模式和长模式下;段寄存器加载涉及保护/健全性检查,并且您不能在段寄存器中存储任意值。对于大多数操作系统(使用分页而不使用分段),您可能只能将2个值加载到数据段寄存器(如ds)中-进程启动时已经包含的值和零。

相关问题