x86汇编学习历程2----用bochs运行调试写屏程序

一.基础
8086显存在内存中的结构图(8086可以访问1兆字节的内容)
在这里插入图片描述
二.代码

编写新的汇编指令编译,写入虚拟硬盘主引导扇区(代码如下)
start:  ;标号
	mov ax, 0xb800           ;0xb800是文本模式下显存的地址 第一条指令地址的物理地址为0x7c00
	mov ds, ax
	mov byte [0x00], 0x41    ;字符A的ASCII编码
	mov byte [0x01], 0x04	 ;黑底红字,无闪烁

	mov byte [0x02], 's'	 ;等同于 mov byte [0x02], 0x73
	mov byte [0x03], 0x04

	mov byte [0x04], 's'
	mov byte [0x05], 0x04

	mov byte [0x06], 'e'
	mov byte [0x07], 0x04

	mov byte [0x08], 'm'
	mov byte [0x09], 0x04

	mov byte [0x0a], 'b'
	mov byte [0x0b], 0x04

	mov byte [0x0c], 'l'
	mov byte [0x0d], 0x04

	mov byte [0x0e], 'y'
	mov byte [0x0f], 0x04

	mov byte [0x10], '.'
	mov byte [0x11], 0x04
	jmp 0x0000:0x7c00     ; jmp 段地址:偏移地址(形成循环)跳到新段执行,段间跳转


current:  ;标号
	
	times 510-(current-start) db 0
	db 0x55, 0xaa

三.bochs
启动bochsbg,如出现下图情况
在这里插入图片描述

找到你的虚拟硬盘目录删掉.lock文件如图
在这里插入图片描述
重新启动bochsbg
输入xp /512xb 0x7c00如图 此时还未写入
在这里插入图片描述
执行两次s指令执行前两条指令
在这里插入图片描述
设置断点键入c
在这里插入图片描述
重新键入xp /512xb 0x7c00如图 ROM BIOS已经把主引导扇区读取到0x7c00处
在这里插入图片描述
此时执行xp /16xb 0xb8000 指令对应显示内容如图
在这里插入图片描述
由于s不能直接看到显示 可用n或next观察到显示如图输入四次n 如同
在这里插入图片描述
继续键入n到如图位置可看到bochs屏上的图中的Assembly.
在这里插入图片描述
至此结束调试

但也可使用另一种方法----用u指令显示32条反汇编这样可以直接设置断点执行 不用重复键入n 如图
在这里插入图片描述
如需查看bochs指令大全 请键入help 如需查看某条指令键入help 指令

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值