编写主引导扇区代码笔记

本文记录了如何编写主引导扇区(MBR)代码,详细解释了如何在文本模式下显示字符串并转换十进制数字,同时展示了如何利用汇编语言进行数值计算和屏幕输出。
mov ax,0xb800        ;指向文本模式的显示缓冲区
mov es,ax
;以下显示字符串"Label offest:"    ;在屏幕上显示数据只要把相应的数据写到内存中显存相映射的位置就行
mov byte[es:0x00],'L'        ;源操作数是内存,目的操作数是立即数,则要在内存前加 byte或word表示移动的是一个字节或一个字
mov byte[es:0x01],0x07        ;在显存中显示文本时,第一个字节是要显示的文本,第二个字节表示格式,0x07表示的就是格式
mov byte[es:0x02],'a'
mov byte[es:0x03],0x07
mov byte[es:0x04],'b'
mov byte[es:0x05],0x07
mov byte[es:0x06],'e'
mov byte[es:0x07],0x07
mov byte[es:0x08],'l'
mov byte[es:0x09],0x07
mov byte[es:0x0a],' '
mov byte[es:0x0b],0x07
mov byte[es:0x0c],'o'
mov byte[es:0x0d],0x07
mov byte[es:0x0e],'f'
mov byte[es:0x0f],0x07
mov byte[es:0x10],'f'
mov byte[es:0x11],0x07
mov byte[es:0x12],'e'
mov byte[es:0x13],0x07
mov byte[es:0x14],'s'
mov byte[es:0x15],0x07
mov byte[es:0x16],'t'
mov byte[es:0x17],0x07
mov byte[es:0x18],':'
mov byte[es:0x19],0x07

mov ax,number        ;取得标号number的偏移地址
mov bx,10

;设置数据段的基地址    ;把数据段的基地址设置成代码段的基地址,因为数据已经和代码混在一起
mov cx,cs
mov ds,cx

;求个位上的数字
mov dx,0
div bx
mov [0x7c00+number+0x00],dl    ;保存个位上的数字
;求十位上的数字
xor dx,dx
div bx
mov [0x7c00+number+0x01],dl    ;保存十位上的数字
;求百位上的数字
xor dx,dx
div bx
mov [0x7c00+number+0x02],dl    ;保存百位上的数字
;求千位上的数字
xor dx,dx
div bx
mov [0x7c00+number+0x03],dl    ;保存千位上的数字
;求万位上的数字
xor dx,dx
div bx
mov [0x7c00+number+0x04],dl    ;保存万位上的数字

;以下用十进制显示标号的偏移地址
mov al,[0x7c00+number+0x04]
add al,0x30
mov [es:0x1a],al
mov byte[es:0x1b],0x04

mov al,[0x7c00+number+0x03]
add al,0x30
mov [es:0x1c],al
mov byte[es:0x1d],0x04

mov al,[0x7c00+number+0x02]
add al,0x30
mov [es:0x1e],al
mov byte[es:0x1f],0x04


mov al,[0x7c00+number+0x01]
add al,0x30
mov [es:0x20],al
mov byte[es:0x21],0x04

mov al,[0x7c00+number+0x00]
add al,0x30
mov [es:0x22],al
mov byte[es:0x23],0x04

mov byte[es:0x24],'D'
mov byte[es:0x25],0x07

infi:jmp near infi    ;无限循环,为了避免访问到数据,以至于改变数据内容


number db 0,0,0,0,0
times 203 db 0        如果文件的字节没到一个扇区的字节数,则需要填充
db 0x55,0xaa        ;主扇区的最后两个字节是0x55,0xaa
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值