环境安装

使用vs code插件模拟dos下的环境:
(1)安装如下插件

(2) 新建一个xxx.asm文件

你可以直接在这个界面打开doxbox,然后在内部使用debug(当然你也可以直接装一个doxbox而不是通过vscode).

关于插件的更多说明可参阅:VSCode插件说明

DEBUG参数说明
调试程序DEBUG.EXE

寄存器标志位小实验

Debug调试工具中标志位说明对照表

实验1 查看寄存器CF标志

msdox一个小实验,去查看标志寄存器的CF(全名carry flag)状态。CF用于标记是否进位.在Debug工具下NC表示当前没有进位,YC表示进位

上图右上角NC便是此标志位的状态.我们模拟一个小实验让其NC变为YC.
我们8080albl寄存器是单字节大小进行如下运行会产生进位:aa(H)+7c(H)=126

实验2 查看寄存器ZF标志

ZFzero flag)用于标记两数进行运算结果为0,比如84H+7CH=(1)00H。
Debug工具NZ标识不为0ZR表示运算结果为0

实验3 查看寄存器OF标志

DEBUG工具下NV(not overflow)标识未溢出,OV标识溢出。
看两个数字(在一字节情况下):

7c:0111 1100
3a:0011 1010

上面两个数字在补码表示下都是正数,我们如果进行相加的话 7c+3a=B6.
B6在补码表示下变成了一个负数,两个正数相加结果变成了负数这就是我们常说的溢出.
B6: 1011 0110 (第一个标志位变为1)

实验4 查看寄存器SF标志

最高位是1的话SF为1,否则为0
举个例子:
3A(H)+7C(H)=B6(H) 结果:SF =1
11(h) +11(H)=22(H) 结果:SF =0

debug下最高位为时SF标识为PL(plus) ,为负数NG(negative)

实验5 查看寄存器PF标志

PF(parity flag)用于标记第八位中1的个数是偶数的时候PF为1。

为1时debug显示PE(parity even)否则PO(parity odd)
比如0x1和0x2相加时等于3(0000 0011),此时低八位有两个11所以会debug会显示PE

实验6 查看寄存器AF标志

低四位计算是否存在进位或者借位。

存在进位或者借位debug显示AC( Auxiliary Carry)否则为NA(not Auxiliary )
比如:F+1=10

数据段

8080只有16位数据线,但是支持最大1M的内存其内部实现通过将内存分为一个个段,通过段+段偏移进行实现.


段偏移可以直接使用立即数或者存储在寄存器中,而段基址一般我们一般存储在特定的寄存器,这类寄存器我们称为段址寄存器。

其中比较重要的两个段寄存器分别为:
CS:存储代码段,与IP寄存器配合使用。一般用于指定当前运行的代码行。
SS: 栈段,与SP寄存器配合使用,也就是我们常说的栈区,一般用于方法栈的实现。
DS: 数据段

8086段寄存器
百度百科8086段寄存器

当进行类似如下汇编指令mov [寄存器],操作数二.[寄存器]会指向特定段寄存器作为段基址加上此寄存器的数值,具体映射关系可以Google。
举个例子
mov [dx],操作数二,此时[dx]指向的内存为ds作为段基址加上dx作为偏移
mov [bp],操作数二,[bp]指向的内存为ss作为段基址加上dx作为偏移

当然你可以使用另一种语法强制指定某个寄存器作为段基址
mov ds:[bp],操作数二

实验1
DS段操作:
当我们进行mov [xxx],ax会将ax数值放入ds段地址加上xxxx偏移位置上

实验2
SS段操作:
BP寄存器比较特殊他一般与SSSP一起使用。一般来说mov [BP],ax ,[BP]会指向ss段数据加上BP的数值的偏移

实验3

指定段基址
mov ds:[bp],操作数二


对于mac用户目录地址为:
/Users/lizhifm/Library/Application Support/Code/User/globalStorage/xsro.masm-tasm/workspace

windows:
C:\Users\fmy\AppData\Roaming\Code\User\globalStorage\xsro.masm-tasm\workspace

