BIOS 屏幕显示in10实例

1.清屏示例(AH=06h)

;利用0x06号功能,上卷全部行,则可实现清屏
;输入:
;功能号 AH=0x06
;上卷的行数 AL,如果为0,表示合疗
;上卷行属性 BH 
;窗口左上角的(x,y)位置(CL,CH)
;窗口右下角的(x,y)位置(DL,DH)
;无返回值

mov ax,0600h
mov bx,0700h
mov cx,0     ;左上角:(0,0)
mov dx 184fh ;右下角:(80,25)
int 10h

2.显示为闪烁白色背景,红色前景的字符串(AH=0x13)

描述:  
    以电传打字机的方式显示字符串  
接受参数:  
    AH          0x13  
    AL          显示模式  
    BH          视频页  
    BL          属性值(如果AL=0x00或0x01)  
    CX          字符串的长度  
    DH,DL       屏幕上显示起始位置的行、列值  
    ES:BP       字符串的段:偏移地址  
返回值:  
    无  
显示模式(AL):  
    0x00:字符串只包含字符码,显示之后不更新光标位置,属性值在BL中  
    0x01:字符串只包含字符码,显示之后更新光标位置,属性值在BL中  
    0x02:字符串包含字符码及属性值,显示之后不更新光标位置  
    0x03:字符串包含字符码及属性值,显示之后更新光标位置  


mov ax, 0x7c0                         ; BIOS将代码加载到内存0x7c00处,因此段地址为0x7c
mov ds, ax                            ; 初始化数据段
mov es, ax                            ; 用于指向字符串

mov ax, Message                       ; es:bp指向要显示的字符串
mov bp, ax
mov ah, 0x13                          ; ah为0x13,调用13号中断
mov al, 0                             ; al为0,不移动光标,字符串中没有属性内容
mov bh, 0                             ; 第0页显示
mov bl, 0xFC                          ; 闪烁白色背景,红色加亮前景
mov cx, MessageLen                    ; 字符串长度
mov dx, 0                             ; dh=0, dl=0, 即第0行,第0列
int 10h                               ; 调用10H中断

jmp $                                 ; 无限循环,防止代码进入数据区

Message db "This is a test!"
MessageLen equ $ - Message
times 510-($-$$) db 0                 ; 在中间填充0
    db 0x55, 0xaa                     ; 在第511和512字节处写入引导程序标志位

不使用中断,直接写内存显示字符串


mov ax, 0x7c0
mov ds, ax

mov ax, 0xb800
mov es, ax
mov ax, text
mov si, ax

mov cx, textlen
mov ah, 0x7c
cld
DispStr:
    lodsb
    stosw
    loop DispStr
jmp $

text: db "this is a test"
textlen equ $-text
times 510-($-$$) db 0
dw 0xaa55