Assembly 议员问题

Assembly 议员问题,assembly,operating-system,Assembly,Operating System,因此,我在汇编中制作一个操作系统,以获得乐趣和学习。不过,我有几个问题。首先,我希望我的操作系统能够利用它所能利用的所有内核/线程。在Python中,您只需导入多处理,然后使用池/线程脚本来使用一定数量的内核。我希望提示用户输入系统中的内核数(或自动检测到),然后将其存储在文本文件或类似文件中,以便下次启动操作系统时读取文本文件并说,“嘿,他有四个内核。使用它们。”我可以通过使用汇编运行python程序来实现这一点吗,还是纯粹的组装?如果是,请告诉我怎么做。 其次,如何在汇编中获取键盘输入?在p

因此,我在汇编中制作一个操作系统,以获得乐趣和学习。不过,我有几个问题。首先,我希望我的操作系统能够利用它所能利用的所有内核/线程。在Python中,您只需导入多处理,然后使用池/线程脚本来使用一定数量的内核。我希望提示用户输入系统中的内核数(或自动检测到),然后将其存储在文本文件或类似文件中,以便下次启动操作系统时读取文本文件并说,“嘿,他有四个内核。使用它们。”我可以通过使用汇编运行python程序来实现这一点吗,还是纯粹的组装?如果是,请告诉我怎么做。 其次,如何在汇编中获取键盘输入?在python中,它是
a=raw\u输入(“在这里输入文本”)
,但我不知道如何在汇编中输入。我需要知道,因为我的操作系统就像一个巨大的终端。谢谢,如果时间太长,我很抱歉。我是这个网站的新手,有一大堆问题

如何在汇编中获取键盘输入

您可以使用BIOS键盘API输入单个键

mov ah, 00h  ;BIOS.GetKey
int 16h      ; -> AL is ASCII, AH is scancode
我可以通过使用汇编来运行python程序,还是仅仅通过纯汇编来实现这一点

如果您正在汇编中制作OS(为了好玩和学习),那么您所要求的一切都可以通过编写汇编代码来实现

作为显示提示的示例:

    cld
    mov  si, msg
    mov  bx, 0007h  ; Display page 0 and Color WhiteOnBlack
    jmp  .b
.a: mov  ah, 0Eh    ; BIOS.Teletype
    int  10h
.b: lodsb
    test al, al
    jnz  .a
    ...
msg: db 'How many cores?',0

读写文件需要您自己开发一个文件系统,或者更简单地说,使用磁盘上已有的文件系统(如Fat16),从现有的操作系统开始。

除了Python之外,您还懂一些语言,对吗?因为Python没有达到汇编代码必须达到的详细级别。(你也不能通过运行Python来作弊,因为你需要一个已经支持Python的操作系统。)如果你还不知道如何在汇编中获取输入,那么你的知识水平还远没有达到你真正需要的水平,更不用说为SMP构建的操作系统了。我怀疑你遇到了麻烦。您需要了解中断和驱动程序。我认为您不理解您正在考虑的范围,因为它是巨大的:(您的操作系统将使用所有核心做什么?(通常您根本不希望操作系统使用任何核心,如果它运行时CPU使用率尽可能接近0%,这是最好的情况)。将内核留给操作系统的用户。但这意味着您的内核必须以多线程方式工作,实际上在多个内核上同时运行,这本身通常需要数周或数月的编程理论研究和实践,甚至需要了解您必须做什么以及如何设计操作系统的体系结构允许这种特技。你的其他问题也是如此……如果你问这些问题,你还没有准备好编写一个操作系统,那就从简单的问题开始,然后逐步提高。我还强烈建议你避免使用x86进行这种初始教育。因为你没有指定处理器或汇编程序,所以它是这里很难提供帮助。顺便说一句,如果你正在编写操作系统,那么你就可以通过阅读中学到的处理器的规则和设计来控制线程。你在这里尝试做的99%与汇编语言无关,编程是很容易的,无论你选择什么语言(理想情况下,C需要一些组件,但如果你愿意,你可以让你的生活更痛苦)。我怀疑你是否在这个时代编写操作系统,人们会发现你自己在真实模式下/使用BIOS。通常,从事真实操作系统开发的人会直接与硬件接口。这可能以以下形式出现(在现代硬件上)与模拟PS2/鼠标硬件(由SMM提供)接口,或编写USB驱动程序,然后创建USB键盘/USB鼠标驱动程序。您使用实模式bios/etc调用启动操作系统,然后可以继续尝试关闭或接管。