码迷,mamicode.com
首页 > 其他好文 > 详细

操作系统开发之——打印字符

时间:2015-08-15 12:04:39      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:操作系统   打印字符   

我们在上一篇文章中提到Bootsect如何制作,接着我们来做打印字符,(某些朋友可能认为打印字符是最重要的,嘻嘻)

直接贴代码:

_ASM_Print_String:
	push	ebp
	mov	ebp, esp

	mov	esi, [ebp + 8]	; pszInfo
	mov	edi, [POS]
	mov	ah, [ebp + 12]	; color
.1:
	lodsb
	test	al, al
	jz	.2
	cmp	al, 0Ah	; 是回车吗?
	jnz	.3
	push	eax
	mov	eax, edi
	mov	bl, 160
	div	bl
	and	eax, 0FFh
	inc	eax
	mov	bl, 160
	mul	bl
	mov	edi, eax
	pop	eax
	jmp	.1
	
.3:
	mov	[gs:edi], ax
	add	edi, 2
	jmp	.1
	
.2:
	mov	[POS], edi

	pop	ebp
	ret


这段代码就不用解释了把,可以直接用GLOBAL导出当函数用,相信学过汇编的朋友都知道什么意思,不过有几点要解释一下,POS是记录光标位置,读者朋友在使用这段代码是要加上定义:“POS: DD 0”,还有,要把GS段选择子的偏移设置为0xB8000,为什么要这样设置呢?因为Intel的大叔归定这一段地址归显存使用,当然,我们可是用的80X25的字符显示模式,如果读者要制作操作系统的话,要加上一段代码:“
;设置显示方式
MOV AX,0x03;AL = 0x03,AH = 0
INT 0x10”

当然,还不能关闭中断,(CLI),如果读者还有什么问题可以找我:我的Email:2608184397@qq.com 

如果读者有开发操作系统的想法可以联系我哦。

版权声明:本文为博主原创文章,未经博主允许不得转载。

操作系统开发之——打印字符

标签:操作系统   打印字符   

原文地址:http://blog.csdn.net/imcjysy/article/details/47679803

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!