当前位置: 首页 > news >正文

张家口市建设局网站/医院营销策略的具体方法

张家口市建设局网站,医院营销策略的具体方法,最专业的网站建设公司,wordpress 刷新文章目录 参考环境上古神器 DebugBug 与 DebuggingDebugDebug 应用程序淘汰原因使用限制 DOSBox学习 Debug 的必要性DOSBox-X Debug 的基本使用命令 R查看寄存器的状态修改寄存器的内容 命令 D显示内存中的数据指定起始内存空间地址指定内存空间的范围 命令 A使用命令语法错误查…

文章目录

  • 参考
  • 环境
  • 上古神器 Debug
      • Bug 与 Debugging
      • Debug
          • Debug 应用程序
          • 淘汰原因
          • 使用限制
      • DOSBox
          • 学习 Debug 的必要性
          • DOSBox-X
  • Debug 的基本使用
      • 命令 R
          • 查看寄存器的状态
          • 修改寄存器的内容
      • 命令 D
          • 显示内存中的数据
          • 指定起始内存空间地址
          • 指定内存空间的范围
      • 命令 A
          • 使用命令
          • 语法错误
          • 查看写入内存的机器指令
      • 命令 U
          • 反汇编目标内存空间中存储的机器指令
      • 命令 T
          • 执行目标内存空间中的机器指令
      • 命令 E
          • 对内存中的内容进行逐字节式的修改
          • 一次性实现对多字节内存空间的修改

参考

项目描述
搜索引擎BingGoogle
AI 大模型文心一言通义千问讯飞星火认知大模型ChatGPT
PHP 手册PHP Manual

环境

上古神器 Debug

Bug 与 Debugging

1947 年的某一天,计算机科学家 Grace HopperHarvard Mark II 计算机的维护工作中发现了一个发现了一只 夹在继电器中的飞蛾。这只昆虫导致了计算机的故障,后来人们将这种问题称为 bug

Bug 这个术语被广泛接收,用于描述计算机程序中的 错误。当程序出现意外行为时,程序员通常会说他们需要对程序进行 Debugging,以查找和修复问题。

Debug

Debug 应用程序

Debug 是一个在 MS-DOS 和一些 Windows 系统中提供的命令行工具,用于 诊断程序在运行时产生的错误、异常或意外行为,并据此采取措施来解决问题,以确保程序能够按照预期的方式运行。在早期的 MS-DOSWindows 系统中,Debug 是一个非常有用的工具,尤其是对于 底层(系统级编程) 程序员来说。

淘汰原因

随着时间的推移和技术的发展,debug 的实用性逐渐降低,到目前已经没有什么人在使用了。具体原因整理如下:

项目描述
技术进步现代计算机和现代操作系统功能更加丰富和复杂,使得 Debug 这样的工具变得不那么适用。现代的调试工具,如 Visual StudioGDB 和其他 IDE 中的调试工具,提供了更为高级和强大的功能
64 位架构现代计算机普遍采用 6432 位架构,Debug 在这类计算机中运行需要一个 16 位架构的模拟环境
安全性考虑Debug 允许 直接访问和修改系统的底层硬件(内存,CPU 等),这可能导致安全隐患。
使用限制

Windows 7 64位版本 开始,Windows 系统中就不再包含 debug 应用程序了。

Debug 是一个 16 位应用程序。在 Windows 7 及此前的 32 位 操作系统中能够运行Debug 应用程序,是因为这些系统内置了一个叫做 Windows on Windows(WoW)16 位子系统 来支持 16位 的应用程序。但在 64 位Windows 中,这个16位子系统被移除,因此 Debug 不能在 64 位 Windows上运行。

DOSBox

学习 Debug 的必要性

学习 16 位 汇编的过程中,Debug 仍然是必不可少的。其理由整理如下:

