《汇编语言》- 读书笔记 - 实验

news2024/10/7 20:29:06

《汇编语言》- 读书笔记 - 实验

  • 实验 1 查看 CPU 和内存,用机器指令和汇编指令编程
    • 1. 预备知识: Debug 的使用
      • r 修改或显示寄存器的值
      • d 查看内存数据
      • e 编辑内存中指定地址的内容
      • u 显示代码
      • t 单步执行一条指令
      • a 写入汇编指令
      • g 执行到指定位置
      • n 指定文件名
        • L 加载文件
        • W 保存文件
    • 2. 实验任务
      • 1. 使用 Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后 CPU 中相关寄存器中内容的变化。
      • 2. 将下面 3 条指令写入从 2000:0 开始的内存单元中,利用这 3 条指计算 2 的 8次方。
      • 3. 查看内存中的内容
      • 4. 向内存从 B8100H 开始的单元中填写数据
  • 参考资料

实验 1 查看 CPU 和内存,用机器指令和汇编指令编程

1. 预备知识: Debug 的使用

Debug 是 DOS、Windows 都提供的实模式(8086 方式)程序的调试工具。使用它,可以查看 CPU 各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。

参数说明
r修改、显示寄存器内容
d查看内存数据内容
e编辑内存中指定地址的内容
u机器码转汇编代码显示
a写入汇编指令
t单步执行一条指令
p同 t ,但说到中断或call时会进入子程序
g执行到指定位置
q退出 debug
?查看帮助
n指定文件名。用于读写文件。要配合LW使用。
L加载文件
W写入文件

在这里插入图片描述

r 修改或显示寄存器的值

命 令 ———示 例 说明
rr查看所有寄存器
r 寄存器r ax查看ax寄存器。回车后下一行会出现冒号提示符号。不要输入,直接回车。
r 寄存器
:新值
r ax
:9527
查看ax寄存器。回车后下一行会出现冒号提示符号。输入新值,回车完成修改。ax 的值变为 9527

最下面一行还列出了当前CS:IP指向位置的机器码还显示了对应的汇编指令
在这里插入图片描述

d 查看内存数据

d 查看目录地址内容,可指定开始位置,和查看多少位。(为了方便,我先设置了DS,所以只写偏移地址就够了)

命 令 ————————————示例说明
dd不给参数默认查看 ds:0100ds:017f
d 数据段:偏移d 0100指定查看的开始位置。等同于 d ds:0100。(默认现实128字节)
d 数据段:开始偏移 结束偏移指定查看的开始位和结束位置。

