Assembly 程序集如何访问CPU之外的东西,如HDD或RAM?

Assembly 程序集如何访问CPU之外的东西,如HDD或RAM?,assembly,io,x86,cpu-architecture,Assembly,Io,X86,Cpu Architecture,所以我看了一下x86汇编语言;所有的命令都很清楚,但是:我没有看到任何东西能够真正触发计算机中的某些东西,比如:访问RAM,而不仅仅是CPU寄存器,从HDD读取,等等 如何使用汇编程序超越CPU中的计算 您编写的代码可以访问内存映射IO的RAM(mov和其他具有内存操作数的操作数)或x86的特殊IO空间(in,out) 本领域的技术是知道在什么地址和什么时间写入/读取什么。您编写的代码可以访问内存映射IO的RAM(mov和其他带有内存操作数的代码)或x86的特殊IO空间(in,out) 本领域

所以我看了一下x86汇编语言;所有的命令都很清楚,但是:我没有看到任何东西能够真正触发计算机中的某些东西,比如:访问RAM,而不仅仅是CPU寄存器,从HDD读取,等等

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

    • 您编写的代码可以访问内存映射IO的RAM(
      mov
      和其他具有内存操作数的操作数)或x86的特殊IO空间(
      in
      out


      本领域的技术是知道在什么地址和什么时间写入/读取什么。

      您编写的代码可以访问内存映射IO的RAM(
      mov
      和其他带有内存操作数的代码)或x86的特殊IO空间(
      in
      out


      本领域的技术是知道在什么地址和什么时间写入/读取什么。

      通常,您读取/写入内存映射设备,或者使用特殊的I/O指令读取/写入I/O端口。内存映射设备是在CPU和实际硬件之间共享的内存,访问它会使硬件做一些事情。

      通常,您可以读取/写入内存映射设备,或者使用特殊的I/O指令读取/写入I/O端口。内存映射设备是CPU和实际硬件之间共享的内存,访问它会使硬件做一些事情。

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


      设备使用所谓的中断,即当设备需要您(CPU)注意时触发的事件。在你的代码中,你注册你的函数来处理触发的中断。要从设备获取数据,您可以使用
      IN
      OUT
      指令,通过数据总线移动数据。通过这种方式,您可以向设备提供指令,例如:从硬盘扇区X到Y获取数据。然后硬盘旋转,获取部分数据并触发中断。您为该中断注册的代码必须对其进行处理,获取数据并将其写入适当的RAM位置。大多数CPU和设备也支持DMA(),在DMA()中,您只需在RAM中指定设备必须写入其数据的位置,然后设备就可以在不中断CPU的情况下写入数据。只有在设备完成后,它才会引发一个中断,您的汇编代码才能相应地响应。

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


      设备使用所谓的中断,即当设备需要您(CPU)注意时触发的事件。在你的代码中,你注册你的函数来处理触发的中断。要从设备获取数据,您可以使用
      IN
      OUT
      指令,通过数据总线移动数据。通过这种方式,您可以向设备提供指令,例如:从硬盘扇区X到Y获取数据。然后硬盘旋转,获取部分数据并触发中断。您为该中断注册的代码必须对其进行处理,获取数据并将其写入适当的RAM位置。大多数CPU和设备也支持DMA(),在DMA()中,您只需在RAM中指定设备必须写入其数据的位置,然后设备就可以在不中断CPU的情况下写入数据。只有在设备完成后,它才会引发中断,并且您的汇编代码可以相应地响应。

      您可以使用
      MOV
      等指令访问RAM。访问磁盘等的API取决于您正在使用的操作系统—在Linux上,查看接口。在Windows上,看一看-跳过介绍性内容即可

      另一件事是


      您可能感兴趣的项目是用16位ASM编写的教育操作系统。它可以访问文件系统,甚至更多-,不过请注意,由于各种原因,大多数情况不适用于在现代操作系统下运行的程序。

      您可以使用
      MOV
      等指令访问RAM。访问磁盘等的API取决于您正在使用的操作系统—在Linux上,查看接口。在Windows上,看一看-跳过介绍性内容即可

      另一件事是


      您可能感兴趣的项目是用16位ASM编写的教育操作系统。它可以访问文件系统,甚至更多-,但请注意,由于各种原因,大多数情况不适用于在现代操作系统下运行的程序。

      确实如此。然而,当我阅读OP时,我在两行之间看到了“how do I?”并注意到大多数操作系统都保护它们的设备寄存器,因此通常防止用户代码直接接触它们,而更希望操作系统内核代表用户代码读写寄存器。这是真的。然而,当我阅读OP时,我会在两行之间看到“how do I?”,并注意到大多数操作系统都保护它们的设备寄存器,因此通常会阻止用户代码直接接触它们,更希望操作系统内核代表用户代码读写寄存器。