俺啥也不懂-不知道什么时候才会编写操作系统-一个hello world写一年-10h中断黑底绿字

先看代码

	org	07c00h			; 告诉编译器程序加载到7c00处
	mov	ax, cs
	mov	ds, ax
	mov	es, ax
	call	DispStr			; 调用显示字符串例程
	jmp	$			; 无限循环
DispStr:
	mov	ax, BootMessage
	mov	bp, ax			; ES:BP = 串地址
	mov	cx, len_string			; CX = 串长度
	mov	ax, 01301h		; AH = 13,  AL = 01h
	mov	bx, 000ah		; 页号为0(BH = 0) 黑底红字(BL = 0Ch,高亮),改成bh试一下,
	mov	dl, 0
	int	10h			; 10h 号中断
	ret
BootMessage:		db	"Hello, OS world!"
len_string  equ  $ - BootMessage
times 	510-($-$$)	db	0	; 填充剩下的空间,使生成的二进制代码恰好为512字节
dw 	0xaa55				; 结束标志

10h中断时和ah寄存器配合使用的,注意上面代码中的mov    ax, 01301h,ah等于13,这个13是16进制的,不是10进制的,13号中断代表的是:在Teletype模式下显示字符串,具体说就是在屏幕的光标处写一个字符,并推进光标的位置,注意:红字这句是搜索来的,地址:https://www.cnblogs.com/longintchar/p/5224408.html

bl代表属性,如注释中bl=0ch,代表黑底红字,高亮,诸位可以试一下bl=0ah或者bl=0bh,也就是mov bx,000ah或者mov bx,000bh。

具体的关于10h的中断,不细讲,很多教科书级别的文章写的很清楚。各位自行搜索,自行修改代码试验。

关于dw     0xaa55,俺觉得大家可以读一下这篇文章,很简单,但是看了就懂:https://blog.csdn.net/iteye_4515/article/details/81721631

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值