我正在研究作者-GODSE的mp书。 我的问题:
A)AX,BX,CX,DX 16位寄存器可以用作传输“8位”数据的源吗? 例如:Mov [734AH],BX;将bx的“内容”复制到ds。 这里的内容意味着什么?
Ex2:Mov DS,BX;将“word”从bx复制到ds。 为什么他们自己提到了这个词? (如果也可以传输1字节数据,它们本身会给出“内容”。)。
答案 0 :(得分:1)
A)AX,BX,CX,DX 16位寄存器可用作传输" 8bit"数据的来源吗?
不完全是。但是,您可以使用AL
作为传输8位数据的源(特别是AX
的低位8位)。 AX
本身保存16位,如果您将其用作MOV
指令的源,则会转移所有这些位。
Ex:Mov [734AH],BX;副本"内容" bx到ds。这里的内容是什么意思? a)数据或单词b)只有单词?
"内容"只是 - BX的内容。其16位的值。它们被转移到给定的存储器地址。
Ex2:Mov DS,BX;副本"字"从bx到ds。为什么他们自己提到了这个词?
听起来你对#34;字的含义感到困惑。" word是一个数据单位。引用维基百科:
一个字基本上是一个固定大小的数字组(二进制或十进制),由指令集或处理器的硬件作为一个单元处理。
答案 1 :(得分:1)
在实模式下;您可以在段寄存器中存储您喜欢的任何值(例如ds
),只要您不将不需要的值用于内存引用即可。例如,像mov [foo],ax
这样的指令使用ds
作为其隐含的段寄存器,如果您忘记了这一点并将ds
设置为任意值,则代码将会中断。
在保护模式和长模式下;在段寄存器加载中涉及保护/健全性检查,并且您不能在段寄存器中存储任意值。对于大多数操作系统(使用分页而不使用分段),可能只有2个值可以加载到数据段寄存器中,如ds
- 它在您的进程中已包含的值开始了,零。