首页 > 其他分享 >自制操作系统(八、实现图形界面)

自制操作系统(八、实现图形界面)

时间:2024-08-20 20:55:04浏览次数:11  
标签:操作系统 int ah 自制 al mov 0x10 图形界面 cmp

这次的文章超4w字!全是干货!

一、先看看示例代码

    ; 初始化文本模式视频
    mov ah, 0x00
    mov al, 0x03 ; 80x25 文本模式
    int 0x10

    ; 设置矩形的起始坐标和大小
    mov dh, 0 ; 矩形上边的 y 坐标
    mov dl, 0 ; 矩形左边的 x 坐标
    mov bh, 0  ; 页面号
    mov cx, 0  ; 矩形的宽度和高度
    mov cl, 10  ; 宽度
    mov ch, 10  ; 高度

    ; 绘制矩形
    draw_rect1:
        ; 设置光标位置
        mov ah, 0x02
        int 0x10

        ; 设置矩形颜色
        mov ah, 0x09
        mov al, ' ' ; 空格字符
        mov bl, 0x1E ; 使用预设的蓝底黄字
        int 0x10
        add dl, 1
        loop draw_rect1

其实多多少少有点伪代码的意思

 和ipl编译一下,虚拟机看到蓝屏

!!!IPL.asm更新了!!!亲测有效


; TAB=4

CYLS	EQU		10				; 声明CYLS=10

		ORG		0x7c00			; 指明程序装载地址

; 标准FAT12格式软盘专用的代码 Stand FAT12 format floppy code

		JMP		entry
		DB		0x90
		DB		"HAN     "		; 启动扇区名称(8字节)
		DW		512				; 每个扇区(sector)大小(必须512字节)
		DB		1				; 簇(cluster)大小(必须为1个扇区)
		DW		1				; FAT起始位置(一般为第一个扇区)
		DB		2				; FAT个数(必须为2)
		DW		224				; 根目录大小(一般为224项)
		DW		2880			; 该磁盘大小(必须为2880扇区1440*1024/512)
		DB		0xf0			; 磁盘类型(必须为0xf0)
		DW		9				; FAT的长度(必??9扇区)
		DW		18				; 一个磁道(track)有几个扇区(必须为18)
		DW		2				; 磁头数(必??2)
		DD		0				; 不使用分区,必须是0
		DD		2880			; 重写一次磁盘大小
		DB		0,0,0x29		; 意义不明(固定)
		DD		0xffffffff		; (可能是)卷标号码
		DB		"HANOS      "	; 磁盘的名称(必须为11字?,不足填空格)
		DB		"FAT12   "		; 磁盘格式名称(必??8字?,不足填空格)
		RESB	18				; 先空出18字节

; 程序主体

entry:
		MOV		AX,0			; 初始化寄存器
		MOV		SS,AX
		MOV		SP,0x7c00
		MOV		DS,AX

; 读取磁盘

		MOV		AX,0x0820
		MOV		ES,AX
		MOV		CH,0			; 柱面0
		MOV		DH,0			; 磁头0
		MOV		CL,2			; 扇区2

readloop:
		MOV		SI,0			; 记录失败次数寄存器

retry:
		MOV		AH,0x02			; AH=0x02 : 读入磁盘
		MOV		AL,1			; 1个扇区
		MOV		BX,0
		MOV		DL,0x00			; A驱动器
		INT		0x13			; 调用磁盘BIOS
		JNC		next			; 没出错则跳转到next
		ADD		SI,1			; 往SI加1
		CMP		SI,5			; 比较SI与5
		JAE		error			; SI >= 5 跳转到error
		MOV		AH,0x00
		MOV		DL,0x00			; A驱动器
		INT		0x13			; 重置驱动器
		JMP		retry
next:
		MOV		AX,ES			; 把内存地址后移0x200(512/16十六进制转换)
		ADD		AX,0x0020
		MOV		ES,AX			; ADD ES,0x020因为没有ADD ES,只能通过AX进行
		ADD		CL,1			; 往CL里面加1
		CMP		CL,18			; 比较CL与18
		JBE		readloop		; CL <= 18 跳转到readloop
		MOV		CL,1
		ADD		DH,1
		CMP		DH,2
		JB		readloop		; DH < 2 跳转到readloop
		MOV		DH,0
		ADD		CH,1
		CMP		CH,CYLS
		JB		readloop		; CH < CYLS 跳转到readloop
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10

	mov al, 'H'
	int 0x10

	mov al, 'a'
	int 0x10

	mov al, 'n'
	int 0x10

	mov al, 'O'
	int 0x10

	mov al, 'S'
	int 0x10


; 读取完毕,跳转到haribote.sys执行!
		MOV		[0x0ff0],CH		
		JMP		n

error:
		MOV		SI,msg

putloop:
		MOV		AL,[SI]
		ADD		SI,1			; 给SI加1
		CMP		AL,0
		JE		fin
		MOV		AH,0x0e			; 显示一个文字
		MOV		BX,15			; 指定字符颜色
		INT		0x10			; 调用显卡BIOS
		JMP		putloop

fin:
		HLT						; 让CPU停止,等待指令
		JMP		fin				; 无限循环

msg:
		DB		0x0a, 0x0a		; 换行两次
		DB		"load error"
		DB		0x0a			; 换行
		DB		0
n:
		times 510-($-$$) db 0		; 填写0x00直到0x001fe

		DB		0x55, 0xaa

不用org了,org在nasm总是出问题

二、结合HanOS内核代码+优化

这里不放代码,太多代码容易晕

效果图

 

下面提供代码

密集恐惧症慎看

    mov ah, 0x00
    mov al, 0x03 ; 80x25 文本模式
    int 0x10

    ; 设置矩形的起始坐标和大小
    mov dh, 0 ; 矩形上边的 y 坐标
    mov dl, 0 ; 矩形左边的 x 坐标
    mov bh, 0  ; 页面号
    mov cx, 0  ; 矩形的宽度和高度
    mov cl, 10  ; 宽度
    mov ch, 10  ; 高度

    ; 绘制矩形
draw_rect:
    ; 设置光标位置
    mov ah, 0x02
    int 0x10

    ; 设置矩形颜色
    mov ah, 0x09
    mov al, ' ' ; 空格字符
    mov bl, 0x04 ; 使用预设的蓝色
    int 0x10
    add dl, 1
    loop draw_rect
	mov ah, 02h
	xor bh, bh
	mov dh, 0
	mov dl, 0
	int 10h
	jmp .start

.wait_input3:
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	je .error
	mov ah, 0x0E
	int 0x10
	jmp .wait_input3

.wait_input4:
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	je .error
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jmp .wait_input4

.error:
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'E'
	int 0x10
	mov al, 'R'
	int 0x10
	mov al, 'R'
	int 0x10
	mov al, 'O'
	int 0x10
	mov al, 'R'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	jmp .check_input_pass
.start:
	mov si, 0
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '"'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '('
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ')'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ','
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10