项目描述
简单直观Debug提供了一个简单的环境,允许用户直接输入、执行、调试汇编代码。对于初学者来说,这可以 直观地看到指令是如何工作的,不需要复杂的设置或其他工具。
实时交互使用debug,你可以 实时地查看和修改 CPU 寄存器、内存和其他系统资源中的数据,这对于理解汇编语言和计算机的工作原理非常有帮助。
传统和历史在很多早期的计算机科学和工程课程中,debug是教学 16 位汇编的标准工具。虽然现在有更先进的工具和环境,但 debug 仍然被用作教育工具。。
DOSBox-X

DOSBox-X 是一个 开源的 x86 模拟器,主要用于运行 早期操作系统 MS-DOS 中的应用程序。与原始的 DOSBox 相比,DOSBox-X 提供了 更多的特性并对原有缺陷进行了改进,使其 更加适合用于模拟早期的 PC 环境
如果你希望在不支持 16 位应用程序(如 Debug)的操作系统中使用它们,那么你需要一个模拟器,而 DOSBox-X 就是一个很好的选择。

DOSBox-X 在其官网提供了不同的安装包,如果您需要使用到 DOSBox-X,请前往下载安装。

Debug 的基本使用

命令 R

在 Debug 中,R 命令即 Register 的简写,该命令用于 查看或修改寄存器中的内容

注:

在 Debug 中,命令与寄存器名称等均是不区分大小写的。就命令 R 而言,在 Debug 中使用 Rr 是没有区别的。

查看寄存器的状态

Debug 命令行 中,当你单纯地输入 Rr 并敲击回车键时,DEBUG 将显示所有 CPU 寄存器的当前值。具体而言,您将看到如下类似界面:

AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0DC0  ES=0DC0  SS=0DC0  CS=0DC0  IP=0100   NV UP EI PL NZ NA PO NC
0DC0:0100 0000          ADD     [BX+SI],AL                         DS:0000=CD

其中

从左往右,从上到下,我们依次对命令 R 的输出内容进行讲解。

  1. AX ~ BX 是一系列寄存器的名称即其保存的数据。
  2. NV ~ NC 则是标志寄存器的 一部分(16 位寄存器,但仅使用了其中的部分二进制位),用于 存储与程序执行相关的信息
  3. 0DC0:0100CS:IP,用于指示 CPU 当前要读取并执行的指令
  4. 0000CS:IP 指向的内存空间 所存储数据的十六进制表示
  5. ADD [BX+SI],ALCS:IP 指向的内存空间中的二进制数据的汇编语言表示。
  6. DS:0000=CD

????

修改寄存器的内容

当您在 Debug 命令行中输入命令 R 的同时 输入目标寄存器的名称 即可修改该寄存器所保存的值。对此,请参考如下界面(尝试修改通用寄存器中的数据):

在输入修改寄存器的名称并敲击回车键后,Debug 将 输出被修改寄存器的当前值 并给出输入提示,要求您 输入被修改寄存器的结果值

我们尝试将 AX 寄存器中的当前值修改为 十六进制数 002F,再通过 R 命令查看修改结果。

命令 D

在 Debug 中,D 命令即 Dump 的简写,该命令用于 查看内存中的数据

显示内存中的数据

当你在 Debug 中直接使用命令 D 时,该命令将显示内存中以 CS:IP 所为首的 128 字节内存空间。对此,请参考如下界面:

命令 D 的输出内容共由三部分内容组成,这三部分(从左至右)分别是地址指示十六进制内容ASCII 表示

  1. 十六进制内容
    十六进制内容是内存空间中 二进制数据的十六进制表示,每两个十六进制数值代表一个字节。这些十六进制数值以 8 字节组块 显示,每两个组块之间用一个 短横线 - 分隔。
  2. ASCII 表示
    ASCII 表示即内存中的 每一个字节解码为 ASCII 字符的结果
  3. 地址指示
    每一行十六进制内容与 ASCII 表示都与连续的 16 字节内存空间中的内容相对应,而地址指示则用于表示这 连续的 16 字节内存空间的起始字节所处的位置。地址指示由 段地址:偏移地址 三部分组成。
