与汇编程序的一般混淆

gnr*_*lcf 1 assembly

所以我看了一下x86汇编语言; 所有的命令都非常清楚,但是:我没有看到任何可以实际触发计算机内容的东西:Access RAM而不仅仅是CPU寄存器,从HDD读取等等.

  • 你如何使用汇编程序超越CPU中的计算?

Dan*_*ker 5

在x86汇编中,该MOV指令用于从RAM获取数据并将其放入CPU的一个寄存器中,您可以在其中对其进行操作.该MOV指令还可以将数据写回RAM.要使用计算机上的设备,这是另一个故事.

设备使用所谓的中断,这是在设备需要(CPU)注意时触发的事件.在你的代码中,你注册你的函数来处理它在触发时的中断.要从设备获取数据,您可以使用INOUT指令,它们通过数据总线移动数据.这样,您可以为设备提供指令,例如:从硬盘扇区X到Y获取数据.然后硬盘旋转,获取一些数据并触发中断.您为该中断注册的代码必须处理它,获取数据并将其写入适当的RAM位置.大多数CPU和设备也支持DMA(直接内存访问),在这种情况下,您只需在RAM中指定设备必须写入数据的位置,然后在不中断CPU的情况下执行此操作.只有在设备完成后,它才会产生中断,并且汇编程序代码可以相应地做出响应.