|
本帖最后由 lanlanlanlanlan 于 2020-3-3 16:50 編輯
如題 一個(gè)匯編語(yǔ)言寫(xiě)的計(jì)算機(jī)啟動(dòng)引導(dǎo)程序
基于虛擬機(jī) 啟動(dòng)BIOS 后顯示系統(tǒng)時(shí)間
單片機(jī)源程序如下:
- org 07c00h ; 告訴編譯器程序加載到7c00處
- mov ax, cs
- mov ds, ax
- mov es, ax
-
- mov ax, BootMessage ;調(diào)用固定顯示的字符串內(nèi)容
-
- mov dx, 0
-
- mov cx, 15 ; 字符串長(zhǎng)度長(zhǎng)度 對(duì)應(yīng)輸入的內(nèi)容
- call DispStr ; 開(kāi)始調(diào)用外部程序 調(diào)用顯示字符串例程
-
- call TimeDisp ; 系統(tǒng)時(shí)間顯示
-
- call Keyboard ; 接受 鍵盤(pán)指令程序
- jmp [ DISCUZ_CODE_1 ]nbsp; ; 用于主程序暫停
- ; 以上是基本的啟動(dòng)引導(dǎo)程序
- DispStr: ;顯示字符子程序
- mov bp, ax ; ES:BP = 串地址 BP堆棧指針寄存器
- mov ax, 01301h ; AH = 13 代表寫(xiě)字符串, AL = 01h 游標(biāo)形態(tài)
- mov bx, 000ch
-
- int 10h ; 顯示服務(wù)
- ret ;子程序返回
-
- NumDis: ;數(shù)字顯示子程序
- mov bh, al ; AL 裝的為顯示內(nèi)容第一步 都是放入堆棧指針 高八位
- AND AL, 0F0H ;與運(yùn)算 清除低4位
-
- shr al, 4 ;右移位數(shù) 0補(bǔ)足 留下
-
- OR AL, 30H ;
-
- mov bl, 0fh
-
- int 10h ;
-
- mov al, bh
-
- AND AL, 0FH
-
- OR AL, 30H
-
- mov bl, 0fh
-
- int 10h
-
- ret
-
- TimeDisp:
- mov ah, 04h ;讀取實(shí)時(shí)時(shí)鐘日期
-
- int 1ah ;執(zhí)行中斷 獲取日期
-
- mov ah, 0eh
-
- mov al, ch
-
- call NumDis ;顯示century
-
- mov al, cl ;cl 年
-
- call NumDis ; disp 顯示年
-
- mov al, 2fh ;2fh 代表/
-
- int 10h ; 顯示 "/" 分隔符
-
- mov al, dh ; dh 月份
-
- call NumDis ; 顯示月份
-
- mov al, 2fh
-
- int 10h ; 顯示 "/" 分隔符
-
- mov al, dl ;dl 天
-
- call NumDis ; disp 顯示天
-
- mov al, 20h ;空格
-
- int 10h ; 顯示空格
-
-
- ;開(kāi)始顯示時(shí)間
- mov ah, 02h ;設(shè)定游標(biāo)位置
-
- int 1ah ;時(shí)鐘服務(wù)
-
- mov ah, 0eh ;讀取實(shí)時(shí)鐘
-
- mov al, ch ; ch存儲(chǔ)時(shí)間
-
- call NumDis ;顯示al中的時(shí)間
-
- mov al, 3ah ;
-
- int 10h ; disp ":"
-
- mov al, cl ;cl存儲(chǔ)分
-
- call NumDis ; 顯示分
-
- ret ;時(shí)間顯示完畢 退出
-
- Namedisp:
- mov ax, MyName
-
- mov dx, 0100h
- mov cx, 6 ; 分對(duì)應(yīng)我的名字長(zhǎng)度
-
- call DispStr ;調(diào)用字符顯示
- ret
-
-
- Keyboard: ;鍵盤(pán)通信
- mov ah, 00h ;讀取字符
-
- int 16h ;鍵盤(pán)服中斷
-
- cmp al, 0Dh
-
- je Namedisp
-
- jmp Keyboard
- BootMessage: db "System Time is:" ; 開(kāi)機(jī)后顯示的字符串內(nèi)容
- MyName: db "xxx xx"
- times 510-($-$) db 0 ; 填充剩下的空間,使生成的二進(jìn)制代碼恰好為512字節(jié)
- dw 0xaa55 ; 結(jié)束標(biāo)志
復(fù)制代碼
所有資料51hei提供下載:
system_time.rar
(1.83 KB, 下載次數(shù): 9)
2020-3-3 15:59 上傳
點(diǎn)擊文件名下載附件
|
評(píng)分
-
查看全部評(píng)分
|