指定起始内存空间地址

在使用 D 命令的过程中,您还可以通过如下格式来指定起始内存空间的地址,Debug 将 显示以起始内存空间为首的 128 字节内存空间

D 起始内存空间的段地址:起始内存空间的偏移地址

举个栗子

当然,你还可以 仅指定起始内存空间的偏移地址(在任何需要内存空间地址的地方,段地址通常都是可以直接省略的✨),起始内存空间的段地址将自动从 DS 寄存器中获取。对此,请参考如下示例:

指定内存空间的范围

在使用 D 命令的过程中,在指定被查看内存空间的起始地址外,您 还可以指定被查看内存空间的结束地址。指定被查看内存空间范围的命令格式为:

D 起始内存空间的段地址:起始内存空间的偏移地址 结束内存空间的偏移地址

举个栗子

起始内存空间的段地址可以被省略,段地址被省略后,Debug 将自动使用 DS 寄存器中存储的段地址。对此,请参考如下示例:

命令 A

在 Debug 中,A 命令即 Assemble 的简写,该命令用于 以汇编语言的形式在内存中写入机器指令

使用命令

使用命令 A 时,你可以通过 给出地址来指示需要写入命令的起始内存空间。在不指定地址的情况下,该命令默认在 CS:IP 所指向的内存空间中开始执行输入。

语法错误

在使用命令 A 以汇编语言的形式在内存中写入机器指令时,若汇编语言存在语法错误,则写入操作将失败且 Debug 将提示(输入地址没有发生变化)你重新进行输入。对此,请参考如下界面:

查看写入内存的机器指令

当你向内存输入命令完毕后,可以在 A 命令的输入提示界面下 直接敲击回车键结束输入
在结束输入后,尝试通过命令 D 查看内存空间中输入的内容。对此,请参考如下界面:

命令 U

在 Debug 中,U 命令即 Unassemble,该命令用于 将指定内存空间存储的机器指令翻译为汇编代码。使用该命令时,若未指定内存空间地址,则使用 CS:IP 所存储的地址。

反汇编目标内存空间中存储的机器指令

使用 D 仅能够查看存储在内存空间中的机器指令,有了 U 命令我们就能验证我们刚刚是否成功将汇编指令输入内存中了🧐。

命令 T

在 Debug 中,T 命令即 Trace 的简写,该命令将 允许您逐步执行程序的指令,以便查看程序在每一步的执行情况,从而提高发现问题的可能,有助于实现问题的解决

执行目标内存空间中的机器指令

T 命令允许您指定需要被执行指令所处的内存地址,默认情况下,T 命令将使用由 CS:IP 提供的地址。

在此前我们通过 A 命令已经向内存中输入了如下指令:

MOV AX, 100
ADD AX, BX

其中:

MOV AX, 100 表示将寄存器 AX 中的值设置为 100,而 ADD AX, BX 则表示将 AX + BX 的结果设置为 AX 的值。

我们尝试通过 T 命令来观察指令的执行。对此,请参考如下界面:

MOV AX, 100

ADD AX, BX

命令 E

在 Debug 中,命令 EEdit,表示编辑操作。当你在 Debug 命令行中输入并执行命令 E 时,该命令通常会要求你指定一个 完整的内存地址或偏移地址,在指定 需要修改值的内存空间的首地址 后即可修改内存中的内容。

对内存中的内容进行逐字节式的修改

在 Debug 命令行中输入 E需要修改值的内存空间的首地址 后,Debug 将给出 被修改内存空间的现有值 并提示您输入十六进制值以对其进行修改。在您修改完当前字节大小的内存空间中的内容后,输入空格键进行下一字节空间值的修改,要 结束 对内存空间逐字节式的修改仅需要 敲击回车键 即可。对此,请参考如下示例:

注:

