assume cs:code,ss:stack
code segment
d:db 'Mission Complete Successfully!','$'
e:db 'Mission Failed!','$'
start:mov ax,cs
mov es,ax
mov bx,offset i
mov ah,3
mov al,1
mov ch,0
mov cl,1
mov dh,0
mov dl,81h
int 13h ;调用13h号中断将标号i之后的代码写进软盘的启动扇区
cmp al,0
jne g
f:mov ax,cs
mov ds,ax
mov dx,offset d
mov ah,9
int 21h
jmp h
g:mov ax,cs
mov ds,ax
mov dx,offset e
mov ah,9
int 21h
h:mov ax,4c00h
int 21h
i:mov ah,7
mov al,0
int 10h ;调用10h清屏
mov ax,data
mov ds,ax
mov si,offset a
mov di,80*2*6
mov ax,0b800h
mov es,ax
mov cx,offset b-offset a
cld
j:movsb
mov byte ptr es:[di],2
inc di
loop j
mov di,80*2*7
mov si,offset b
mov cx,offset c-offset b
cld
k:movsb
mov byte ptr es:[di],2
inc di
loop k ;到此将a、b标号所指示的内容分别写到显示器的第六和 第七行
l:mov ah,0h
int 16h
cmp al,'r'
je r
cmp al,'s'
je s
jne l ;检测键盘按键,并做相关跳转或等待
r:mov ax,1000h
mov ds,ax
db 0EAh
dw 0
dw 0FFFFh ;重启计算机
s:mov ax,0
mov es,ax
mov bx,7c00h
mov ah,2h
mov al,1h
mov ch,0h
mov dh,0h
mov dl,80h
mov cl,1h
int 13h
db 0EAh
dw 7c00h
dw 0 ;加载现有的操作系统
a db '(1),Press r to restart the computer!'
b db '(2),Press s to boot the windows system!'
c db 510-($-i) dup (?)
m dw 0AA55h ;启动标志
code ends
stack segment stack
db 16 dup (?)
stack ends
end start