请对源程序文件中的源程序 利用debug进行调试分析,
请提交调试截图(截图加上适当标记或注释)以及 通过调试分析收获理解了的知识点、体会等文字叙述。

DSEG     SEGMENTORG 10HVARB DB 'ABCDE'             EVENVARW DW 3 DUP(5),4 DUP(-1)  BUFW EQU THIS WORDBUFBB LABEL BYTEVARD DD 1234H,5678H,3 DUP(5)BUFB EQU BYTE PTR VARD    DSEG        ENDS
CSEG        SEGMENTASSUME   CS: CSEG, DS: DSEG
START:  MOV     AX, DSEGMOV DS, AXMOV  AX, TYPE VARB    MOV  BX, LENGTH VARWMOV  CX, SIZE VARDMOV  SI, SEG VARDMOV  DI, OFFSET VARDMOV  BH, BYTE PTR VARDMOV  DI, WORD PTR VARDMOV  DL, BUFBBMOV  DH, BUFBMOV  BP, BUFW.RADIX 16MOV  AH,0EF MOV AX, 4C00HINT    21H
CSEG        ENDSEND START

在执行masm task1.asm后,输出了task1.obj和task1.lst。task1.lst可以看到机器码和汇编的源码。


执行link task1.obj,输出了可执行文件task1.exe。
对task1.exe进行调试,输入debug task1.exe
输入-u进行反汇编


其中,
076E:0000指令对应了源汇编程序的MOV AX,DESG,desg为段地址076A
076E:0003指令调用的都是变量而不是常量。
076E:0005指令对应了MOV AX, TYPE VARB。TYPE VARB为VARB的类型DB,值为1。
076E:0008指令对应了MOV BX, LENGTH VARW。LENGTH VARW为VARW的第一个DUP前的数值3。
076E:000B指令对应了MOV CX, SIZE VARD。SIZE VARD为VARD的LENGTHTYPE=14=4。
076E:000E指令对应了MOV SI, SEG VARD。SEG VARD为VARD的段地址。VARD在DSEG段内,段地址为076A。
076E:0011指令对应了MOV DI, OFFSET VARD。OFFSET VARD为VARD的偏移地址0024。
076E:0014指令对应了MOV BH, BYTE PTR VARD。[0024]表示访问偏移地址0024内的值。
076E:0018指令对应了MOV DI, WORD PTR VARD。[0024]表示访问偏移地址0024内的值。
076E:001C指令对应了MOV DL, BUFBB ,BUFBB为byte类型的label,标在了VARD上,而VARD偏移地址为0024.
076E:0020指令对应了MOV DH, BUFB。在数据段,BUFB EQU BYTE PTR VARD。BUFB等效于VARD的指针,指向VARD偏移地址0024。
076E:0024指令对应MOV BP, BUFW。在数据段,BUFW EQU THIS WORD。而当前指向的存储单元就是VARD偏移地址0024.
上述提到的bufbb,bufb,bufw与地址的对应关系都可以在lst文件中直观地看到。
.RADIX 16为伪指令,使得后续汇编语句都操作十六进制数。
076E:0028和076E:002A分别对应MOV AH,0EF和MOVAX, 4C00H。
076E:002D对应INT 21H,引发中断。
输入-g 20,将程序运行到第20H行(第32行)但不退出,创建断点并输出该断点时各个变量的值。(如果没有创建断点,则会导致程序正常结束运行而不能观察此时内存状态)

AX的值由MOV AX, TYPE VARB决定,为01。
BX的值由MOV BX, LENGTH VARW决定,为03。
CX的值由MOV CX, SIZE VARD决定,为04.
DX的值没有被汇编语句重新写入,用作通用寄存器作为地址寄存器。
SP的值没有被汇编语句重新写入,用作堆栈指针。
SI的值由MOV SI, SEG VARD决定,为076A。
DI的值由MOV DI, OFFSET VARD决定,为0024存的字1234H。
DS的值由MOVDS, AX决定,而AX的值由MOV AX, DSEG决定,此时DS和AX的值均为DSEG段地址076A.
SS是堆栈寄存器。
CS的值由ASSUMECS: CSEG决定,CS为CSEG段地址076E。
IP为instruction pointer。

输入-d ds:0 ,可以看到当前内存情况。
数据段的ORG 10H使得数据块的起始地址从0010开始,所以第一行的值全是0.
从0010开始,VARB DB 'ABCDE’使得前五个数据分别对应ABCDE的十六进制ASCII码。
EVEN使得数据对齐。
VARW DW 3 DUP(5),4 DUP(-1) 生成了3个5和4个-1,占两个字节,高高低低存储。对应了05 00 05 00 05 00和FF FF FF FF FF FF FF FF。
VARD DD 1234H,5678H,3 DUP(5)生成了1234H、5678H,3个5,每个数据占4字节。高高低低存储。对应了34 12 00 00、78 56 00 00和3个05 00 00 00。