在敲击回车键结束对内存空间进行逐字节式的修改时,存在两种可能的情况:

  1. 已输入修改值
    若敲击回车键前您已经输入修改值,则敲击回车键后 该值将输入对应的内存空间中,随后修改过程立即终止。
  2. 无修改值
    若敲击回车键前您尚未输入任何内容,则敲击回车键后对应内存空间中的内容并不会变为 0000,修改过程将立即终止。
一次性实现对多字节内存空间的修改

在 Debug 命令行中,输入命令 E需要修改值的内存空间的首地址 后,在其后您可以 添加多个对内存空间进行修改的结果值,多个结果值之间 以空格分隔。在输入完毕后,敲击回车键执行对内存空间的修改并立即终止修改过程。对此,请参考如下界面:

相关文章:

上古神器:十六位应用程序 Debug 的基本使用

文章目录 参考环境上古神器 DebugBug 与 DebuggingDebugDebug 应用程序淘汰原因使用限制 DOSBox学习 Debug 的必要性DOSBox-X Debug 的基本使用命令 R查看寄存器的状态修改寄存器的内容 命令 D显示内存中的数据指定起始内存空间地址指定内存空间的范围 命令 A使用命令语法错误查…...

[学习笔记]ARXML - Data Format

参考AUTOSAR文档: https://www.autosar.org/fileadmin/standards/R22-11/FO/AUTOSAR_TPS_ARXMLSerializationRules.pdfhttps://www.autosar.org/fileadmin/standards/R22-11/FO/AUTOSAR_TPS_ARXMLSerializationRules.pdf 编码 arxml只允许使用UTF-8编码&#xff…...

Go_原子操作和锁

原子操作和锁 本文先探究并发问题,再探究锁和原子操作解决问题的方式,最后进行对比。 并发问题 首先,我们看一下程序 num该程序表面看上去一步就可以运行完成,但是实际上,在计算机中是分三步运行的,如下…...

初识Java 12-1 流

目录 Java 8对流的支持 流的创建 随机数流 int类型的区间范围 generate() iterate() 流生成器 Arrays 正则表达式 本笔记参考自: 《On Java 中文版》 ||| 流的概念:流是一个与任何特定的存储机制都没有关系的元素序列。 流与对象的成批处理有关…...

【软件工程_UML—StartUML作图工具】startUML怎么画interface接口

StartUML作图工具怎么画interface接口 初试为圆形 ,点击该接口在右下角的设置中->Format->Stereotype Display->Label,即可切换到想要的样式 其他方式 在class diagram下,左侧有interface图标,先鼠标左键选择&#xff0…...

单片机之瑞萨RL78定时计数器

单片机之瑞萨RL78定时计数器 使用瑞萨RL78定时计数器的简单例程。这个例程使用定时器0来产生一个以秒为单位的定时器中断,并在中断服务程序中增加一个全局变量以跟踪中断的发生。 首先,我们需要了解RL78的定时器0是一个16位的定时器,它的时钟…...

手机号码格式校验:@Phone(自定义参数校验注解)

需求 新增接口 和 修改接口 中,手机号码的格式校验是普遍需要的。 在每个手机号码字段上添加正则表达式校验注解来实现校验,重复书写,容易出错;在不同的手机号码字段上,可能使用了不同的校验规则,无法有效…...

ORACLE Redo Log Buffer 重做日志缓冲区机制的设计

最近和朋友包括一些国产数据库的研发人员交流,很多程序员认为 Oracle 已经过时,开源数据库或者他们研发的国产数据库才代表数据库发展的未来。甚至在很多交流会议上拿出自家产品的某一个功能点和 Oracle 对比就觉得已经遥遥领先。 实际上数据库系统的发展…...

PWN Test_your_nc Write UP

目录 PWN 00 解题过程 总结归纳 PWN 01 解题过程 总结归纳 PWN 02 解题过程 总结归纳 PWN 03 解题过程 总结归纳 PWN 04 解题过程 总结归纳 CTF PWN 开始! 冲就完了 PWN 00 解题过程 ssh远程链连接 ssh ctfshowpwn.challenge.ctf.show -p28151 输…...

