热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

汇编语言实验2

 实验2 1、         debug的使用之段寄存器的使用-d段寄存器:偏移地址(偏移地址2)查看从【段寄存器:偏移地址】开始到偏移地址2(默认128字节)的内存中的内容示例

 

实验2

 

1、          debug的使用之 段寄存器的使用

-d 段寄存器:偏移地址 (偏移地址2)

查看从【段寄存器:偏移地址】开始到偏移地址2(默认128字节)的内存中的内容

示例:

 

 

 

-e 段寄存器:偏移地址 修改值

修改从【段寄存器:偏移地址】开始的内存中的内容

示例:

 

 

-u 段寄存器:偏移地址

显示从【段寄存器:偏移地址】开始的汇编指令

示例:

 

 

-a 段寄存器:偏移地址

从【段寄存器:偏移地址】开始写入指令

示例:

 

 

2、          实验任务

(1)     将程序段写入内存,填空,单步执行后对比结果,并分析

步骤:

l  使用 e 命令修改 0021:0~0021:f 数据,及修改后查看是否正确写入的操 作

 

 

l  使用 a 命令输入的 p74 指令

 

 

l  每一行指令单步调试,观察结果

 

 

填空结果:

 

分析原因:粗心,pop 指令后,FE+2=100,而不是10

 

(2)     将程序段写入内存,单步执行后思考比对结果

步骤:

l  使用 a命令输入的 7 行指令,使用 e 命令修改 2000:0~2000:f 的值,及修改后查看的部分

 

 

l  单步调试每一行汇编指令的截图。且每一条指令单步调试后,都使用 d 命令查看 2000:0~2000:f 的值

 

 

我的理解:

前三行指令表明:

1.将2000H数值传入寄存器ax中

2.将寄存器ax的内容存入段寄存器ss中

3.将10H数值传入寄存器sp中

即修改栈顶指针的位置,留下一段空间作为栈使用

初始时,栈顶是20110H,栈底是20000H

 

经过我的观察,在涉及到修改栈寄存器ss的指令时,总是会自动执行下一步修改寄存器sp的值,可能这是一种简化的用法,使执行更方便

 

实验2——总结

 

我学到了:

栈机制,栈在内存中的存储,栈的实现:栈顶指针与栈底指针、两个栈的寄存器(段寄存器ss,寄存器sp)、push与pop操作以及操作过程中两个寄存器的内容是怎么变化的,栈顶超界的问题不会被检查出来。

 

我的感受:

栈是一个常用的结构,能方便地逆序存储数据、交换数据,其基本原理也对我们理解指针有重要帮助,好好掌握能使我们受益匪浅

---恢复内容结束---


推荐阅读
  • 本文详细介绍了JavaScript中数组的转换方法、栈方法、队列方法、重排序方法及操作方法,包括toLocaleString()、toString()、valueOf()等基本转换方法,以及push()、pop()、shift()、unshift()等用于模拟栈和队列行为的方法。 ... [详细]
  • Git版本控制基础解析
    本文探讨了Git作为版本控制工具的基本概念及其重要性,不仅限于代码管理,还包括文件的历史记录与版本切换功能。通过对比Git与SVN,进一步阐述了分布式版本控制系统的独特优势。 ... [详细]
  • 页面预渲染适用于主要包含静态内容的页面。对于依赖大量API调用的动态页面,建议采用SSR(服务器端渲染),如Nuxt等框架。更多优化策略可参见:https://github.com/HaoChuan9421/vue-cli3-optimization ... [详细]
  • 本文详细介绍了如何在PyQt5中创建简易对话框,包括对话框的基本结构、布局管理以及源代码实现。通过实例代码,展示了如何设置窗口部件、布局方式及对话框的基本操作。 ... [详细]
  • egg实现登录鉴权(七):权限管理
    权限管理包含三部分:访问页面的权限,操作功能的权限和获取数据权限。页面权限:登录用户所属角色的可访问页面的权限功能权限:登录用户所属角色的可访问页面的操作权限数据权限:登录用户所属 ... [详细]
  • 题目概述:Sereja 拥有一个由 n 个整数组成的数组 a1, a2, ..., an。他计划执行 m 项操作,这些操作包括更新数组中的特定元素、增加数组中所有元素的值,以及查询数组中的特定元素。 ... [详细]
  • 本文提供了一个关于AC自动机(Aho-Corasick Algorithm)的详细解析与实现方法,特别针对P3796题目进行了深入探讨。文章不仅涵盖了AC自动机的基本概念,还重点讲解了如何通过构建失败指针(fail pointer)来提高字符串匹配效率。 ... [详细]
  • 使用OpenGL实现三维空间中任意两点间圆柱体管道的绘制
    本文介绍了如何利用OpenGL在三维空间中的任意两个点之间绘制具有指定半径的圆柱体管道。鉴于OpenGL较为底层,许多功能需自行实现,文中提供了详细的代码示例及解析。 ... [详细]
  • LeetCode 102 - 二叉树层次遍历详解
    本文详细解析了LeetCode第102题——二叉树的层次遍历问题,提供了C++语言的实现代码,并对算法的核心思想和具体步骤进行了深入讲解。 ... [详细]
  • 本文探讨了互联网服务提供商(ISP)如何可能篡改或插入用户请求的数据流,并提供了有效的技术手段来防止此类劫持行为,确保网络环境的安全与纯净。 ... [详细]
  • 本文详细探讨了HihoCoder平台上的1398号问题——最大权闭合子图的求解方法。通过具体实例,深入分析了最大权闭合子图的概念及其算法实现。 ... [详细]
  • 贡献转移在计算每个元素的作用的时候,我们可以通过反向枚举作用效果,添加到作用元素的身上,这种方法叫做贡献转移。更正式的说, ... [详细]
  • 深入解析 C++ 中的 String 和 Vector
    本文详细介绍了 C++ 编程语言中 String 和 Vector 的使用方法及特性,旨在帮助开发者更好地理解和应用这两个重要的容器。 ... [详细]
  • 本文详细介绍了在Luat OS中如何实现C与Lua的混合编程,包括在C环境中运行Lua脚本、封装可被Lua调用的C语言库,以及C与Lua之间的数据交互方法。 ... [详细]
  • 本文探讨了异步编程的发展历程,从最初的AJAX异步回调到现代的Promise、Generator+Co以及Async/Await等技术。文章详细分析了Promise的工作原理及其源码实现,帮助开发者更好地理解和使用这一重要工具。 ... [详细]
author-avatar
嘲笑讽刺伤
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有