MsDos下的Debug调试器与8080汇编小实验相关推荐

  1. openstack windows下远程debug调试(komodo)

    2019独角兽企业重金招聘Python工程师标准>>> 感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正! 如有转载,请保留源作者博客信息. Be ...

  2. 在W10系统下进行Debug调试功能

    文章目录 前言 一.DOSBox.Debug的下载与安装 1.下载并安装DOSBox 2.下载Debug 3.配置DOSBox文件 4.运行DOSBox 二.汇编学习中常用到的Debug功能 前言 本 ...

  3. Visual Studio在Release模式下开启debug调试,编译器提示变量已被优化掉,因而不可用

    系列文章目录 文章目录 系列文章目录 前言 一.解决办法 1.修改工程属性 参考 前言 我们在编写代码的时候,如果用到别人的库,而别人只提供了release版本,所有我们也只能生成release版本的 ...

  4. C语言: ---windows下VS Debug调试

    首先我先列出来常用的一些命令或者键盘控制: F5 开始调试,执行到断点 Shift + F5 停止调试 F9 在光标所在行添加断点 Shift + F9 QuickWatch Shift Ctrl F ...

  5. Linux下打开Android调试器DDMS的方法

    第一步:找到monitor可执行文件. 切换到目录路径:/home/skart/ide/android/sdk/tools/lib/monitor-x86_64,可以找到monitor可执行文件. 第 ...

  6. 天热,周末宅家,写了个BUG满天飞的Debug调试器

    如题,放出截图MARK一下:

  7. pdb—Python调试器

    pdb-Python调试器 在python 3.8文档 Python 常用指引中已经详细介绍了pdb模块,此处为引用官方文档 该模块pdb为Python程序定义了一个交互式源代码调试器.它支持在源代码 ...

  8. Python调试器-Pdb的简介及调试命令

    Pdb简介 pdb为Python程序定义了一个交互式源代码调试器.它支持在源代码行级别设置(条件)断点和单步执行,检查堆栈框架,源代码列表以及在任何堆栈框架的上下文中评估任意Python代码.它还支持 ...

  9. python:pdb --- Python 的调试器

    python:pdb --- Python 的调试器 pdb 模块定义了一个交互式源代码调试器,用于 Python 程序.它支持在源码行间设置(有条件的)断点和单步执行,检视堆栈帧,列出源码列表,以及 ...

  10. 自制基于jlink的无线调试器

    一.无线调试器说明 许多单片机支持使用SWD与JTAG接口在线仿真调试,但很多场景下(如无人机.移动机器人),我们没有办法在设备运行的过程中将线缆插到设备上进行有线调试,这时候一个可以远程debug和 ...

最新文章

  1. 基于NEO的私链(Private Blockchain)
  2. java抛异常 代替返回_请问业务层方法是抛出一个异常好还是返回一个结果更好...
  3. Java学习--设计模式之创建型模式
  4. sql语句的经典练习
  5. 工程师的基本功是什么?如何练习?听美团技术大咖怎么说
  6. Struts2的Action访问Session对象的两种方式及原理
  7. 小米笔记安装双系统linux,小米笔记本电脑怎么安装双系统?-小米win7
  8. Matlab:数据包络分析(DEA)入门教程
  9. 知识付费APP的崛起
  10. Android O 收音机学习研究(基于Car)
  11. static全局变量与普通的全局变量
  12. mysql里面的时间函数
  13. 【产业互联网周报】销售易获腾讯1.2亿美元投资;国科恒泰完成11亿C轮融资;工信部、科技部推进大数据及人工智能...
  14. 概率论知识回顾(二十):随机变量序列收敛性
  15. kali清理_白帽子教你Kali Linux:如何远程清除计算机日志信息防范被追踪?
  16. Mint UI—loadmore—Pull down下拉刷新将下拉刷新的箭头标志更换成其他图片(图文)
  17. ArcGIS操作系列10- Arcmap 中矢量图层面积的计算方法
  18. 我国长征系列航天飞船剖解
  19. 《生物化学与分子生物学》----酶的作用机理和酶的调节----听课笔记(十一)
  20. 深入浅出c++协程丨C++协程实现

热门文章

  1. ios textView输入框光标问题
  2. android 设置gps波特率,GPS端口、波特率设置原理详解(GPS如何搜星,波特率对传输速度和精度的影响)...
  3. 决定人生的三种成本:机会成本,沉没成本,边际成本
  4. 智能电视机顶盒开发记录
  5. 每个人都应该具备点批判性思维
  6. wps批量删除sheet 批量删除工作簿
  7. html怎么用2个caption不换行,caption怎么用
  8. 监督学习、无监督学习、半监督学习、强化学习、自监督学习
  9. 夏普(SHARP) LS050T1SX01 液晶屏接口定义
  10. JavaScript中的onmouseover事件和onmouseout事件实例