广告
返回顶部
首页 > 资讯 > 精选 >如何搭建X86汇编调试环境
  • 395
分享到

如何搭建X86汇编调试环境

2023-06-25 14:06:54 395人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关如何搭建X86汇编调试环境,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。汇编环境搭建本次使用vscode搭建的,需要的插件有X86 and X86_64 Assembly(也可

这篇文章将为大家详细讲解有关如何搭建X86汇编调试环境,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

汇编环境搭建

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

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

; hello-os; TAB=4; 标准FAT12格式软盘专用的代码 Stand FAT12 fORMat floppy code        DB      0xeb, 0x4e, 0x90        DB      "HELLOIPL"      ; 启动扇区名称(8字节)        DW      512             ; 每个扇区(sector)大小(必须512字节)        DB      1               ; 簇(cluster)大小(必须为1个扇区)        DW      1               ; FAT起始位置(一般为第一个扇区)        DB      2               ; FAT个数(必须为2)        DW      224             ; 根目录大小(一般为224项)        DW      2880            ; 该磁盘大小(必须为2880扇区1440*1024/512)        DB      0xf0            ; 磁盘类型(必须为0xf0)        DW      9               ; FAT的长度(必须是9扇区)        DW      18              ; 一个磁道(track)有几个扇区(必须为18)        DW      2               ; 磁头数(必须是2)        DD      0               ; 不使用分区,必须是0        DD      2880            ; 重写一次磁盘大小        ; 书中作者说原因不明的两行代码我查到了,see https://www.ntfs.com/fat-partition-sector.htm        DB      0               ; BPB_Physical_Disk_Number    DB   (This is related to the BiOS physical disk number. Floppy drives are numbered starting with 0x00 for the A disk. Physical hard disks are numbered starting with 0x80. The value is typically 0x80 for hard disks, regardless of how many physical disk drives exist, because the value is only relevant if the device is the startup disk.)        DB      0               ; BPB_Current_Head            DB   (Not used by FAT file system)        DB      0x29            ; BPB_Signature               DB   (Must be either 0x28 or 0x29 in order to be recognized by windows NT.)        DD      0xffffffff      ; BPB_Volume_Serial_Number    DD        DB      "HELLO-OS   "   ; 磁盘的名称(必须为11字节,不足填空格)        DB      "FAT12   "      ; 磁盘格式名称(必须是8字节,不足填空格)        TIMES   18  DB 0        ; 先空出18字节; 程序主体        DB      0xb8, 0x00, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x7c        DB      0x8e, 0xd8, 0x8e, 0xc0, 0xbe, 0x74, 0x7c, 0x8a        DB      0x04, 0x83, 0xc6, 0x01, 0x3c, 0x00, 0x74, 0x09        DB      0xb4, 0x0e, 0xbb, 0x0f, 0x00, 0xcd, 0x10, 0xeb        DB      0xee, 0xf4, 0xeb, 0xfd; 信息显示部分        DB      0x0a, 0x0a      ; 换行两次        DB      "hello, world"        DB      0x0a         ; 换行        DB      0        TIMES   0x1fe-($-$$) DB 0x00         ; 填写0x00直到0x001fe        DB      0x55, 0xaa; 启动扇区以外部分输出        DB      0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00        TIMES   4600    DB 0        DB      0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00        TIMES   1469432 DB 0; 只是把 RESB 20 改成了 TIMES 20 DB 0

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

nasm -f bin day1.asm -o day1.img

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

运行命令

qemu-system-i386 day1.img

运行结果:

如何搭建X86汇编调试环境

调试环境搭建

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

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

如何搭建X86汇编调试环境

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

如何搭建X86汇编调试环境

修改如下参数

如何搭建X86汇编调试环境

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

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

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

如何搭建X86汇编调试环境

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

如何搭建X86汇编调试环境

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

jmpf 0xf000:e05b

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

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

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

关于“如何搭建X86汇编调试环境”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: 如何搭建X86汇编调试环境

本文链接: https://www.lsjlt.com/news/305305.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何搭建X86汇编调试环境
    这篇文章将为大家详细讲解有关如何搭建X86汇编调试环境,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。汇编环境搭建本次使用vscode搭建的,需要的插件有X86 and X86_64 Assembly(也可...
    99+
    2023-06-25
  • X86汇编调试环境搭建的过程
    最近毕设需要做一个基于X86的微型OS内核,一直在学习汇编,前来记录一下 汇编环境搭建 本次使用vscode搭建的,需要的插件有X86 and X86_64 Assembly(也可以...
    99+
    2022-11-12
  • 如何搭建x86汇编DOS编程环境
    小编给大家分享一下如何搭建x86汇编DOS编程环境,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!相关工具的介绍DOSBOX这个软件在PC上模拟出DOS环境,从官网...
    99+
    2023-06-25
  • x86汇编DOS编程环境搭建过程
    目录前言相关工具的介绍DOSBOX汇编工具包DOSBOX的使用汇编连接执行调试其它前言 在学习x86汇编时,第一步是搭建一个可以编译、运行代码的环境 这方面的教程有一些,但是给出的下...
    99+
    2022-11-12
  • linux php调试环境如何搭建
    这篇文章主要讲解了“linux php调试环境如何搭建”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux php调试环境如何搭建”吧!linux php调试环境的搭建方法:1、下载安装...
    99+
    2023-06-22
  • linux php调试环境怎么搭建
    本文操作环境:ubuntu 16.04系统,PHP7.1版,Dell G3电脑。linux php调试环境怎么搭建?Linux的PHP开发环境快速搭建搭建的环境是LNMP:1、安装MySQL这个非常简单我用的是Ubuntu那么就用apt源,...
    99+
    2015-01-12
    linux
  • mysql源码调试(一)环境搭建
    操作系统:windows server 2012 R2VS版本:visio studio 2015 community机器配置:4core/4G安装所需包:cmake,bison,boost,activep...
    99+
    2022-10-18
  • docke-cli的调试环境搭建过程
    目录搭建docke-cli的调试环境1. 安装go开发环境2. 修改部分go 环境变量3. 创建目录4.下载代码5. 配置VScode搭建docke-cli的调试环境 在搭建dock...
    99+
    2022-11-16
    docke cli调试环境 docker调试环境 搭建docke cli
  • 在Windows64下如何搭建汇编语言DOSBox及debug.exe环境
    这篇文章主要介绍了在Windows64下如何搭建汇编语言DOSBox及debug.exe环境,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。该文同为类似问题 “如何在 Wind...
    99+
    2023-06-25
  • 汇编语言DOSBox及debug.exe在Windows64下环境搭建
    该文同为类似问题 “如何在 Windows 64 位系统下进入 debug” 的答案。 很多同学初看王爽的《汇编语言》,或者因为其它原因需要进入 debug 调试模式下学习汇编语言时...
    99+
    2022-11-12
  • 如何搭建RocketMQ在本地IDEA开发调试环境
    今天小编给大家分享一下如何搭建RocketMQ在本地IDEA开发调试环境的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前言发...
    99+
    2023-06-29
  • linux如何搭建web测试环境
    搭建Linux上的Web测试环境可以按照以下步骤进行:1. 安装Apache Web服务器:在终端中运行以下命令安装Apache:`...
    99+
    2023-08-23
    linux
  • android编译环境如何搭建
    要搭建Android编译环境,可以按照以下步骤进行操作:1. 安装Java开发工具包(JDK):Android开发需要使用Java进...
    99+
    2023-08-11
    android
  • vs2022 qt环境搭建调试的方法步骤
    建议:先安装qt再安装vs! 1、安装qt6,如下图,勾选msvc2019即可,其它自行决定,剩下安装自动的; 2、vs2022安装没什么说的,因为已经是模块化安装了,如下图,这是...
    99+
    2022-11-12
  • 线程简介和MySQL调试环境的搭建
    本篇内容介绍了“线程简介和MySQL调试环境的搭建”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、线程简...
    99+
    2022-10-18
  • 如何搭建MySQL Group Replication测试环境
    这篇文章给大家分享的是有关如何搭建MySQL Group Replication测试环境的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。    最近看了下My...
    99+
    2022-10-19
  • PHP如何搭配环境和调试代码
    这篇文章主要介绍了PHP如何搭配环境和调试代码,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、第一讲 php环境的搭配和代码调试1、Php...
    99+
    2022-10-19
  • QT搭建Android编译环境及使用安卓虚拟机调试
    QT是可以创建Android APP的,同时生成apk提供安装。 而为了编译和生成apk,就需要为QT添加对应的支持包。 一、Android环境支持包下载 JAVA SE8 JDK JAVA SE8 JDK是JAVA环境的支持包,Andro...
    99+
    2023-09-01
    android qt
  • 在VSCode中如何搭建Python开发环境并进行调试
    本篇内容介绍了“在VSCode中如何搭建Python开发环境并进行调试”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、安装PythonPy...
    99+
    2023-07-01
  • Lamp环境中如何搭建Mysql与PHP环境的搭建
    今天就跟大家聊聊有关  Lamp环境中如何搭建Mysql与PHP环境的搭建,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 Lam...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作