admin管理员组文章数量:1625837
上一次完成了安装程序以及页面展示的代码编写,这次开始进行功能开发,本次开发前两个功能,分别是重新启动计算机以及引导现有的操作系统。
这次是在上次的代码基础上进行功能开发,不过,代码上有所调整,添加了引导程序,为什么会这么做?下面会进行说明。
首先给出调整后的代码,功能和(一)篇的内容一样,都是安装程序以及页面欢迎信息展示,不同的是添加了引导程序,以及将任务程序写入了 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
版权声明:本文标题:汇编语言 — 课程设计2 — (二)重启计算机及引导现有操作系统 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1728933823a1180507.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论