不需要学编程,自制自己的操作系统!一个0基础自制操作系统的软件!详细教程!

不需要学编程,自制自己的操作系统!一个0基础自制操作系统的软件!详细教程

一、下载或python运行

不会编程的可以在自制操作系统.exe免费下载,直接跳到第二点

创建.py文件,内容如下

from tkinter import*
code = '\n[org 0x7c00]\n\nstart:\n\t\n\tmov bp, 0x8000\n\tmov sp, bp\n\n\t\n\tmov ax, 0x0600\n\tmov bx, 0x0700\n\tmov cx, 0\n\tmov dx, 0x184f\n\tint 0x10\n\n\n\tmov ah, 0x0E\n'

def assign_to_os_name1():
    global code, os_name
    os_name = entry.get()
    print(os_name)
    os_print(os_name)
    os_print(">>")
    label.pack_forget()
    entry.pack_forget()
    button.pack_forget()
    window2()

def assign_to_os_name2():
    global code, main, os_name
    code = f"{code}\n.wait_input:\n\tmov ah, 0x00\n\tint 0x16\n\tcmp al, '1'\n\tje .check_input\n\tcmp al, 'c'\n\tje .check_input_\n"
    cmd = entry1.get()
    command = entry2.get()
    print(cmd)
    print(command)
    label.pack_forget()
    entry.pack_forget()
    button.pack_forget()
    window2()
    os_first(cmd)
    code = f"{code}\n\tcmp al, 0x0D\n\tje .bad_input\n\tmov ah, 0x0E\n\tint 0x10\n\tjmp .wait_input\n.check_input:\n\tmov ah, 0x0E\n\tint 0x10\n\tmov ah, 0x00\n\tint 0x16\n\tmov ah, 0x0E\n\tint 0x10\n\tcmp al, '2'\n\tjne .wait_input\n\tmov ah, 0x00\n\tint 0x16\n\tmov ah, 0x0E\n\tint 0x10\n\tcmp al, '3'\n\tjne .wait_input\n\tmov ah, 0x00\n\tint 0x16\n\tcmp al, 0x0D\n\tjne .wait_input\n\tmov ah, 0x0E\n\tmov al, 0x0D\n\tint 0x10\n\tmov al, 0x0A\n\tint 0x10\n\tmov al, '4'\n\tint 0x10\n\tmov al, '5'\n\tint 0x10\n\tmov al, '6'\n\tint 0x10\n\tmov al, '!'\n\tint 0x10\n\tmov al, 0x0D\n\tint 0x10\n\tmov al, 0x0A\n\tint 0x10\n\tmov al, '>'\n\tint 0x10\n\tmov ah, 0x0E\n\tmov al, '>'\n\tint 0x10\n\tjmp .wait_input\n.check_input_:\n\tmov ah, 0x0E\n\tint 0x10\n\tmov ah, 0x00\n\tint 0x16\n\tmov ah, 0x0E\n\tint 0x10\n\tcmp al, 'l'\n\tjne .wait_input\n\tmov ah, 0x00\n\tint 0x16\n\tmov ah, 0x0E\n\tint 0x10\n\tcmp al, 's'\n\tjne .wait_input\n\tmov ah, 0x00\n\tint 0x16\n\tcmp al, 0x0D\n\tjne .wait_input\n\tmov ah, 0x0E\n\tmov al, 0x0D\n\tint 0x10\n\tmov al, 0x0A\n\tint 0x10\n\tmov ax, 0x0600\n\tmov bx, 0x0700\n\tmov cx, 0\n\tmov dx, 0x184f\n\tint 0x10\n\tmov ah, 02h\n\txor bh, bh\n\tmov dh, 0\n\tmov dl, 0\n\tint 10h\n\tmov ah, 0x0E\n\tmov al, 0x0D\n\tint 0x10\n\tmov al, 0x0A\n\tint 0x10\n\tmov al, '>'\n\tint 0x10\n\tmov ah, 0x0E\n\tmov al, '>'\n\tint 0x10\n\tjmp .wait_input\n\t.bad_input:\n\tmov ah, 0x0E\n\tmov al, 0x0D\n\tint 0x10\n\tmov al, 0x0A\n\tint 0x10\n\tmov al, 'b'\n\tint 0x10\n\tmov al, 'a'\n\tint 0x10\n\tmov al, 'd'\n\tint 0x10\n\tmov al, '!'\n\tint 0x10\n\tmov ah, 0x0E\n\tmov al, 0x0D\n\tint 0x10\n\tmov al, 0x0A\n\tint 0x10\n\tmov al, '>'\n\tint 0x10\n\tmov al, '>'\n\tint 0x10\n\tjmp .wait_input\n\t.done:\n\tret\n"
    code = f"{code}\n.check_input_{cmd}:\n\tmov ah, 0x0E\n\tint 0x10"
    os_other(cmd)
    os_print(command)
    os_end_print()
    os_end()
    f = open(f'{os_name}.asm', 'w')
    f.write(code)
    f.close()
    exit()

