主世界 05月15日
INT 0x10 13h号中断的问题
为什么这个显示不出来,求教!!!


; 常量声明
%define BIOS_BOOT_SEG 0x07c0
; MBR被BIOS加载的位置
%define REAL_BOOT_SEG 0x9000
;MBR实际运行的地址
%define STRACK_SEG 0xf000
; 栈基址

org BIOS_BOOT_SEG
; 声明加载位置,偏移

jmp short entry
nop
;三字节的短调转指令

entry:
; MBR内存复制
mov ax,BIOS_BOOT_SEG
mov ds,ax
sub si,si ;ds:si=0x07c0:0x0000源地址
mov ax,REAL_BOOT_SEG
mov es,ax
sub di,di ;es:di=0x9000:0x0000目标地址
mov cx,512 ;512B
rep movsb
jmp REAL_BOOT_SEG:(real_start-entry)

real_start:
;初始化寄存器
mov ax,cs
mov ds,ax
mov es,ax
mov ss,ax
mov dx,STRACK_SEG
mov sp,dx ;堆栈指针
;清屏
mov ah,0x03 ;功能号0x03
xor bh,bh
int 0x10 ;读光标位置
mov ax,0x0600
mov bx,0x0700
mov cx,0
mov dx,0x184f ;(80,50)
int 0x10 ;卷屏
mov ah,0x02 ;功能号0x02
mov bh,0
mov dx,0
int 0x10 ;置光标位置(0,0)
;显示字符串
mov ah,0x13
mov al,0x01
mov cx,26
mov bx,0x0007
mov bp,bootmsg
int 0x10

bootmsg:
db 13,10
dd "Candle OS MBR booting..."

; 中间还有分区表
times 0x1be-($-$$) db 0
; 填充剩余空间到0x1be

...全文
124 点赞 收藏 1
写回复
1 条回复

还没有回复,快来抢沙发~

发动态
发帖子
汇编语言
创建于2007-08-27

1.9w+

社区成员

4.1w+

社区内容

汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区公告
暂无公告