- BIOS在系统板ROM里存放着一套程序容量8KB,地址从FE000H开始
- 感兴趣可以一直查看
- 一直到3F
- 但看ASC码是字符显示,推测并不是程序而是字符
- 就这里有字符,往后一直是0
- 硬件系统的检测和初始化程序
- 外部中断和内部中断的中断例程
- 用于对硬件设备进行I/O操作的中断例程
- 其他和硬件系统相关的中断例程
- 使用BIOS功能调用,程序员不用了解硬件的操作细节,直接使用指令参数设置,并调用BIOS例程,即可完成相关工作
- 方便编程
- 能写出简洁、可读性好、易于移植的程序
- 显示,调用10H中断
- (AH) = 2调用10H中断例程的2号子程序,设置光标位置
- (AH) = 9调用10H中断例程的9号子程序,在光标位置显示字符
assume cs:code
code segment
mov ah,2;置光标功能
mov bh,0;第0页
mov dh,5;dh放行号
mov dl,12;dl放列号
int 10h
mov ah,9 ;显示字符功能
mov al,'a' ;字符
mov bl,11001010b ;颜色属性
mov bh,0 ;第0页
mov cx,3 ;字符重复个数
int 10h
mov ah,4ch
int 21h
code ends
end
- 颜色属性解释
- 直接百度BIOS中断手册
- 显示服务
INT 10H
- 功能
09H
- 功能描述:在当前光标处按指定属性显示字符
- 入口参数
AH = 09H
AL = 字码
BH = 显示页码
BL = 属性
CX = 重复输出次数
DOS中断
- INT 21H功能调用
- 功能2AH取系统日期
- 没有显示
- 优先考虑更高级的DOS中断
- 09h功能:在光标位置显示字符串’$'结束
- ds:dx指向要显示的字符串
mov ah,9
int 21h
- 事实证明数据段的指定不是必须的,(又可以少写几行代码了:-)但start标号必须加
assume cs:code
data segment
buf db 'welcome to masm!','$'
data ends
code segment
start:
mov ah,2;置光标功能
mov bh,0;第0页
mov dh,5;dh放行号
mov dl,12;dl放列号
int 10h
mov ax,data
mov ds,ax
lea dx,buf
mov ah,9 ;显示字符功能
int 21h
mov ah,4ch
int 21h
code ends
end start
- 不加start标号
- 编译也看不出来什么
- 正确的打开方式