汇编语言 — 课程设计2 — (二)重启计算机及引导现有操作系统

本文介绍了一个汇编语言课程设计的第二部分,主要内容包括如何重新启动计算机和引导现有操作系统。开发者在原有代码基础上增加了引导程序,并将任务程序写入2扇区,以确保操作系统引导成功。通过调用中断获取用户输入,实现不同功能的选择。文章讨论了代码调整的原因,并提供了完整代码以供读者参考。
摘要由CSDN通过智能技术生成

        上一次完成了安装程序以及页面展示的代码编写,这次开始进行功能开发,本次开发前两个功能,分别是重新启动计算机以及引导现有的操作系统。

        这次是在上次的代码基础上进行功能开发,不过,代码上有所调整,添加了引导程序,为什么会这么做?下面会进行说明。

        首先给出调整后的代码,功能和(一)篇的内容一样,都是安装程序以及页面欢迎信息展示,不同的是添加了引导程序,以及将任务程序写入了 2 扇区。

boot segment                ; 将软盘中0道0面2扇区的任务程序读入到0:7e00处,然后跳转到该地址执行程序
    mov ax, 0               ; 7e00 = 7c00 + 200h,该偏移地址与7c00地址相差512字节,空出512字节空间,
    mov es, ax              ; 其它功能开发将会用到这空出的512字节空间
    mov bx, 7e00h
​
    mov al, 1
    mov ch, 0
    mov cl, 2
    mov dl, 0
    mov dh, 0
    mov ah, 2
    int 13h
    
    mov ax, 0
    push ax
    mov ax, 7e00h
    push ax
    retf
​
db 512 dup(0)
boot ends
​
code segment
    jmp short start                 ; 跳转到 start 执行程序
    
    option1: db '1) reset pc', 0
    option2: db '2) start system', 0
    option3: db '3) clock', 0
    option4: db '4) set clock', 0
​
    start:
        mov bp, 0
        mov bx, offset option1
        call printf
​
        mov bp, 160
        mov bx, offset option2
        call printf
​
        mov bp, 320
        mov bx, offset option3
        call printf
​
        mov bp, 480
        mov bx, offset option4
        call printf
​
        stop: jmp short stop        ; 死循环,暂停当前位置,不向下继续执行程序
    printf:
        mov ax, 0b800h
        mov es, ax
        mov si, 0
        mov ch, 0
        va: mov cl, cs:[bx + 07e00h]    ; 获取显示字符加上 7e00
        jcxz ok
        mov es:[si + bp], cl
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值