第1章 打印启动信息
来源:互联网 发布:nb878知乎 编辑:程序博客网 时间:2024/06/16 04:59
显示器I/O知识:
显存地址是 0xb8000,屏幕是80*25,每个位置由两个字节决定。第一个字节决定所显示的字符,如0xb8000。第二个字节决定怎么显示字符(背景颜色,前景颜色),如0xb8001。
汇编命令知识:
cld: 方向标志置0,si和di 增1或增2;
std: 方向标志置1,si和di 减1或减2
串传送指令(数据从A内存到B内存)
cldmovsb # ds:[si] -> es:[di], ++si, ++di movsw # ds:[si] -> es:[di], si+=2, di+=2
串存储指令(数据从寄存器到内存)
cldstosb # al -> es:[di], ++sistosw # ax ->es:[di], si+=2
串读取指令(数据从内存到寄存器)
cldlodsb # ds:[si] –> al, ++silodsw # ds:[si] –> ax, si+=2
重复前缀指令
rep: 用在movs、stos、lods指令前,每执行一次指令,cx减1;直到cx = 0,重复执行结束。
下面这段代码的作用是把内存中的字符串复制到0xb8000地址上
.text .global start .code16start: jmp $0x0, $codemsg: .string "1kos booting......\x0"code: movw $0xb800,%ax #显存地址在0xb8000 movw %ax, %es xorw %di, %di #es:di = 0xb8000 xorw %ax, %ax movw %ax, %ds #ds:si = msg movw $msg, %si cld #si和di自增 movb $0x07, %ah #字符属性:黑底白字loop: cmp $0x0, (%si) je end lodsb #ds:[si] -> al, ++si stosw #ax -> es:[di], di += 2 #al=字符 ah=属性 jmp loopend: jmp end
- 第1章 打印启动信息
- Linux启动打印信息
- 屏蔽内核启动打印信息
- 第1章:打印表格
- 启动UClinux后的一些打印信息
- 在linux启动过程打印调试信息
- 彻底屏蔽linux启动打印信息
- imx536开发板启动打印信息一览
- hi3516A uboot 启动时的打印信息
- 屏蔽linux 的启动打印信息
- 分析arm linux启动打印信息
- Zynq-启动时串口不打印信息
- 第1章 python 打印输出实战
- 第1章 实现启动
- linux查看内核启动过程的打印信息
- dmesg命令用于打印Linux系统开机启动信息
- U-boot移植之RK-PX2开机启动打印信息
- 设置jboss启动参数打印异常时调用栈信息
- 有缓冲的文件操作2
- 看到的强大的分析贴关于String对象的创建以及管理(学习了)
- 无缓冲的文件操作
- S3C2440 SDRAM内存驱动
- Linux内核分析 - 网络[八]:IP协议
- 第1章 打印启动信息
- 无缓冲的copy实现
- Timus OJ 1056. Computer Net
- 文件锁的操作
- php的一个简单分页类
- “黑马程序员”——枚举
- JAVA学习方法的思考
- control_files的修改方法比较
- SwingWorker实现的简易图片浏览器