Centos7配置firewalld防火墙规则

这里写自定义目录标题 欢迎使用Markdown编辑器一、简单介绍二、特点和功能2.1、区域(Zone)2.2、运行时和永久配置2.3、服务和端口2.4、动态更新2.5、连接跟踪2.6、D-Bus接口 三、设置规则3.1、启动防火墙服务3.2、新建防火墙规则的服务,添加端…...

【新版】系统架构设计师 - 未来信息综合技术

个人总结,仅供参考,欢迎加好友一起讨论 文章目录 架构 - 未来信息综合技术考点摘要信息物理系统CPS的体系架构CPS 的技术体系CPS应用场景 人工智能分类关键技术机器学习 机器人发展分类机器人4.0 边缘计算概念与特点边云协同安全应用场景 数字孪生关键技…...

CAD二次开发LineSegment2d

在C#的CAD二次开发中,LineSegment2d 是AutoCAD的.NET API中的一个类,用于表示二维空间中的线段。它包含了起点和终点的坐标信息,并提供了一些方法用于进行线段之间的计算和判断。 LineSegment2d 类具有以下常用属性和方法: Star…...

Linux shell编程学习笔记5:变量命名规则、变量类型、使用变量时要注意的事项

跟其他的高级开发语言一样,Linux Shell编程中使用的数据也需要保存在变量中。 Shell使用变量来控制其行为,并且可以通过更改变量值来更改Shell和其他程序的行为。 我们先来了解一下变量命令的规则、变量类型和使用变量时要注意的事项。 一、变量命名规…...

如何把word的页眉页脚改为图片

前言 亲戚A: 听说你是计算机专业? 沐风晓月: 是啊 亲戚A: 那正好,来看看我这个页眉怎么改成图片 沐风晓月: 一万匹马奔腾而过 亲戚B: 听说你是英语专业? 沐风晓月: 是啊…...

spring6-实现简易版IOC容器

手写简易版IOC容器 1、回顾Java反射2、实现Spring的IoC 我们都知道,Spring框架的IOC是基于Java反射机制实现的,下面我们先回顾一下java反射。 1、回顾Java反射 Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所…...

Feign接口调用GET请求@RequestParam传参丢失

文章目录 问题现象排查解决GET加注解解决使用POST方式解决 时间戳传参失败 问题现象 项目使用的是Spring Cloud微服务,服务间调用使用的是Feign在一次服务调用时,发现GET传参丢失,没有传递过去任何参数加了RequestParam注解,发现…...

LeetCode每日一题 | 309.买卖股票的最佳时机含冷冻期

题目链接&#xff1a; 309. 买卖股票的最佳时机含冷冻期 - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; 算法图解&#xff1a; 解题代码&#xff1a; class Solution { public:int maxProfit(vector<int>& prices) {int n prices.size();vector&…...

HTML的学习 Day02(列表、表格、表单)

文章目录 一、列表列表主要分为以下三种类型&#xff1a;1. 无序列表&#xff08;Unordered List&#xff09;&#xff1a;2. 有序列表&#xff08;Ordered List&#xff09;&#xff1a;将有序列表的数字改为字母或自定义内容li.../li 列表项标签中value属性&#xff0c;制定列…...

Android shape记录

之前一直觉得dataPath很好用&#xff0c;可以画各种矢量图。今天发现用shape画图也不错&#xff0c;记录一下自己用shape画的图。 一般使用shape就是定义形状、stroke边、solid内部、corners圆角等&#xff0c;代码 <?xml version "1.0" encoding "utf-8&q…...

WSL2和ubuntu的安装过程

目录 1.WSL2的安装 2.Ubuntu的安装 3.安装完成后的打开方式 1.WSL2的安装 按下WINX键&#xff0c;选择Windows PowerShell (管理员) 1.1执行以下命令&#xff0c;该命令的作用是&#xff1a;启用适用于 Linux 的 Windows 子系统 dism.exe /online /enable-feature /featur…...

