Assembly 是否可以使用“mov ds,ax”传输8位数据?

Assembly 是否可以使用“mov ds,ax”传输8位数据?,assembly,Assembly,我正在学习戈兹的著作。 我的问题: A AX、BX、CX、DX 16位寄存器能否用作传输8位数据的源? 例如:Mov[734AH],BX;将bx的内容复制到ds。 在这里,内容意味着什么 数据或文字 只有一个字? Ex2:Mov-DS,BX;将单词从bx复制到ds。 为什么他们提到这个词本身?如果1字节的数据也能被传输,那么他们就会给出内容本身 A AX、BX、CX、DX 16位寄存器能否用作传输8位数据的源 不完全是。但是,您可以使用AL作为传输8位数据的源,特别是AX的低阶8位。AX本身拥有

我正在学习戈兹的著作。 我的问题:

A AX、BX、CX、DX 16位寄存器能否用作传输8位数据的源? 例如:Mov[734AH],BX;将bx的内容复制到ds。 在这里,内容意味着什么

数据或文字 只有一个字? Ex2:Mov-DS,BX;将单词从bx复制到ds。 为什么他们提到这个词本身?如果1字节的数据也能被传输,那么他们就会给出内容本身

A AX、BX、CX、DX 16位寄存器能否用作传输8位数据的源

不完全是。但是,您可以使用AL作为传输8位数据的源,特别是AX的低阶8位。AX本身拥有16位,如果将其用作MOV指令的源,则所有这些位都将被传输

例如:Mov[734AH],BX;将bx的内容复制到ds。在这里,内容意味着什么?是数据还是文字

内容就是BX的内容。其16位的值。它们被传输到给定的内存地址

Ex2:Mov-DS,BX;将单词从bx复制到ds。为什么他们提到这个词本身

听起来你对这个词的意思感到困惑。A是一个数据单位。引用维基百科:

字基本上是一组固定大小的二进制或十进制数字,由指令集或处理器硬件作为一个单元处理


在实模式下;只要不使用不需要的值作为内存引用,就可以在段寄存器(如ds)中存储任何您喜欢的值。例如,像mov[foo]这样的指令,ax使用ds作为其隐含段寄存器,如果您忘记了这一点,并将ds设置为任意值,则代码将中断


在保护模式和长模式下;段寄存器加载涉及保护/健全性检查,不能在段寄存器中存储任意值。对于大多数使用分页而不使用分段的操作系统,很可能只有2个值可以加载到数据段寄存器(如ds)中,即进程启动时已包含的值和0。

您是在谈论这本书吗?我认为混淆之处在于x86使用MOV助记符从内存加载,存储到内存,在DS的情况下加载段寄存器,以及MOV lol的其他用途。因此需要澄清的是,MOV DS加载的是段寄存器,而不是存储到内存。我读到这个字是一组16位。在示例2中,它们可以作为ax的内容进行注释。他们是怎么说的?请给我确切的答案。mov ds,ax可以用于8位传输吗?ds的大小也是16位-与ax相同。在英特尔x86世界中,字的意思是16位。甚至在谈到具有32位和64位寄存器的较新CPU时,我们可以使用mov ds、ax复制8位数据吗?是的,不。@SHARVARI我认为已经非常透彻地解释了DS和AX都是16位寄存器,因此mov DS,AX复制16位数据。