汇编代码写软盘boot loader(包括安装程序)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值