def os_print(string):
    global code
    for s in string:
        code = f"{code}\n\tmov al, '{s}'\n\tint 0x10\n"

def os_first(string):
    global code
    i = 0
    for s in string:
        i += 1
        code = f"{code}\n\tcmp al, '{s}'\n\tje .check_input_{string}\n"
        if i >= 1:
            break

def os_other(string):
    global code
    string = string[1:]
    i = 0
    for s in string:
        i += 1
        code = f"{code}\n\t\n\tmov ah, 0x00\n\tint 0x16\n\tmov ah, 0x0E\n\tint 0x10\n\tcmp al, '{s}'\n\tjne .wait_input\n"
    code = f"{code}\n\t\n\tmov ah, 0x00\n\tint 0x16\n\tcmp al, 0x0D\n\tjne .wait_input\n\tmov ah, 0x0E\n\tmov al, 0x0D\n\tint 0x10\n\tmov al, 0x0A\n\tint 0x10\n"

def os_end_print():
    global code
    code = f"{code}\n\tmov ah, 0x0E\n\tmov al, 0x0D\n\tint 0x10\n\tmov al, 0x0A\n\tint 0x10\n\tmov al, '>'\n\tint 0x10\n\tmov al, '>'\n\tint 0x10\n\tjmp .wait_input\n"

def os_end():
    global code
    code = f"{code}\ntimes 510-($-$$) db 0\ndw 0xAA55\n"

root = Tk()
root.title("自制操作系统")
root.geometry("400x300")
def window1():
    global label, entry, button
    label = Label(root, text="操作系统的名字")  # 用于显示输入的文字
    label.pack()

    entry_var = StringVar()
    entry = Entry(root, textvariable=entry_var)
    entry.pack()

    button = Button(root, text="下一步", command=assign_to_os_name1)
    button.pack()

def window2():
    global label, entry1, entry2, button
    label = Label(root, text="添加命令")  # 用于显示输入的文字
    label.pack()

    entry_var1 = StringVar()
    entry1 = Entry(root, textvariable=entry_var1)
    entry1.pack()
    entry_var2 = StringVar()
    entry2 = Entry(root, textvariable=entry_var2)
    entry2.pack()

    button = Button(root, text="完成", command=assign_to_os_name2)
    button.pack()

window1()
root.mainloop()



#dd if=/dev/zero of=hanos.img bs=512 count=2
#dd if=hanos.bin of=hanos.img bs=512 count=1
#pyinstaller -F 自制操作系统.py




已安装python环境的在当前目录的终端输入:

pyinstaller -F 自制操作系统.py

二、制作自己的操作系统img文件

下载nasm

下载 Cygwin

打开打包好的 自制操作系统.exe

输入操作系统名称,英语就行

下一步

随便写一个命令

打开终端

nasm -f bin hanos.asm -o hanos.bin

点击Cygwin.bat

输入

dd if=/dev/zero of=hanos.img bs=512 count=2

dd if=hanos.bin of=hanos.img bs=512 count=1

其中hanos是操作系统的名字 

 

可以在虚拟机运行了

三、虚拟机运行img

以下为原创
 以下在第4点效果图之前为转载内容

1、找一个已经存在的虚拟机,编辑虚拟机设置

 

 2、点击添加,选择软盘驱动器,点击完成

 3、点击使用软盘镜像文件,点击浏览选择镜像,也就是img文件,记得点击确定哦

 3、之后点击运行虚拟机就可以了

以上转载自 
以下为原创

 四、效果图

输入cls可以清屏

 

可以装x了 

  • 11
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值