⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 textmode.asm

📁 ucos在x86上的移植代码。吐血推荐啊
💻 ASM
字号:
; textmode.asm :
;   文本模式操作函数, 工作于32位保护模式下.
;
; Copyright(c) 2007, Alex P.Wonder
; phoenixwonder@gmail.com
;

[SECTION .text]
[BITS 32]

;==================================================================
; C格 式: void os_putchar(char chr, int x, int y, int color);
; 说  明:
;		  80x25字符模式屏幕写点函数, 采用直接写视频内存缓冲区(0xB8000)
;   方式实现.
; 参  数:
;
; 返回值:
;
;==================================================================
global os_putchar
os_putchar:
	push		ebp
	mov			ebp, esp
	sub			esp, 4 ;offset

	push		eax
	push		ebx

	; linear_offset=(y*80 + x)*2 => (y*(64 + 16) + x)*2 => y<<7 + y<<5 + x<<1
	xor 		eax, eax
	xor			ebx, ebx

	mov			ebx, [ebp + 16] ;y
	mov			eax, ebx ; y->(eax)
	shl			eax, 7
	mov			[ebp - 4], eax
	shr     eax, 2
	add			[ebp - 4], eax ;y<<7 + y<<5

	xor			eax, eax
	mov			eax, [ebp + 12] ; x->(eax)
	shl			eax, 1
	add			[ebp - 4], eax

	mov			al, [ebp + 8] ;chr
	mov			ah, [ebp + 20] ;color
	mov     ebx, [ebp - 4]

	mov			[gs:ebx], ax

	pop			ebx
	pop 		eax

	leave
	ret

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -