系统的简单注解 - 12 09_font.asm
该文件用于在屏幕上显示字符。
disp_letter_font:显示字符;
数组font_0_buf到font_cnsl_buf,为各字符的点阵;
数字font_letter_mem用于记录各字符点阵的起始地址;
;===============================================================================
;=== 本程序提供字符显示功能: ===
;=== 1.字符显示函数 ===
;=== 2.各类字符数组 ===
;===============================================================================;-------------------------------------------------------------------------------
disp_letter_font: ;显示字符;输入参数:eax-高16位为Y值;低16位为X值;输入参数:bl-对应的字符编码;输入参数:cl-字符显示的颜色;输出参数:无push ebppush eax ;[ebp+8]: eaxpush ebx ;[ebp+4]: ebxpush ecx ;[ebp]: ecxmov ebp, esp;计算字符左上角点对应的显存地址xor ebx, ebxmov ebx, eaxshr eax, 16 ;ax对应Y值and ebx, 0xffff ;bx对应X值mov cx, 320 ;一行320个点mul cxadd eax, ebx ;eax中为字符左上角点在显存中的偏移mov [font_dis_saddr], eax ;记录该偏移 ;做好画点的准备mov edx, font_letter_mem ;edx为保存字符点阵的内存地址mov eax, [ebp+4] ;bl为对应字符的编码and eax, 0x0ffshl eax, 2 ;左移2位,也是乘以4add edx, eaxmov edx, [edx] mov ebx, [font_dis_saddr] ;edx设置为字符显存偏移add ebx, pic_mem_addr ;ebx指向字符对应的显存起始地址mov ecx, 16 ;每个字符16行;逐行的显示字符的点阵
_disp_a_letter: mov al, [edx]mov ah, 0 ;默认为黑色test al, 0x80jz _8@mov ah, [ebp] ;否则为红色
_8@:mov [ebx], ah inc ebxmov ah, 0 ;默认为黑色test al, 0x40jz _7@mov ah, [ebp] ;否则为红色
_7@:mov [ebx], ah inc ebx mov ah, 0 ;默认为黑色test al, 0x20jz _6@mov ah, [ebp] ;否则为红色
_6@:mov [ebx], ah inc ebx mov ah, 0 ;默认为黑色test al, 0x10jz _5@mov ah, [ebp] ;否则为红色
_5@:mov [ebx], ah inc ebx mov ah, 0 ;默认为黑色test al, 0x08jz _4@mov ah, [ebp] ;否则为红色
_4@:mov [ebx], ah inc ebx mov ah, 0 ;默认为黑色test al, 0x04jz _3@mov ah, [ebp] ;否则为红色
_3@:mov [ebx], ah inc ebx mov ah, 0 ;默认为黑色test al, 0x02jz _2@mov ah, [ebp] ;否则为红色
_2@:mov [ebx], ah inc ebx mov ah, 0 ;默认为黑色test al, 0x01jz _1@mov ah, [ebp] ;否则为红色
_1@:mov [ebx], ah inc ebx inc edx ;下一个字符add ebx, 312 ;显存地址移到下一行loop _disp_a_letterpop ecxpop ebxpop eaxpop ebpret;--------------------------------全局变量---------------------------------------
align 4font_dis_saddr dd 0x0 ;用于记录对应字符显存的首地址font_letter_mem dd font_0_buf, font_1_buf, font_2_buf, font_3_buf, dd font_4_buf, font_5_buf, font_6_buf, font_7_buf,dd font_8_buf, font_9_buf, font_a_buf, font_b_buf,dd font_c_buf, font_d_buf, font_e_buf, font_f_buf,dd font_g_buf, font_h_buf, font_i_buf, font_j_buf,dd font_k_buf, font_l_buf, font_m_buf, font_n_buf, dd font_o_buf, font_p_buf, font_q_buf, font_r_buf,dd font_s_buf, font_t_buf, font_u_buf, font_v_buf,dd font_w_buf, font_x_buf, font_y_buf, font_z_buf,dd font___buf, font_cnsl_buf font_0_buf db 0x00,0x00,0x3E,0x63,0x63,0x63,0x6B,0x6B, db 0x63,0x63,0x63,0x3E,0x00,0x00,0x00,0x00 font_1_buf db 0x00,0x00,0x0C,0x1C,0x3C,0x0C,0x0C,0x0C, db 0x0C,0x0C,0x0C,0x3F,0x00,0x00,0x00,0x00 font_2_buf db 0x00,0x00,0x3E,0x63,0x03,0x06,0x0C,0x18, db 0x30,0x61,0x63,0x7F,0x00,0x00,0x00,0x00font_3_buf db 0x00,0x00,0x3E,0x63,0x03,0x03,0x1E,0x03, db 0x03,0x03,0x63,0x3E,0x00,0x00,0x00,0x00font_4_buf db 0x00,0x00,0x06,0x0E,0x1E,0x36,0x66,0x66, db 0x7F,0x06,0x06,0x0F,0x00,0x00,0x00,0x00font_5_buf db 0x00,0x00,0x7F,0x60,0x60,0x60,0x7E,0x03, db 0x03,0x63,0x73,0x3E,0x00,0x00,0x00,0x00font_6_buf db 0x00,0x00,0x1C,0x30,0x60,0x60,0x7E,0x63, db 0x63,0x63,0x63,0x3E,0x00,0x00,0x00,0x00font_7_buf db 0x00,0x00,0x7F,0x63,0x03,0x06,0x06,0x0C, db 0x0C,0x18,0x18,0x18,0x00,0x00,0x00,0x00font_8_buf db 0x00,0x00,0x3E,0x63,0x63,0x63,0x3E,0x63, db 0x63,0x63,0x63,0x3E,0x00,0x00,0x00,0x00font_9_buf db 0x00,0x00,0x3E,0x63,0x63,0x63,0x63,0x3F, db 0x03,0x03,0x06,0x3C,0x00,0x00,0x00,0x00 font_a_buf db 0x00,0x00,0x00,0x00,0x00,0x3C,0x46,0x06, db 0x3E,0x66,0x66,0x3B,0x00,0x00,0x00,0x00font_b_buf db 0x00,0x00,0x70,0x30,0x30,0x3C,0x36,0x33,db 0x33,0x33,0x33,0x6E,0x00,0x00,0x00,0x00font_c_buf db 0x00,0x00,0x00,0x00,0x00,0x3E,0x63,0x60,db 0x60,0x60,0x63,0x3E,0x00,0x00,0x00,0x00 font_d_buf db 0x00,0x00,0x0E,0x06,0x06,0x1E,0x36,0x66,db 0x66,0x66,0x66,0x3B,0x00,0x00,0x00,0x00 font_e_buf db 0x00,0x00,0x00,0x00,0x00,0x3E,0x63,0x63,db 0x7E,0x60,0x63,0x3E,0x00,0x00,0x00,0x00 font_f_buf db 0x00,0x00,0x1C,0x36,0x32,0x30,0x7C,0x30,db 0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00 font_g_buf db 0x00,0x00,0x00,0x00,0x00,0x3B,0x66,0x66,db 0x66,0x66,0x3E,0x06,0x66,0x3C,0x00,0x00 font_h_buf db 0x00,0x00,0x70,0x30,0x30,0x36,0x3B,0x33,db 0x33,0x33,0x33,0x73,0x00,0x00,0x00,0x00 font_i_buf db 0x00,0x00,0x0C,0x0C,0x00,0x1C,0x0C,0x0C,db 0x0C,0x0C,0x0C,0x1E,0x00,0x00,0x00,0x00 font_j_buf db 0x00,0x00,0x06,0x06,0x00,0x0E,0x06,0x06,db 0x06,0x06,0x06,0x66,0x66,0x3C,0x00,0x00 font_k_buf db 0x00,0x00,0x70,0x30,0x30,0x33,0x33,0x36,db 0x3C,0x36,0x33,0x73,0x00,0x00,0x00,0x00 font_l_buf db 0x00,0x00,0x1C,0x0C,0x0C,0x0C,0x0C,0x0C,db 0x0C,0x0C,0x0C,0x1E,0x00,0x00,0x00,0x00 font_m_buf db 0x00,0x00,0x00,0x00,0x00,0x6E,0x33,0x33,db 0x33,0x33,0x33,0x33,0x00,0x00,0x00,0x00 font_n_buf db 0x00,0x00,0x00,0x00,0x00,0x6E,0x7F,0x6B,db 0x6B,0x6B,0x6B,0x6B,0x00,0x00,0x00,0x00 font_o_buf db 0x00,0x00,0x00,0x00,0x00,0x3E,0x63,0x63,db 0x63,0x63,0x63,0x3E,0x00,0x00,0x00,0x00font_p_buf db 0x00,0x00,0x00,0x00,0x00,0x6E,0x33,0x33,db 0x33,0x33,0x3E,0x30,0x30,0x78,0x00,0x00font_q_buf db 0x00,0x00,0x00,0x00,0x00,0x3B,0x66,0x66,db 0x66,0x66,0x3E,0x06,0x06,0x0F,0x00,0x00font_r_buf db 0x00,0x00,0x00,0x00,0x00,0x6E,0x3B,0x33,db 0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00font_s_buf db 0x00,0x00,0x00,0x00,0x00,0x3E,0x63,0x38,db 0x0E,0x03,0x63,0x3E,0x00,0x00,0x00,0x00font_t_buf db 0x00,0x00,0x08,0x18,0x18,0x7E,0x18,0x18,db 0x18,0x18,0x1B,0x0E,0x00,0x00,0x00,0x00font_u_buf db 0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,db 0x66,0x66,0x66,0x3B,0x00,0x00,0x00,0x00font_v_buf db 0x00,0x00,0x00,0x00,0x00,0x63,0x63,0x36,db 0x36,0x1C,0x1C,0x08,0x00,0x00,0x00,0x00font_w_buf db 0x00,0x00,0x00,0x00,0x00,0x63,0x63,0x63,db 0x6B,0x6B,0x7F,0x36,0x00,0x00,0x00,0x00font_x_buf db 0x00,0x00,0x00,0x00,0x00,0x63,0x36,0x1C,db 0x1C,0x1C,0x36,0x63,0x00,0x00,0x00,0x00font_y_buf db 0x00,0x00,0x00,0x00,0x00,0x63,0x63,0x63,db 0x63,0x63,0x3F,0x03,0x06,0x3C,0x00,0x00font_z_buf db 0x00,0x00,0x00,0x00,0x00,0x7F,0x66,0x0C,db 0x18,0x30,0x63,0x7F,0x00,0x00,0x00,0x00font___buf db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,db 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00font_cnsl_buf db 0x00,0x00,0x00,0x60,0x30,0x18,0x0C,0x06,db 0x0C,0x18,0x30,0x60,0x00,0x00,0x00,0x00
系统的简单注解 - 12 09_font.asm相关推荐
- 铁路购票系统的简单座位分配算法
问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排5个座位.为方便起见,我们用1到100来给所有的座位编号,第一排是1到5号,第二排是6到10 ...
- 2016CCF、CSP 第二题铁路购票系统的简单座位分配算法(JAVA版)
问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排5个座位.为方便起见,我们用1到100来给所有的座位编号,第一排是1到5号,第二排是6到10 ...
- 关于《龙族幻想》的系统以及简单分析
一.前言 游戏经历展示 经历报告前言 游戏经历时长:585天 服务器:五区时间掌控 等级:141级 评分:908000+ <龙族幻想>是一款祖龙研发,腾讯代理的RPG手游.采用UE4引擎, ...
- python使用redis在实际场景使用_Python使用Redis实现作业调度系统(超简单)
概述 Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案. Redis从它的许多竞争继承来的三个主要特点: Redis数据库完全在内存中,使用磁 ...
- Linux kubuntu x64系统下解决QT5.12编辑菜单和工具栏不显示图标问题
Linux kubuntu x64系统下发现QT5.12在设计视图下编辑菜单和工具栏显示图标,但是编译运行后发现菜单和工具栏不显示图标,如下图: 我的解决办法是: 1.在QT项目中,菜单和工具栏图标一 ...
- linux系统下定时备份,在Linux系统中简单地实现定时备份的方法 -电脑资料
运行一个简单的脚本 假设你有一个脚本叫:/usr/local/bin/myscript. ,你想要每隔一小时就运行一次, Service 文件 第一步,创建一个service文件,根据你Linux的发 ...
- ArduPilot开源飞控系统之简单介绍
ArduPilot开源飞控系统之简单介绍 1. 源由 2. 了解&阅读 2.1 ArduPilot历史 2.2 关于GPLv3 2.3 ArduPilot系统组成 2.4 ArduPilot代 ...
- u盘装linux系统简单方法,用u盘安装linux系统的简单方法教程
[教程介绍] 虽然我们多数人都是使用windows操作系统,但不得不承认,还是有大量的用户在使用linux操作系统,这个系统也是有很多自己的优势. 以前装系统,多数都是光驱来安装,现在很多新电脑,基本 ...
- 自定义控件其实很简单2/12
转载:http://blog.csdn.net/aigestudio/article/details/41316141 上一节我们粗略地讲了下如何去实现我们的View并概述了View形成动画的基本原理 ...
最新文章
- linux驱动:音频驱动(六)ASoc之codec设备
- 阿里二面:redis分布式锁过期了但业务还没有执行完,怎么办
- Pass NI Certification
- python3 strip lstrip rstrip 删除字符串首尾指定字符
- 多台Linux服务器SSH相互访问无需密码--转
- python常用导入函数及其他操作备忘录
- 位运算的那些奇技淫巧 | 掌(装)握(逼)必备,妙解两道算法题
- GraphPad Prism 统计教程:简单线性回归原理
- js判断输入数字是否是整数,金额、数字
- 小而全的Pandas使用案例
- 直方图规定化python+opencv实现
- thon3爬虫之urllib携带cookie爬取网页的方法
- 如何使用思维导图?思维导图绘制方法介绍
- RGB渐变色与HSL渐变色
- python发微信提醒天气冷了注意保暖_天气变冷了,用Python给父母制作一个天气提醒小助手~...
- Redis 九种数据结构及其底层实现 持久化 缓存机制 过期键与内存淘汰 集群等相关知识
- HTML5特效~3D立方体旋转
- oracle rac部署示意图,Oracle 11g RAC部署手册 For Linux PDF
- 租传奇手游服务器网站,传奇手游服务端
- 瑞昱RTL8201G(I)-VB-CG 规格应用--电口传输距离(500M)之王