.check_input_pass:
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '\'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '\'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '('
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, 'p'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, 'w'
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'd'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'd'
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'A'
	int 0x10
	mov al, 'D'
	int 0x10
	mov al, 'M'
	int 0x10
	mov al, 'I'
	int 0x10
	mov al, 'N'
	int 0x10
	mov al, ':'
	int 0x10
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'l'
	jne .wait_input3
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'i'
	jne .wait_input3
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'n'
	jne .wait_input3
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'h'
	jne .wait_input3
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'o'
	jne .wait_input3
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'n'
	jne .wait_input3
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'g'
	jne .wait_input3
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'h'
	jne .wait_input3
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'a'
	jne .wait_input3
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'n'
	jne .wait_input3
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	jne .wait_input3
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'P'
	int 0x10
	mov al, 'A'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, 'W'
	int 0x10
	mov al, 'O'
	int 0x10
	mov al, 'R'
	int 0x10
	mov al, 'D'
	int 0x10
	mov al, ':'
	int 0x10
	mov ah, 0x00
	int 0x16
	cmp al, '6'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input4
	mov ah, 0x00
	int 0x16
	cmp al, '6'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input4
	mov ah, 0x00
	int 0x16
	cmp al, '6'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input4
	mov ah, 0x00
	int 0x16
	cmp al, '6'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input4
	mov ah, 0x00
	int 0x16
	cmp al, '6'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input4
	mov ah, 0x00
	int 0x16
	cmp al, '6'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input4
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input4

_start:
    ; 初始化文本模式视频
    mov ah, 0x00
    mov al, 0x03 ; 80x25 文本模式
    int 0x10

    ; 设置矩形的起始坐标和大小
    mov dh, 0 ; 矩形上边的 y 坐标
    mov dl, 0 ; 矩形左边的 x 坐标
    mov bh, 0  ; 页面号
    mov cx, 0  ; 矩形的宽度和高度
    mov cl, 10  ; 宽度
    mov ch, 10  ; 高度

    ; 绘制矩形
    draw_rect1:
        ; 设置光标位置
        mov ah, 0x02
        int 0x10

        ; 设置矩形颜色
        mov ah, 0x09
        mov al, ' ' ; 空格字符
        mov bl, 0x1E ; 使用预设的蓝色
        int 0x10
        add dl, 1
        loop draw_rect1


    mov ah, 0x0E
	mov al, 'H'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'O'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'C'
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'd'
	int 0x10
    mov dh, 23 ; 矩形上边的 y 坐标
    mov dl, 43 ; 矩形左边的 x 坐标
    mov bh, 0  ; 页面号
    mov cx, 0  ; 矩形的宽度和高度
    mov cl, 1  ; 宽度
    mov ch, 1  ; 高度

    ; 绘制矩形
    draw_rect2:
        ; 设置光标位置
        mov ah, 0x02
        int 0x10

        ; 设置矩形颜色
        mov ah, 0x09
        mov al, ' ' ; 空格字符
        mov bl, 0xF0 ; 使用预设的蓝色
        int 0x10

        ; 更新坐标并绘制下一个字符
        add dl, 1
        loop draw_rect2

start:
	mov ah, 02h
	xor bh, bh
	mov dh, 0
	mov dl, 0
	int 10h
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '"'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '('
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ')'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ','
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10


.print:
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10

	mov al, 'H'
	int 0x10

	mov al, 'a'
	int 0x10

	mov al, 'n'
	int 0x10

	mov al, 'O'
	int 0x10

	mov al, 'S'
	int 0x10

	mov al, '/'
	int 0x10
	
    inc cx
    cmp cx, 5
    je _start

	cmp si, 1
	je .c
	cmp si, 2
	je .d
	cmp si, 6
	je .cSystem

	mov al, '>'
	int 0x10

	mov al, '>'
	int 0x10

.wait_input:
	mov ah, 0x00
	int 0x16
	cmp al, 'c'
	je .check_input_c1
	cmp al, 'e'
	je .check_input_e
	cmp al, 'p'
	je .check_input_print.py
	cmp al, '.'
	je .check_input_.
	cmp al, 'l'
	je .check_input_l
	cmp al, 'W'
	je .check_input_WiFi
	cmp al, 'w'
	je .writer
	cmp al, 'R'
	je .README
	cmp al, 'h'
	je .help
	cmp al, 0x0D
	je .bad_input
	mov ah, 0x0E
	int 0x10
	jmp .wait_input

.wait_input2:
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	je .bad_input
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jmp .wait_input2


.c:
	mov al, 'C'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, '>'
	int 0x10
	mov al, '>'
	int 0x10
	jmp .wait_input

.cSystem:
	mov al, 'C'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, 'y'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, '>'
	int 0x10
	mov al, '>'
	int 0x10
	jmp .wait_input

.d:
	mov al, 'D'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, '>'
	int 0x10
	mov al, '>'
	int 0x10
	jmp .wait_input

.check_input_.:
	mov ah, 0x0E
	int 0x10
	cmp si, 6
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, '\'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'O'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'S'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	jne .wait_input
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '"'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '('
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ')'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ','
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10

	jmp .print

.check_input_l:
	mov ah, 0x0E
	int 0x10
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 's'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	jne .wait_input
	cmp si, 0
	je .check_input_l0
	cmp si, 1
	je .check_input_l1
	cmp si, 6
	je .check_input_l6
	cmp si, 2
	je .check_input_l2

.check_input_l0:
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'P'
	int 0x10
	mov al, 'A'
	int 0x10
	mov al, 'T'
	int 0x10
	mov al, 'H'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'H'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'O'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'F'
	int 0x10
	mov al, 'O'
	int 0x10
	mov al, 'L'
	int 0x10
	mov al, 'D'
	int 0x10
	mov al, 'E'
	int 0x10
	mov al, 'R'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'C'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'D'
	int 0x10
	mov al, ':'
	int 0x10
	jmp .print

.check_input_l1:
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'P'
	int 0x10
	mov al, 'A'
	int 0x10
	mov al, 'T'
	int 0x10
	mov al, 'H'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'H'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'O'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, 'C'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'F'
	int 0x10
	mov al, 'O'
	int 0x10
	mov al, 'L'
	int 0x10
	mov al, 'D'
	int 0x10
	mov al, 'E'
	int 0x10
	mov al, 'R'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, 'y'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'F'
	int 0x10
	mov al, 'I'
	int 0x10
	mov al, 'L'
	int 0x10
	mov al, 'E'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'N'
	int 0x10
	mov al, 'A'
	int 0x10
	mov al, 'M'
	int 0x10
	mov al, 'E'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'K'
	int 0x10
	mov al, 'I'
	int 0x10
	mov al, 'N'
	int 0x10
	mov al, 'D'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'B'
	int 0x10
	mov al, 'I'
	int 0x10
	mov al, 'T'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 'p'
	int 0x10
	mov al, 'l'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'B'
	int 0x10
	mov al, 'I'
	int 0x10
	mov al, 'N'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '1'
	int 0x10
	mov al, 'K'
	int 0x10
	mov al, 'B'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, 'Y'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '1'
	int 0x10
	mov al, '4'
	int 0x10
	mov al, '4'
	int 0x10
	mov al, '0'
	int 0x10
	mov al, 'K'
	int 0x10
	mov al, 'B'
	int 0x10
	jmp .print

.check_input_l6:
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'P'
	int 0x10
	mov al, 'A'
	int 0x10
	mov al, 'T'
	int 0x10
	mov al, 'H'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'H'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'O'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, 'C'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, 'y'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'F'
	int 0x10
	mov al, 'I'
	int 0x10
	mov al, 'L'
	int 0x10
	mov al, 'E'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'N'
	int 0x10
	mov al, 'A'
	int 0x10
	mov al, 'M'
	int 0x10
	mov al, 'E'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'K'
	int 0x10
	mov al, 'I'
	int 0x10
	mov al, 'N'
	int 0x10
	mov al, 'D'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'B'
	int 0x10
	mov al, 'I'
	int 0x10
	mov al, 'T'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'O'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'L'
	int 0x10
	mov al, 'H'
	int 0x10
	mov al, 'H'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '1'
	int 0x10
	mov al, 'K'
	int 0x10
	mov al, 'B'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'R'
	int 0x10
	mov al, 'E'
	int 0x10
	mov al, 'A'
	int 0x10
	mov al, 'D'
	int 0x10
	mov al, 'M'
	int 0x10
	mov al, 'E'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'M'
	int 0x10
	mov al, 'D'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '1'
	int 0x10
	mov al, 'K'
	int 0x10
	mov al, 'B'
	int 0x10
	jmp .print

.check_input_l2:

	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'P'
	int 0x10
	mov al, 'A'
	int 0x10
	mov al, 'T'
	int 0x10
	mov al, 'H'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'H'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'O'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, 'D'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'F'
	int 0x10
	mov al, 'I'
	int 0x10
	mov al, 'L'
	int 0x10
	mov al, 'E'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'N'
	int 0x10
	mov al, 'A'
	int 0x10
	mov al, 'M'
	int 0x10
	mov al, 'E'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'K'
	int 0x10
	mov al, 'I'
	int 0x10
	mov al, 'N'
	int 0x10
	mov al, 'D'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'B'
	int 0x10
	mov al, 'I'
	int 0x10
	mov al, 'T'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'B'
	int 0x10
	mov al, 'I'
	int 0x10
	mov al, 'N'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '2'
	int 0x10
	mov al, 'K'
	int 0x10
	mov al, 'B'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'p'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'P'
	int 0x10
	mov al, 'Y'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '1'
	int 0x10
	mov al, '2'
	int 0x10
	mov al, 'B'
	int 0x10
	jmp .print

.check_input_py:
	cmp si, 2
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 't'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'h'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'o'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'n'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, ' '
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'p'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'r'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'i'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'n'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 't'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, '.'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'p'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'y'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	jne .wait_input
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '6'
	int 0x10
	mov al, '6'
	int 0x10
	mov al, '6'
	int 0x10

	jmp .print

.check_input_e:
	mov ah, 0x0E
	int 0x10
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'x'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'i'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 't'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	jne .wait_input
	MOV AL,0x13
	MOV AH,0x00
	INT 0x10
	jmp .done

.check_input_cd0:
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, ' '
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'H'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'a'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'n'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'O'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'S'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, '/'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'C'
	je .check_input_cd1
	cmp al, 'D'
	je .check_input_cd2
	cmp al, 0x0D
	jne .wait_input
	mov si, 0
	jmp .print

.check_input_cd1:
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, ':'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, '/'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'S'
	je .cd11
	cmp al, 0x0D
	jne .wait_input
	mov si, 1
	jmp .print

.cd11:
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'y'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 's'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 't'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'e'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'm'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, '/'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 0x0D
	jne .wait_input
	mov si, 6
	jmp .print


.check_input_cd2:
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, ':'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, '/'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 0x0D
	jne .wait_input
	mov si, 2
	jmp .print

.check_input_c1:
	mov ah, 0x0E
	int 0x10
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'd'
	je .check_input_cd0
	cmp al, 'l'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 's'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	jne .wait_input
	mov ax, 0x0600
	mov bx, 0x0700
	mov cx, 0
	mov dx, 0x184f
	int 0x10
	mov ah, 02h
	xor bh, bh
	mov dh, 0
	mov dl, 0
	int 10h
	jmp _start

.help:
	mov ah, 0x0E
	int 0x10
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'e'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'l'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'p'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	jne .wait_input
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 'c'
	int 0x10
	mov al, 'l'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 'c'
	int 0x10
	mov al, 'd'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'x'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 'w'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 'W'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 'F'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'l'
	int 0x10
	mov al, 'p'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 'p'
	int 0x10
	mov al, 'y'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'A'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'd'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, '.'
	int 0x10
	mov al, '.'
	int 0x10
	mov al, '.'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	jmp .print

.README:
	mov ah, 0x0E
	int 0x10
	cmp si, 6
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'E'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'A'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'D'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'M'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'E'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, '.'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'm'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'd'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	jne .wait_input
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '#'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'H'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'O'
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'I'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 'd'
	int 0x10
	mov al, 'u'
	int 0x10
	mov al, 'c'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'T'
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 'p'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'g'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 's'
	int 0x10
	mov al, 'y'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'd'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'b'
	int 0x10
	mov al, 'y'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'l'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'g'
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, ','
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'C'
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'p'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'y'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 's'
	int 0x10
	mov al, 'c'
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 'l'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 's'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'u'
	int 0x10
	mov al, 'd'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, '.'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'T'
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'k'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'l'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 'f'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 'p'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'g'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 's'
	int 0x10
	mov al, 'y'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'w'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'd'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'b'
	int 0x10
	mov al, 'y'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'l'
	int 0x10
	mov al, 'f'
	int 0x10
	mov al, '.'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'T'
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'c'
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'd'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'H'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'O'
	int 0x10
	mov al, 'p'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'g'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'S'
	int 0x10
	mov al, 'y'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, ':'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 'c'
	int 0x10
	mov al, 'l'
	int 0x10
	mov al, 's'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 'c'
	int 0x10
	mov al, 'd'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'x'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 'w'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 'W'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, 'F'
	int 0x10
	mov al, 'i'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, 'l'
	int 0x10
	mov al, 'p'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 'p'
	int 0x10
	mov al, 'y'
	int 0x10
	mov al, 't'
	int 0x10
	mov al, 'h'
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, '`'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'A'
	int 0x10
	mov al, 'n'
	int 0x10
	mov al, 'd'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 'm'
	int 0x10
	mov al, 'o'
	int 0x10
	mov al, 'r'
	int 0x10
	mov al, 'e'
	int 0x10
	mov al, '.'
	int 0x10
	mov al, '.'
	int 0x10
	mov al, '.'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	jmp .print

.bad_input:
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, 'b'
	int 0x10
	mov al, 'a'
	int 0x10
	mov al, 'd'
	int 0x10

	jmp .print
.done:
	ret
	jmp .done

.check_input_WiFi:
	mov ah, 0x0E
	int 0x10
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'i'
	jne .wait_input

	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'F'
	jne .wait_input
	
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'i'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	jne .wait_input
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10

	mov al, 'N'
	int 0x10

	mov al, 'A'
	int 0x10

	mov al, 'M'
	int 0x10

	mov al, 'E'
	int 0x10

	mov al, ':'
	int 0x10
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, '1'
	jne .wait_input

	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, '2'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, '3'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, '4'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, '5'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	jne .wait_input
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10

	mov al, 'P'
	int 0x10

	mov al, 'A'
	int 0x10

	mov al, 'S'
	int 0x10

	mov al, 'S'
	int 0x10
	mov al, 'W'
	int 0x10

	mov al, 'O'
	int 0x10

	mov al, 'R'
	int 0x10

	mov al, 'D'
	int 0x10
	mov al, ':'
	int 0x10
	mov ah, 0x00
	int 0x16
	cmp al, '1'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input2
	mov ah, 0x00
	int 0x16
	cmp al, '2'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input2
	mov ah, 0x00
	int 0x16
	cmp al, '3'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input2
	mov ah, 0x00
	int 0x16
	cmp al, '4'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input2
	mov ah, 0x00
	int 0x16
	cmp al, '5'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input2
	mov ah, 0x00
	int 0x16
	cmp al, '6'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input2
	mov ah, 0x00
	int 0x16
	cmp al, '7'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input2
	mov ah, 0x00
	int 0x16
	cmp al, '8'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input2
	mov ah, 0x00
	int 0x16
	cmp al, '9'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input2
	mov ah, 0x00
	int 0x16
	cmp al, '0'
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input2
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	mov ah, 0x0E
	mov al, '*'
	int 0x10
	jne .wait_input2
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10

	mov al, 'W'
	int 0x10

	mov al, 'i'
	int 0x10

	mov al, 'F'
	int 0x10

	mov al, 'i'
	int 0x10

	mov al, ' '
	int 0x10

	mov al, 'i'
	int 0x10

	mov al, 's'
	int 0x10

	mov al, ' '
	int 0x10

	mov al, 'r'
	int 0x10

	mov al, 'e'
	int 0x10

	mov al, 'a'
	int 0x10

	mov al, 'd'
	int 0x10

	mov al, 'y'
	int 0x10

	jmp .print

.check_input_print.py:
	mov ah, 0x0E
	int 0x10
	cmp si, 2
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'y'
	je .check_input_py
	cmp al, 'r'
	jne .wait_input

	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'i'
	jne .wait_input

	
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'n'
	jne .wait_input

	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 't'
	jne .wait_input

	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, '.'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'p'
	jne .wait_input

	
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'y'
	jne .wait_input

	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	jne .wait_input
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10

	mov al, 'p'
	int 0x10

	mov al, 'r'
	int 0x10

	mov al, 'i'
	int 0x10

	mov al, 'n'
	int 0x10

	mov al, 't'
	int 0x10

	mov al, '('
	int 0x10

	mov al, '"'
	int 0x10

	mov al, '6'
	int 0x10

	mov al, '6'
	int 0x10

	mov al, '6'
	int 0x10

	mov al, '"'
	int 0x10

	mov al, ')'
	int 0x10

	jmp .print


.writer:
	mov ah, 0x0E
	int 0x10
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'r'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'i'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 't'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'e'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	mov ah, 0x0E
	int 0x10
	cmp al, 'r'
	jne .wait_input
	mov ah, 0x00
	int 0x16
	cmp al, 0x0D
	jne .wait_input
	mov ah, 0x0E
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '+'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, '\'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '\'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '\'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '-'
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '\'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '_'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '\'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '_'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '|'
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, ' '
	int 0x10
	mov al, '/'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, '/'
	int 0x10
	mov al, '|'
	int 0x10
	mov al, 0x0D
	int 0x10
	mov al, 0x0A
	int 0x10

	jmp .print

	


作者自己加了很多命令(如果作者不是小学生,不用做作业的话估计都要几万行了)

现在内核代码足足有4681行

算上ipl差不多5000行

标签:操作系统,int,ah,自制,al,mov,0x10,图形界面,cmp
From: https://blog.csdn.net/linhhanpy/article/details/141367630

相关文章

  • 一款专为内网办公环境设计的操作系统,集成了Word、Excel、PPT、PDF编辑器,内网聊天、白
    前言在当今数字化办公时代,企业面临着多样化的办公需求。现有软件往往存在一些痛点,如操作复杂、兼容性差、资源消耗高,以及在内网环境下的通讯和文件共享不便。这些限制不仅影响了工作效率,也制约了企业的数字化转型。因此,一款能够处理这些问题的软件显得尤为迫切。介绍GodoOS......
  • Ubuntu操作系统的基本配置与使用
    ubuntu下载地址:https://cn.ubuntu.com/download/server/thank-you?version=20.04.4&architecture=amd64(官方)https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases(清华源镜像)http://mirrors.aliyun.com/ubuntu-releases(阿里源镜像)1.查看系统版本及内核信息本次使用......
  • 学习文件IO,让你从操作系统内核的角度去理解输入和输出(理论篇)
    本篇会加入个人的所谓鱼式疯言❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言而是理解过并总结出来通俗易懂的大白话,小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的.......
  • 国产操作系统 离线部署MYSQL、NGINX、redis、JDK1.8
    目录1.1、龙蜥操作系统8.4【AnolisOS8.4GA】1.2、安装关键步骤说明2.1、安装必要的系统组件2.2、配置JDK2.3、安装redis2.4、安装nginx2.5、安装mysql3.1、启用防火墙3.2、开放业务端口3.3、修改SSH端口号为100223.4、配置特定端口指定IP访问4.1、网络设置4.2......
  • "DSE 驱动签名强制"(Driver Signature Enforcement)是一项 Windows 操作系统的安全功能,
    "DSE驱动签名强制"(DriverSignatureEnforcement)最早起源于WindowsXP和WindowsServer2003的安全增强功能。随着时间推移,它在后续的Windows版本中得到进一步加强和改进,旨在提升系统的安全性和稳定性,通过确保驱动程序必须经过签名认证,防止潜在恶意软件和不兼容的驱动程序......
  • 自制最简易版vue.js
    classMyVue{constructor(options){this.$el=document.querySelector(options.el)this.$data=options.datathis.$methods=options.methodsthis.init()this.compile(this.$el)}compile(node){letthat=thisnode.chi......
  • 【Linux操作系统】——操作命令基础入门
    ......
  • 计算机操作系统(汤小丹)
    第一章:操作系统引论(可以不看或者最后看)操作系统目标与作用操作系统目标方便性有效性可扩充性开放性操作系统的作用os是用户与计算机硬件系统之间的接口os是是计算机系统资源文件、处理机、存储器、i/o设备管理者os是实现计算机资源的抽象表现操作系统的前进动力不断的......
  • 【Story】不同操作系统的命令行命令对比
    目录表格汇总1:WindowsCMD、WindowsPowerShell、LinuxShell、macOSTerminal详细说明表格汇总2:WindowsCMD、WindowsPowerShell、LinuxShell、macOSTerminal详细说明结束语以下的表格,包括了不同操作系统的命令行命令对比,涵盖了更多常见操作,包括运行软件、安装/......
  • 操作系统-内存、文件管理
    一、内存管理的层次关系用户层STL自动分配、自动释放调用C++C++new/delete、构造/析构调用CCmalloc\calloc\realloc\free调用POSIX\LinuxPOSIXsbrk\brk调用KernalLinuxmmap\munmap调用Kernal系统层Kernalkmalloc\vmalloc调用驱......