输出 BCD 码
[org 0x7c00]
start:
xor bh,bh ; 将 bh 清空
mov bl,[bcd_num] ; 取出内存中的 BCD 码送入 bl
shl bx,4 ; bx 中的 BCD 码左移 4 位,高位数字移入 bh 的低位,低位数字移入 bl 的高位
shr bl,4 ; bl 中的 BCD 码右移 4 位,低位数字移入 bl 的低位
or bx,0x3030 ; bh 和 bl 同时与 0x30 做或运算
mov al,bh ; 输出高位
mov ah,0x0e ; 输出一个字符
int 0x10 ; 调用 BIOS 中断
mov al,bl ; 输出低位
mov ah,0x0e ; 输出一个字符
int 0x10 ; 调用 BIOS 中断
fin:
hlt
jmp fin
bcd_num:
db 0x42 ; 存放 BCD 码 42
signature:
%if $-$$>510
%fatal "stage1 code exceed 512 bytes."
%endif
times 510-($-$$) \
db 0
db 0x55,0xaa读盘

附录
基本函数实现
Last updated