在这里插入图片描述
左:每行起始地址。
中:从指定地址开始的 128 个字节内容。(16进制)
右:每个内存单元中数据对应的ASCII码。(无对应ASCII码的显示 .

e 编辑内存中指定地址的内容

命 令 ——————————————示 例 —————————说明
d 数据段:偏移e ds:0修改ds:0 处的数据。回车后会显示原值,输入后,空格可以继续修改下一个字节。
d 数据段:偏移 数据1 数据2 数据ne 0 8 9 A B C D E Fds:0 开始修改8个字节。

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

u 显示代码

  1. 默认中从代码段的开头开始显示。
  2. 也可以指定显示的开始位置。
  3. 也可以指定显示的开始-结束位置。
命 令 ——————————————示 例 —————————说明
uu显示当前CS:IP所指位置的汇编指令。
u 数据段:偏移u 076E:0000显示 ds=076EH, ip=0000H 处的汇编指令。
u 偏移u 0000简写:段地址从DS取, ip = 0000H 处的汇编指令。
u 开始地址 偏移u 076E:0000 0029显示 076E:0000 到 076E:0029 范围的汇编指令。

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

在这里插入图片描述

t 单步执行一条指令

命 令 ——————————————示 例 —————————说明
tt回车后,单步执行一条指令。
t 条数t 3回车后,一下执行 3 条指令。
t =cs:ip 3t =000:0200 3回车后,从 000:0200位置开始,一下执行 3 条指令。

这没啥好说的,t 回车就行了。

  1. debug调试时,可以先用 a 向目标地址写代码。
  2. 修改 CS:IP 指向目标地址。
  3. 按 t 执行。
    在这里插入图片描述

a 写入汇编指令

输入 a 回车后,就进入输入模式。
每向一条输入一条。
左边是debug自动显示的地址,我们在后面输入的指令回车即可。

命 令 ——————————————示 例 —————————说明
aa回车后,从当前 CS:IP指向位置开始写汇编指令。
a 数据段:偏移a 0740:0100回车后,从 0740:0100 处理开始写汇编指令。

在这里插入图片描述

g 执行到指定位置

命 令 ——————————————示 例 —————————说明
gg回车后,执行到结束。
g 数据段:偏移a 1000:0001回车后,执行到 1000:0001。
g 偏移a 0001上面的简写。段地址从 CS 中取。

在这里插入图片描述

n 指定文件名

该命令可用于在启动程序后将文件加载到DEBUG的内存中,但它的主要功能是在操作系统的控制下创建一个新文件,DEBUG可以向该文件写入数据。
注意:DOS下文件名有长度限制。

L 加载文件

通常,当你想“调试”一个文件时,你会用这样的命令启动debug: C:\WINDOWS>debug test.com。但是也可以通过使用’N’命令,然后使用’L’命令(不带参数),从DEBUG本身将文件加载到DEBUG的内存中,像这样:

C:\>debug
-n jerry.com
-l
-u

在这里插入图片描述

W 保存文件

  1. n 路径\文件名:设置文件名 (不写路径,就是当前目录)
  2. a:在 CS:0100 处开始写汇编指令。
  3. r cx:回车然后写入要保存的字节长度。(我们从 0 开始写的,看最后一行地址就行了)

在这里插入图片描述

2. 实验任务

1. 使用 Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后 CPU 中相关寄存器中内容的变化。

提示,可用 E 命令和 A 命令以两种方式将指令写入内存。注意用 T 命令执行时CS:IP 的指向。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

2. 将下面 3 条指令写入从 2000:0 开始的内存单元中,利用这 3 条指计算 2 的 8次方。

mov ax, 1
add ax, ax
jmp 2000:0003

执行完毕结果 100H = 256

3. 查看内存中的内容

PC 机主板上的 ROM 中写有一个生产日期,在内存 FFF00H~FFFFFH 的某几个单元中请找到这个生产日期并试图改变它。
提示,如果读者对实验的结果感到疑惑,请仔细阅读第 1 章中的 1.15 节。
在这里插入图片描述

  1. 先把 DS 改成 FFF0方便下面查找。
  2. s 0 f "/":在 DS:0DS:F 范围内查找 /。(没找到。第二次扩大范围到 FF
  3. 找到两处。用 d 查看目标位置。

FFF0:00F5 处找到一个 01/01/92 也不知道是不是它。
在这里插入图片描述
e f5 12FFF0:00F5 处内容改为 12,查看了一下没效果。因为这段内存是只读的。

地址 C0000~FFFFF 是只读存储器。

4. 向内存从 B8100H 开始的单元中填写数据

如:-e B810:0000 01 01 02 02 03 03 04 04
请读者先填写不同的数据,观察产生的现象;再改变填写的地址,观察产生的现象。
提示,如果读者对实验的结果感到疑惑,请仔细阅读第 1 章中的 1.15 节。
在这里插入图片描述

地址 A0000~BFFFF 为显存地址空间

参考资料

A Guide to DEBUG
A Guide to DEBUG (Page Two) A DEBUG Tutorial

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/543304.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

可视化大屏就是“面子工程”?那是你压根不了解大屏的真正功能

我经常收到这样的私信“企业投入可视化大屏有必要吗?有什么好处呢?”我想说在当前数据时代,企业提高自身竞争力多在这方面下功夫是有必要的。说“没用”的人,都是大屏做的失败的人群,其实“面子”作用确实有&#xff0…

HTTP的协议格式与Fiddler的应用

HTTP的协议格式与Fiddler的应用 🔎HTTP协议是什么🔎HTTP协议的工作过程🔎HTTP的协议格式Fiddler 的应用抓包工具原理协议格式总结 🔎结尾 🔎HTTP协议是什么 HTTP(超文本传输协议)是一种应用非常广泛的应用层协议 对于…

栈和队列OJ题:LeetCode--20.有效的括号

朋友们、伙计们,我们又见面了,今天给大家带来的是LeetCode--20.有效的括号 数 据 结 构 专 栏:数据结构 个 人 主 页 :stackY、 LeetCode 专 栏 :LeetCode刷题训练营 LeetCode--20.有效的括号:htt…

TypeError Object of type int64 is not JSON serializable

TypeError: Object of type int64 is not JSON serializable debug解析,在正常处理数据过程中,把模型预测结果,其他结构化数据转为str保存时,常常用到 json.dumps(),报错内容如标题所示。 原因:json.dump…

Vue图片处理解决方案,一篇就够了

文章目录 一、阅读须知二、解决的问题三、知识储备四、解决方案五、核心代码六、参考资料七、FileReader()对象八、Exif库使用九、Canvas画布十、动态创建标签并添加绑定事件十一、utils方法十二、vue中图片预览十三、工具网站 一、阅读须知 小帅爆肝整理的这篇文章&#xff0c…

华为OD机试真题 Java 实现【异常的打卡记录】【2023Q1 100分】

一、题目描述 考勤记录是分析和考核职工工作时间利用情况的原始依据,也是计算职工工资的原始依据。 为了正确地计算职工工资和监督工资基金使用情况,公司决定对员工的收集打卡记录进行异常排查。 如果出现以下两种情况,则认为打卡异常&…

持续引领 | 通付盾入选数说安全《2023年中国网络安全市场全景图》!

5月16日,数说安全正式发布《2023年中国网络安全市场全景图》(以下简称全景图),这是自2018年开始,数说安全发布的第六版全景图。 其中,通付盾入选自动化攻击防护(Anti-Bot)、移动应用…

【软件工程】面向对象开发全面总结

文章目录 前言一、引言二、面向对象开发的含义三、面向对象开发的原则1. 封装原则2. 继承原则3. 多态原则4. 抽象原则5. 接口隔离原则6. 依赖倒置原则 四、面向对象开发的基本原则1. 单一职责原则2. 开放封闭原则3. 里氏替换原则 五、面向对象开发的方法1. 面向对象分析&#x…

阿里云服务器安装MySQL的具体步骤

1.首先打开阿里云,找到自己对于的公网ip 2.这里我使用MobaXterm的远程连接工具,这个工具还是很不错的耶,就是复制上图的公网ip地址 3.填写完成之后,会让你输入你阿里云服务端登入的密码,也就是你阿里云重置实例的密码&…

深度学习的十条调参经验

目录 法则一:调参、模型和数据 1、调参是锦上添花的事 2、模型 3、数据

富文本编辑器 kindeditor 使用整理

kindeditor富文本编辑器忘记什么时候添加到项目中了,最近做一个功能需要在原有编辑器上自定义添加一些固定内容,于是对着编辑器文档研究了一番,在这里做一个使用方式整理。 1.下载kindeditor 下载地址如下: https://github.com/…

视频平台。。。。 。

1.py 读取图片视频流 from flask import Flask from flask import render_template import os images_path_list[‘D:\imgs\’filename for filename in os.listdir(‘D:\imgs\’) if filename.endswith(‘.jpg’)] print(images_path_list) def return_img_stream(img_local_p…

城市内涝监测预警系统解决方案

一、方案背景 城市化进程的逐渐加快,城市内人口大量增多,交通运输压力增大,城市建设越来越密集,道路铺建面积越来越多,城市化的发展改变了城市区域的地表环境,致使城市雨水不能像农村或是古代雨水那样&…

JVM调优神器,运用 Arthas 释放 Java应用性能的全部潜力

Arthas、jstack、jstat 和 jmap 都是 Java 调优工具,但它们之间有以下区别: Arthas 是一款全新的 Java 诊断与调试工具,不仅可以执行传统的 JVM 监控命令,还提供了许多其他高级特性,如实时监控、动态修改代码、反编译…

什么是容器

什么是容器 一:概念二:容器API类图2.1 Collection2.2 Set2.3 List2.4 Map 三:详细解释3.1 Collection接口3.1.1 Collection用法 3.2 Iterator接口3.3 List接口3.4 Comparable接口 四:如何选择数据结构4.1 衡量标准:读的…

CRM系统本地部署和云部署的优缺点

众所周知,CRM系统部署方式有两种,分别是本地部署和云部署。两者各有优缺点,企业可以按照自身的需求来进行选择。下面说说CRM不同部署方式的优缺点。 CRM本地部署 本地部署是指将CRM系统安装在企业自己的服务器上,并由企业自行维…

网工届封神的五条命令

文章目录 前言一、PING:测试与目标主机的连通性二、IPCONFIG:显示网络适配器的IP地址三、tracert:测试到达目标主机的路径四、arp -a:查询本机高速缓存项目五、route print:查看计算机路由表中的项目 前言 提示:这里可以添加本文要记录的大概内容&#…

【密码产品篇】VPN产品密钥体系结构

【密码产品篇】VPN产品密钥体系结构 VPN产品只有"设备密钥"是"非对称密钥"—【蘇小沐】 IPSec VPN密钥体系 IPSec VPN密钥体系:设备密钥、工作密钥、会话密钥。 IPsec VPN作用设备密钥非对称密钥对,包括签名密钥对和加密密钥对&a…

axios 的 qs库

1.axios官网中提到的qs库 axios官网 2. content-type和 参数 的关系 content-type : application/json,要求的参数格式是JSON {a:c,b:d }content-type :application / x-www-form-urlencoded 要求的参数格式是键值对拼接的方式 :keyvalue&keyvalue ac&bd…

Powerflex ready node

1 网络交换机 需要配置 2 网卡配置 3 磁盘残留信息清楚 4 磁盘顺序如何设置固定 特别是sda这块 #rpm -qa | grep EMC --查看当前安装的EMC Powerflex组件信息 安装客户端注意 需要使用如下 rpm --import RPM-GPG-KEY-ScaleIO #MDM_IP10.10.10.xx,10.10.20.xx rpm -i EMC-…