diff --git a/Download.py b/Download.py
index d18d786..7b40c70 100644
--- a/Download.py
+++ b/Download.py
@@ -1,5 +1,11 @@
 #!/usr/bin/env python3
+import os
 import sys
+import json
 import base64
 import requests
-print(requests.get(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci9JbnN0YWxsLnBocD9WZXJzaW9uPQ==").decode("utf-8") + sys.argv[1]).text)
\ No newline at end of file
+# 读取版本号
+programPath = os.path.split(os.path.realpath(__file__))[0]  # 返回 string
+with open(f"{programPath}/information.json") as file:
+    version = json.loads(file.read())["Version"]
+print(requests.get(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci9JbnN0YWxsLnBocD9WZXJzaW9uPQ==").decode("utf-8") + version).text)
\ No newline at end of file
diff --git a/VM-source/test-kvm.asm b/VM-source/test-kvm.asm
index f21c8ef..ed61d8e 100644
--- a/VM-source/test-kvm.asm
+++ b/VM-source/test-kvm.asm
@@ -2,27 +2,27 @@ mov ax,0xb800
 mov es,ax
 ; 清屏
 mov cx,80*25
-clean:
-	mov di,cx
-	add di,di
-	mov byte [es:di],''
-	add di,1
-	mov byte [es:di],0x0F
-	loop clean
+;clean:
+;	mov di,cx
+;	add di,di
+;	mov byte [es:di],''
+;	add di,1
+;	mov byte [es:di],0x0F
+;	loop clean
 ; 显示上方白条
 ; 移除(0,0)的S字符
-mov byte [es:0x00],''
-mov cx,80*2-1
-mov di,0
-headtitle:
-	mov di,cx
-	mov byte [es:di],0xF0
-	; 写入空字符
-	add di,di
-	mov byte [es:di],''
-	;inc cx
-	;sub cx,1
-	loop headtitle
+;mov byte [es:0x00],''
+;mov cx,80*2-1
+;mov di,0
+;headtitle:
+;	mov di,cx
+;	mov byte [es:di],0xF0
+;	; 写入空字符
+;	add di,di
+;	mov byte [es:di],''
+;	;inc cx
+;	;sub cx,1
+;	loop headtitle
 
 mov di,0
 mov cx,80*2-1
@@ -141,6 +141,19 @@ showCenterText:
 
 showCenterTextEnd:
 
+mov ax,[cs:0x100]
+mov dx,[cs:0x102]
+	mov bx,16
+	div bx
+	mov ds,ax
+	mov es,ax
+xor di,di
+mov si,1
+;xor ds,ds
+;mov bx,512
+xor bx,bx
+call read_hard_disk_0
+
 get_data:
 	mov di,80*2*25-2
 
@@ -222,14 +235,77 @@ bcd_to_ascii:
 
 
 
-poweroff:
+;poweroff:
 	; 跳过关机
 	jmp near end
 	; 关机
-	mov ax,5307H  ; 高级电源管理功能,设置电源状态
-	mov bx,0001H  ; 设备ID,1:所有设备
-	mov cx,0003H  ; 状态,3:表示关机
-	int 15h
+;	mov ax,5307H  ; 高级电源管理功能,设置电源状态
+;	mov bx,0001H  ; 设备ID,1:所有设备
+;	mov cx,0003H  ; 状态,3:表示关机
+;	int 15h
+
+read_hard_disk_0:  ; 从硬盘读取一个逻辑扇区
+		; 输入:DI:SI=起始逻辑扇区号
+		; DS:BX=目标缓冲区地址
+	push ax
+	push bx
+	push cx
+	push dx
+
+	mov dx,0x1f2
+	mov al,1
+	out dx,al ; 读取的扇区数
+
+	inc dx ; 0x1f3
+	mov ax,si
+	out dx,al ; LBA地址7~0
+
+	inc dx ; 0x1f4
+	mov al,ah
+	out dx,al ; LBA地址15~8
+
+	inc dx ; 0x1f5
+	mov ax,di
+	out dx,al ; LBA地址23~16
+
+	inc dx ; 0x1f6
+	mov al,0xe0 ; LBA28模式,主盘
+	or al,ah ; LBA地址27~24
+	out dx,al
+
+	inc dx ; 0x1f7
+	mov al,0x20 ; 读命令
+	out dx,al
+
+	.waits:
+		in al,dx  ; 此时 dx 为 0x1f7,此时为命令端口也是状态窗口
+		and al,0x88
+		cmp al,0x08
+		jnz .waits
+		; 内部操作期间,会将 0x1f7 端口第 7 位设置为“1”,准备就绪后会将此位清零,并将第 3 位设为 1
+
+		mov cx,256 ; 总计要读取的/字/数
+		mov dx,0x1f0
+	
+	.readw:
+		in ax,dx
+		mov [bx],ax
+		add bx,2
+		loop .readw
+
+		pop dx
+		pop cx
+		pop bx
+		pop ax
+
+
 end:
 	times 510-($-$$) db 0
 	db 0x55,0xaa
+
+; 数据区
+showText_data:
+	db 'A', 0x0A
+	db 'B', 0x0A
+	db 0x03
+	db 0x55, 0xab
diff --git a/VM-source/test-kvm.asm.bin b/VM-source/test-kvm.asm.bin
index f8dbb5e..bc8480a 100644
Binary files a/VM-source/test-kvm.asm.bin and b/VM-source/test-kvm.asm.bin differ
diff --git a/VM-source/test.qcow2 b/VM-source/test.qcow2
index 82675bb..12b8ee2 100644
Binary files a/VM-source/test.qcow2 and b/VM-source/test.qcow2 differ