//该代码为安装程序,运行后即将主程序部分复制到软盘a
//测试环境为VMWARE 11 + MS-DOS
assume cs:code
code segment
;------------------------------BEGIN COPY-----------------------------------
begin: mov bx,2000h
mov es,bx
mov bx,0
mov ax,0203h
mov cx,0001h
mov dx,0000h
int 13h
mov ax,2000h
push ax
mov ax,offset MYBOOT
push ax
retf
;--------------My Booting Program--------------------
MYBOOT:
jmp short myboot_begin
myboot_table dw reset_pc, start_system,
clock, set_clock
myboot_msg dw msg1,msg2,msg3,msg4
msg1 db '1.reset pc',0
msg2 db '2.start system',0
msg3 db '3.clock',0
msg4 db '4.set clock',0
myboot_begin:
call show_menu
mov ah,0
int 16h
cmp al,'1'
jb myboot_begin
cmp al,'4'
ja myboot_begin
sub al,31h
shl al,1
mov bl,al
mov bh,0
mov bx,cs:myboot_table[bx]
call cls
call bx
jmp short myboot_begin
ret
show_menu:
push ax
push bx
push cx
push dx
push bp
push di
push es
call cls
mov bp,cs
mov es,bp
mov bh,0
mov bl,2
mov dh,8
mov dl,33
mov di,0
show_menu1:
mov bp,cs:myboot_msg[di]
call show_str
add di,2
add dh,3
cmp di,8
jb show_menu1
mov ah,1
mov cx,2000h
int 10h
pop es
pop di
pop bp
pop dx
pop cx
pop bx
pop ax
ret
cls: push cx
push di
push es
mov di,0b800h
mov es,di
mov di,0
mov cx,2000
cls0:
mov byte ptr es:[di],' '
mov byte ptr es:1[di],7
add di,2
loop cls0
pop es
pop di
pop cx
ret
;--------------data & stack--------------
data db 32 dup(0)
stack dw 32 dup(0)
;----------------reboot pc---------------
reset_pc:
mov