1.2 debug的六种指令的使用,四个通用寄存器

2024-03-01 03:04

本文主要是介绍1.2 debug的六种指令的使用,四个通用寄存器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

汇编语言

首先进入环境

mount c d:masm		//把c挂载在d盘中的masm当中
c:		//进入c,进入到编译环境
dir		//查看文件,可有可无
  • Debug是DOS、Windows都提供的实模式(8086 方式)程序的调试工具。使用它可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。

我们用到的Debug功能:
首先输入debug进入debug模式

1. 用Debug的R命令查看、改变CPU寄存器的内容

在这里插入图片描述
这里的数都是16进制表示,相当于右边的值赋值给左边的变量

修改一个寄存器中的值

可以用r命令后加寄存器名来进行
如下:
在这里插入图片描述
这样子ax的值就变成了5678.

2. 用Debug的D命令查看内存中的内容

  • 如果我们想知道内存10000H 处的内容,可以用d 段地址:偏移地址的格式来查看
    如下:
    在这里插入图片描述

  • 如果一直输入d,会发现地址偏移,在汇编中,用两个数来代表一个内存
    在这里插入图片描述

  • 在偏移地址后输入值,可以限制值的展示
    在这里插入图片描述

  • 用d 1000:9查看1000:9处的内容
    在这里插入图片描述
    Debug从1000:9 开始显示,一直到 1000:88 ,一共是128个字节。第一行中的1000:0到1000:8 单元中的内容不显示。

3. 用Debug的E命令改写内存中的内容

e 段内地址:偏移地址 值 值……
在这里插入图片描述

  • 可以输入e 段内地址:偏移地址回车,可以一个个修改值,空格显示下一个修改的值
    在这里插入图片描述

4. 用Debug的U命令将内存中的机器指令翻译成汇编指令

在这里插入图片描述
左边是机器码,右边是翻译过后的代码,代码也是有内存的,用机器码存放到内存当中,u指令就是来翻译这些机器码

5. 用Debug的T命令执行一条机器指令

6. 用Debug的A命令以汇编指令的格式在内存中写入一条机器指令

在这里插入图片描述

  1. 先输入r,查看寄存器的内容,其中cs和ip是寄存器
  2. 写入指令
a 073f:0108
add bx,ax		//将bx与ax的值相加再赋值给bx
mov cx,ax		//将ax的值拷贝一份给cxt		//一个t命令执行一条机器指令t		//一个t命令执行一条机器指令

在这里插入图片描述

7. 记忆方法(true ad)

R:register
D:display
E:edit
U:upgrade ,向上升级以便于翻译成代码
T:execute
A:add

这篇关于1.2 debug的六种指令的使用,四个通用寄存器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/761004

相关文章

如何使用CSS3实现波浪式图片墙

《如何使用CSS3实现波浪式图片墙》:本文主要介绍了如何使用CSS3的transform属性和动画技巧实现波浪式图片墙,通过设置图片的垂直偏移量,并使用动画使其周期性地改变位置,可以创建出动态且具有波浪效果的图片墙,同时,还强调了响应式设计的重要性,以确保图片墙在不同设备上都能良好显示,详细内容请阅读本文,希望能对你有所帮助...

Rust中的注释使用解读

《Rust中的注释使用解读》本文介绍了Rust中的行注释、块注释和文档注释的使用方法,通过示例展示了如何在实际代码中应用这些注释,以提高代码的可读性和可维护性... 目录Rust 中的注释使用指南1. 行注释示例:行注释2. 块注释示例:块注释3. 文档注释示例:文档注释4. 综合示例总结Rust 中的注释

Linux使用cut进行文本提取的操作方法

《Linux使用cut进行文本提取的操作方法》Linux中的cut命令是一个命令行实用程序,用于从文件或标准输入中提取文本行的部分,本文给大家介绍了Linux使用cut进行文本提取的操作方法,文中有详... 目录简介基础语法常用选项范围选择示例用法-f:字段选择-d:分隔符-c:字符选择-b:字节选择--c

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安

springboot的调度服务与异步服务使用详解

《springboot的调度服务与异步服务使用详解》本文主要介绍了Java的ScheduledExecutorService接口和SpringBoot中如何使用调度线程池,包括核心参数、创建方式、自定... 目录1.调度服务1.1.JDK之ScheduledExecutorService1.2.spring

Java使用Tesseract-OCR实战教程

《Java使用Tesseract-OCR实战教程》本文介绍了如何在Java中使用Tesseract-OCR进行文本提取,包括Tesseract-OCR的安装、中文训练库的配置、依赖库的引入以及具体的代... 目录Java使用Tesseract-OCRTesseract-OCR安装配置中文训练库引入依赖代码实

Python使用Pandas对比两列数据取最大值的五种方法

《Python使用Pandas对比两列数据取最大值的五种方法》本文主要介绍使用Pandas对比两列数据取最大值的五种方法,包括使用max方法、apply方法结合lambda函数、函数、clip方法、w... 目录引言一、使用max方法二、使用apply方法结合lambda函数三、使用np.maximum函数

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满