力扣第150题 逆波兰表达式求值 stack c++

题目 150. 逆波兰表达式求值 中等 给你一个字符串数组 tokens &#xff0c;表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意&#xff1a; 有效的算符为 、-、* 和 / 。每个操作数&#xff08;运算对象&#xff09;都…...

三、飞行和射击

目录 1.飞行的实现 2.限制玩家视角 3.射击的实现 4.附录 1.飞行的实现 &#xff08;1&#xff09;在Player预制体上挂载Configuration Joint组件&#xff0c;并修改其Y Drive属性 &#xff08;2&#xff09; 修改PlayerInput.cs和PlayerController.cs以实现飞行 PlayerIn…...

GitHub与GitHubDesktop的使用

1、介绍 见天来学习使用GitHub与GitHubDesktop。 学习前先来介绍一下什么是GitHub。 GitHub是一个基于Git的代码托管平台和开发者社区。它提供了一个Web界面&#xff0c;让开发者能够轻松地托管、共享和管理他们的软件项目。 在GitHub上&#xff0c;开发者可以创建自己的代…...

AIGC 微调的方法

AIGC 的微调方法可以分为以下步骤&#xff1a; 数据准备&#xff1a;收集尽可能多的数据&#xff0c;包括输入和输出数据&#xff0c;并将其划分为训练集、验证集和测试集。 模型选择&#xff1a;选择合适的模型结构&#xff0c;例如多层感知器&#xff08;MLP&#xff09;、卷…...

gcc编译webrtc x64

gcc使用Ubuntu系统已经有的gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04) 1、下载离线版webrtc&#xff08;也可以翻墙下载webrtc&#xff09; 百度云链接: 链接: https://pan.baidu.com/s/1oHVz9bxXlW3Q6uO996c5XA 提取码: ojbs 2、下载gn https://github.com/timnieder…...

uni-app 实现凸起的 tabbar 底部导航栏

效果图 在 pages.json 中设置隐藏自带的 tabbar 导航栏 "custom": true, // 开启自定义tabBar(不填每次原来的tabbar在重新加载时都回闪现) 新建一个 custom-tabbar.vue 自定义组件页面 custom-tabbar.vue <!-- 自定义底部导航栏 --> <template><v…...

中国1km土壤特征数据集(2010年)

简介&#xff1a; 中国1km土壤特征数据集&#xff08;2010&#xff09;是基于第二次全国土壤调查的中国1:1000000比例尺土壤图和8595个土壤剖面图&#xff0c;以及美国农业部&#xff08;USDA&#xff09;中国区域土地和气候模拟标准&#xff0c;开发了一个多层土壤粒度分布数…...

计算机网络笔记 第二章 物理层

2.1 物理层概述 物理层要实现的功能 物理层接口特性 机械特性 形状和尺寸引脚数目和排列固定和锁定装置 电气特性 信号电压的范围阻抗匹配的情况传输速率距离限制 功能特性 -规定接口电缆的各条信号线的作用 过程特性 规定在信号线上传输比特流的一组操作过程&#xff0…...

使用CreateProcess崩溃:处未处理的异常: 0xC0000005: 写入位置 0x00415652 时发生访问冲突

问题代码 if (!CreateProcess(NULL,L"pela.exe",NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi)){return 0;}如果CreateProcess的第二个参数字符串是常量或者是储存在堆中的就会被写保护&#xff0c;崩溃。如果字符串定义到栈或者全局变量就不存在此问题了。 正确的…...

Java 华为真题-出租车计费

需求 程序员小明打了一辆出租车去上班。出于职业敏感&#xff0c;他注意到这辆出租车的计费表有点问题&#xff0c;总是偏大。 出租车司机解释说他不喜欢数字4&#xff0c;所以改装了计费表&#xff0c;任何数字位置遇到数字4就直接跳过&#xff0c;其余功能都正常。 比如&…...