如何搭建X86汇编调试环境(x86,开发技术)

时间:2023-2-20 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

汇编环境搭建

本次使用vscode搭建的,需要的插件有X86 and X86_64 Assembly(也可以使用masm插件),还有一个hexdump for VSCode。
安装NASM,并添加到环境变量
安装QEMU,并将其添加到环境变量下

编写代码:(代码来自30天自制操作系统)

;hello-os;TAB=4;标准FAT12格式软盘专用的代码StandFAT12formatfloppycodeDB0xeb,0x4e,0x90DB"HELLOIPL";启动扇区名称(8字节)DW512;每个扇区(sector)大小(必须512字节)DB1;簇(cluster)大小(必须为1个扇区)DW1;FAT起始位置(一般为第一个扇区)DB2;FAT个数(必须为2)DW224;根目录大小(一般为224项)DW2880;该磁盘大小(必须为2880扇区1440*1024/512)DB0xf0;磁盘类型(必须为0xf0)DW9;FAT的长度(必须是9扇区)DW18;一个磁道(track)有几个扇区(必须为18)DW2;磁头数(必须是2)DD0;不使用分区,必须是0DD2880;重写一次磁盘大小;书中作者说原因不明的两行代码我查到了,seehttps://www.ntfs.com/fat-partition-sector.htmDB0;BPB_Physical_Disk_NumberDB(ThisisrelatedtotheBIOSphysicaldisknumber.Floppydrivesarenumberedstartingwith0x00fortheAdisk.Physicalharddisksarenumberedstartingwith0x80.Thevalueistypically0x80forharddisks,regardlessofhowmanyphysicaldiskdrivesexist,becausethevalueisonlyrelevantifthedeviceisthestartupdisk.)DB0;BPB_Current_HeadDB(NotusedbyFATfilesystem)DB0x29;BPB_SignatureDB(Mustbeeither0x28or0x29inordertoberecognizedbyWindowsNT.)DD0xffffffff;BPB_Volume_Serial_NumberDDDB"HELLO-OS";磁盘的名称(必须为11字节,不足填空格)DB"FAT12";磁盘格式名称(必须是8字节,不足填空格)TIMES18DB0;先空出18字节;程序主体DB0xb8,0x00,0x00,0x8e,0xd0,0xbc,0x00,0x7cDB0x8e,0xd8,0x8e,0xc0,0xbe,0x74,0x7c,0x8aDB0x04,0x83,0xc6,0x01,0x3c,0x00,0x74,0x09DB0xb4,0x0e,0xbb,0x0f,0x00,0xcd,0x10,0xebDB0xee,0xf4,0xeb,0xfd;信息显示部分DB0x0a,0x0a;换行两次DB"hello,world"DB0x0a;换行DB0TIMES0x1fe-($-$$)DB0x00;填写0x00直到0x001feDB0x55,0xaa;启动扇区以外部分输出DB0xf0,0xff,0xff,0x00,0x00,0x00,0x00,0x00TIMES4600DB0DB0xf0,0xff,0xff,0x00,0x00,0x00,0x00,0x00TIMES1469432DB0;只是把RESB20改成了TIMES20DB0

编译命令
vscode写好后直接终端运行

nasm-fbinday1.asm-oday1.img

-f指定输出格式为bin,本次生成的是img文件,因为后续调试要用,当然也可以生成其他类型文件

运行命令

qemu-system-i386day1.img

运行结果:

如何搭建X86汇编调试环境

调试环境搭建

调试汇编我们一般用bochs软件调试
下载链接

进入安装目录找到一个叫bochsdbg。exe的程序,我们调试主要用到这个程序
打开即可看到如下界面

如何搭建X86汇编调试环境

在白色menu框中点击Disk & Boot选项,选择ATA channel 0下的First HD/CD on channel

如何搭建X86汇编调试环境

修改如下参数

如何搭建X86汇编调试环境

第一个指定为磁盘
第二个指定img文件路径
Heads:磁头数
Sectors per track :每磁道有几个扇区
这些参数其实是由上文的程序指定的程序指定的

DW18;一个磁道(track)有几个扇区(必须为18)DW2;磁头数(必须是2)

之后点击Boot Options中的boot drive设置为disk即可

如何搭建X86汇编调试环境

点击ok后会退到Bochs start menu菜单, 点击start即可启动调试
这里展示了一下

如何搭建X86汇编调试环境

注意最下面的s 其实就是单步调试的意思,还有注意的是展示的一行汇编代码实际是未运行的,是下次运行的,比如这里的

jmpf0xf000:e05b

实际未运行,需要输入s才能运行这一步

如果想要跳转个某个地址呢 比如0x7c00,该怎么办呢?
输入 b 0x7c00 b就是打断点 运行一下
再输入c就是continue继续的意思即可跳转到这
想要退出的话需要输入2次q即可
后续有什么命令在继续补充吧

需要注意的是汇编代码必须加前面那个fat代码,不然bochs无法调试,还有另一种方法是用FixVhdw。

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:如何搭建X86汇编调试环境的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Spring Boot Admin怎么用下一篇:

271 人围观 / 0 条评论 ↓快速评论↓