汇编语言与微机原理-变量的调试与分析相关推荐

  1. 汇编语言与微机原理(1)基础知识

    前言 (1)本人使用的是 王爽老师的汇编语言第四版和 学校发的微机原理教材配合学习. (2)推荐视频教程 通俗易懂的汇编语言(王爽老师的书): 贺老师C站账号网址: (3)文章配套资料: Github ...

  2. 汇编语言与微机原理/计算机组成原理第三章:寻址方式与数据传送

    一. 单选题(共8题,49.6分) (单选题)假设VAR为变量,指令"MOV BX, OFFSET VAR"的源操作数寻址方式是( ) A. 立即寻址 B. 直接寻址 C. 间接录 ...

  3. 汇编语言与微机原理 期末半开卷复习整理(下)

    输入输出 8086采用I/O端口独立编址 in AL/AX,imm8/DX out imm8/DX,AL/AX 大于0FFH的端口只能存在DX 读外设(查询) status:in al,dxtest ...

  4. 微型计算机原理第三版考试,微机原理考试试题及答案分析

    C. 1,0 D. 1,1 ()2. 设x=-46,y=117,则[x-y]补和[x+y]补分别等于. A. D2H和75H B. 5DH和47H C. 2EH和7lH D. 47H和71H ()3. ...

  5. 微型计算机原理sar,微机原理的题一.程序分析 1.MOV AX,80F0H MOV CL,10H SAR AX,CL ADD AX,80H...

    共回答了15个问题采纳率:86.7% 一.程序分析 1.MOV AX,80F0H;AX=1000 0000 1111 0000B MOV CL,10H;CL=16 SAR AX,CL;对AX算术右移1 ...

  6. 【微机原理与接口技术学习实践】汇编语言程序设计初步——debug编写调试指令序列

    halo~我是bay_Tong桐小白 本文内容是桐小白个人对所学知识进行的总结和分享,知识点会不定期进行编辑更新和完善,了解最近更新内容可参看更新日志,欢迎各位大神留言.指点 [微机原理与接口技术学习 ...

  7. 微机原理8086汇编语言上机——Masm环境搭建与常用汇编调试指令

    学校的微机原理与接口技术课,最近开始 考古 上机实验了. 1.弯路 为什么不用宇宙最强大的IDEL--Visual Studio呢? 在我的Visual Studio专栏中有一篇文章介绍Visual ...

  8. 用汇编语言与C语言实验其他排序,微机原理实验报告冒泡排序

    微机原理实验报告冒泡排序 五.运行结果 (1)对300,250,280,240,260五个数进行冒泡排序,运行结果如下: (2)对-1,2,54,-38,43五个数进行冒泡排序,运行结果如下 (1)当 ...

  9. 微型计算机汇编语言与接口技术答案,32位微机原理、汇编语言及接口技术教程课后习题答案.doc...

    32位微机原理.汇编语言及接口技术教程课后习题答案.doc 16/32位微机原理.汇编语言及接口技术教程部分习题参考解答第1章 微型计算机系统概述习题1.2什么是通用微处理器.单片机(微控制器).DS ...

最新文章

  1. python 条件选择语句_Python趣味入门4:选择往往是最重要的-条件语句
  2. 134人!国家重点研发计划“生物大分子与微生物组”重点专项会评专家名单
  3. 8086之8253芯片仿真
  4. 阶跃函数卷积自己_如何看待大神/老师说“阶跃响应曲线调参并不准确”的观点?...
  5. org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.TooManyR
  6. 你真的需要一个微信公众号吗?
  7. json标准格式举例_JSON格式简介及一些对应函数
  8. Android中实现Activity的透明背景效果
  9. Enterprise Library 2.0 发布了...
  10. yuzu模拟器linux,yuzu模拟器使用教程 yuzu模拟器手机版下载
  11. java 工作流开发框架比较
  12. java工程源码看不懂_目前从事java开发工作,看不懂源码应该怎么做?
  13. 在线培训-虚拟演播室嵌入网页直播
  14. 哪些英文单词改变时态需要双写末尾字母
  15. 威霆商务车改装独特的爱马仕橙+磨砂黑的搭配
  16. 计算机毕业设计之java+ssm生鲜超市进销存管理系统
  17. 伦茨科技-智能语音遥控器
  18. 真的!?在阅读体验感上赢过微信读书?
  19. 深度学习框架智能时代的操作系统是什么?
  20. 双系统安装红旗linux,红旗LINUX怎么安装成双系统?

热门文章

  1. 如何设置div使得能够全屏
  2. fileUpload上传视频
  3. Linux系统之alias别名的基本使用
  4. 邯郸图腾服务器机柜系列,图腾机柜G系列产品
  5. 几个月前自己写的淘宝旺店助手
  6. 装修淘宝店的3个小技巧,一般人我不告诉他哦!
  7. cubase elements12中文免费版 详细安装流程
  8. python画箭头_python画折线示意图实例代码
  9. 16进制颜色及不透明度参考 转换
  10. 006 - Windows 下 C++ 程序以管理员运行(UAC)