学习前置知识第十七天

学习前置知识第十七天

今天要做什么?

1:深入了解主引导扇区的内存布局

2:编译运行测试文件

3:使用标号计算跳转的偏移地址

4:已经编写了主引导扇区程序,使用和认识另一种跳转指令:绝对间接近跳转

5:使用相对偏移量的短跳转和近跳转

操作指令汇总:

xp

xp /512xb 0x7c00(从物理地址7c00处显示 512个字节)

xp /要查看的字节(512) 要查看的方式x(以十六进制显示)b(byte以字节为单位显示)

要查看的地址 0x7c00,最好先将调试地址设置到0x7c00处

sreg 显示寄存器详细信息

r 显示所有的通用寄存器

s 单步执行,执行后的内容不会立即显示到屏幕上

u 连续的反汇编指令,默认一条,u/16 显示16条

c不间断执行指令,如果我们设置了断点,他就会从断点出停下来

xp /要查看的字节(512) 要查看的方式x(以16进制显示)b (byte以字节为单位显示)例如:xp /512xb 0x7c00

b 设置断点,指令 所谓断点,这是一个内存指令,当处理器执行到这个地址时,指令停止

先输入b 0x7c00(要到达的地址)

在输入c 执行到此位置暂停

1:

主引导扇区加载地址

用7c00 +5f 到地址 7c5f

如果修改 jmp 0x0000:0x7c5f 即是 不停的的跳转到自己的位置

测试一下,修改文件 后 重新生成bin文件,然后重新写入磁盘

nasm exam.asm -f bin -o exam.bin

3:

从0000: 0000到0000: FFFF是一个64KB的段地址

0x0000:0x7c00-7c5F  

计算地址 可以用原先的三种方式,也可以直接引用标号的方式

可以使用多种方式标号

使用下图方式的地址计算,还是无限跳自己

4:绝对间接近跳转

绝对间接进跳转:跳转到不太远的地方,不是直接给出的跳转地址,是用通用寄存器bx间接给出的。给出的地址是目标位置的实际偏移地址。

不同的跳转指令,操作码是不一样的

因为这条指令的段地址本身没有变化,变化的只是偏移地址,不改变段寄存器CS的内容,只改变了指令指针寄存器IP的内容,所以是一个段内跳转指令,绝对间接近跳转指令。

5:

   使用相对偏移量的跳转是因为,标号和要跳转的地方所相差的偏移地址是不变的。

跳转的组成:

Jmp start(jmp short start);跳转标号 ;EB 8位的相对偏移量,8位是一个字节,可以表示的数介于(128)-(-127) 我们称这样的跳转为相对短跳转

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值