第5章 编写主引导扇区代码

开机过程

一、在屏幕上显示文本

01、显卡和显存

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
每个字节表示三原色中的一个(红绿蓝)

在这里插入图片描述

两种模式
	|-文本模式
	|-图像模式

两种模式的显存是分开的;

文本模式下,显存的内容是文本的编码;

图像模式下,显存的内容是像素的颜色。

“字符发生器”根据字符的编码来控制显示的像素;

比如其接收到字符“e”的编码,就根据接收到的字符编码来控制显示器上的像素,显示出字符的轮廓;

为了要显示字符,处理器就要访问显存,把字符的编码写进去;

在这里插入图片描述

02、准备访问文本模式下的显存

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

03、字符的编码和显示属性

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

04、文本模式下的显存操作

在这里插入图片描述
在这里插入图片描述
mov byte [0x00],0x41 ,将DS寄存器中的值 B800左移4位,加上偏移地址[0x00],计算出具体的物理地址,

05、MOV指令的形式和机器码

参考:MOV
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

⭐️不允许内存单元之间传送数据,因为内存单元间没有电路连接

在这里插入图片描述
在指令中ip寄存器是不可以直接访问的

06、列表文件的创建和使用

生成列表文件,命令如下:

d:/nasm exam.asm -l exam.lst

07、在汇编程序中使用标号

参考:附录 - NASM 安装、部署、使用

08、段间直接绝对跳转指令

jmp 0x0000:0x7c00
;// 指令的机器码为: EA 00 7C 00 00

⚠️注意: 段地址在后,偏移地址在前

09、在Bochs中运行和调试写屏程序

在这里插入图片描述

10、在VirtualBox中运行写屏程序

11、主引导扇区执行时的内存布局

在这里插入图片描述
在这里插入图片描述

12、使用标号计算跳转的偏移地址

在这里插入图片描述
在这里插入图片描述

13、使用寄存器的绝对间接近跳转

在这里插入图片描述


14、使用相对偏移量的短跳转和近跳转

在这里插入图片描述

二、在屏幕上显示数字

1、显示数字的基本原理

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2、无符号数除法指令div

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3、在调试器里验证除法操作

在这里插入图片描述

在这里插入图片描述

4、异或指令xor的用法

在这里插入图片描述
16位寄存器可以存储的数值是065535(0x00000xFFFF),65535/10=6553
8 位寄存器可以存储的数值是0255(0x000xFF)

所以数值>2550的值作为被除数,除以除数是8位二进制数字时,结果会是错误的值

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

5、加法指令add的用法

在这里插入图片描述

;// 在屏幕上显示65535
start:
	mov  ax,65535
	xor dx,dx				;等价于mov dx,0
	mov bx,10
	div bx					;AX=商(6553),DX=余数(5)
	add dl,0x30				;将数字转换为对应的数字字符
current:
	times 510-(current-start) db 0
	db 0x55,0xaa
	add bh, al				; 寄存器bh al的值相加,结果放入bh
	add cx, dx				; 寄存器cx dx的值相加,结果放入dx
	add ax, 3				; 立即数3被当成16位的数字与寄存器ax的值相加,结果放入ax中
	add word [0x2002], 67	; 内存地址0x2002开始的一个字与立即数67(当成16位的字)相加,结果放入内存地址0x2002处
	add si, [0x2002]		; 寄存器si的值与内存地址0x2002的值相加,结果放入寄存器si,si是16位的,所以从0x2002开始读取一个字

6、使用标号访问内存数据

在这里插入图片描述

7、段超越前缀的使用

在这里插入图片描述

8、显示标号的汇编地址

三、阶段性重点内容总结

1、重点内容总结

在这里插入图片描述
在这里插入图片描述
zxxx

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
⭐️ 位指令要和后面的数据匹配
长数据不能放到短数据操作指令后,那短的数据可以放长数据操作指令后么?

在这里插入图片描述
在这里插入图片描述

2、第5章检测点和习题解析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java硕哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值