汇编语言学习:实验二

本文详细介绍了Debug工具的使用,特别是D命令的多种格式及其执行原理。通过D命令,可以查看内存内容,而E、A、U命令则支持通过段寄存器指定内存地址进行读写操作。此外,文章揭示了在执行特定指令如mov ss,ax时,下一条指令mov sp,10也会被立即执行,这与中断机制有关。实验任务要求读者通过Debug实践并理解内存和栈操作的影响。" 113467245,10545466,解决MySQL Broken Pipe异常及分析,"['数据库配置', 'Java异常', '服务器故障', 'Web应用', 'MySQL异常']
摘要由CSDN通过智能技术生成

1.预备知识:Debug的使用

  • 前面实验中,讲了Debug一些主要命令的用法,这里,我们在补充一些关于Debug的知识

  • 关于D命令

  • 上次试验中,我们知道,D命令式查看内存单元的命令,可以用:

  • d 段地址:偏移地址的格式查看指定内存单元的内容,上次实验中,D命令后面的段地址和偏移地址都是直接给出的

  • 现在,我们知道段地址是放在段寄存器中的,在D命令后面直接给出段地址,是Debug提供的一种直观的操作方式。

  • D命令是由Debug执行的,Debug在执行“d 1000:0”这样的命令时,也会先将段地址1000送入段寄存器中

  • Debug是靠什么来执行D命令的?当然是一段程序

  • 谁来执行这段程序?当然是CPU

  • CPU在访问内存单元的时候从哪里得到内存单元的段地址?从段寄存器中得到。

  • 所以,Debug在其处理D命令的程序段中,必须有将段地址送入段寄存器的代码

  • 段寄存器有4个:CS、DS、SS、ES,将段地址送入哪个段寄存器呢?

  • 首先不能是CS,因为CS:IP必须指向Debug处理D命令的代码,也不能是SS,因为SS:SP要指向栈顶。

  • 这样就只剩下DS和ES可以选择,放在哪里呢?我们知道,访问内存的指令如“mov ax,[0]”等一般都默认段地址在ds中,所以Debug在执行如:“d 段地址:偏移地址”这

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值