汇编实验叁 编程、编译、连接、跟踪

南京信息工程大学实验报告

实验名称   实验3 编程、编译、连接、跟踪  

实验日期  11.12               

得分          

学院    计软院  

专业     

年级    2017级   

班次    6班 

姓名    江轲禹        

学号    20171308227       

一、实验目的

1. 掌握汇编语言源程序(8086 dos汇编)编写→汇编→链接→调试的方法 2. 加深对1-4章基础知识的理解

二、实验准备

1. 结合第4章课件和教材,学习/复习完整汇编源程序编写→汇编→连接→运行→调试 的方法  2. 复习第1-3章以下基础知识: (1)寄存器用法  ① 通用寄存器AX, BX,CX, DX     ② 段寄存器CS, DS, SS和两个特殊寄存器IP, SP (2)内存访问,特别是多字节数据的存、取 (3)汇编指令用法,注意其合法使用形式  ① 数据传送类指令:mov, push, pop     ② 算术运算指令:add, sub  ③ 转移类指令:jmp

三、实验内容

1. 练习1 第1步,编写汇编源程序t1.asm, 源程序代码如图1-1所示。

第 2页 /共 6页

 

图1-1 汇编源程序t1.asm 源代码 第2步,对源程序 t1.asm 进行汇编、连接、运行、调试 (1) 运行程序,观察程序输出结果是什么? (2) 将 line4和line9种寄存器dl 的值分别修改为 0~9 中任何一个数字,重新汇编→ 连接→运行,观察结果的变化。  (3) 用debug对生成的可执行文件 t1.exe 进行调试。 ① 使用 r 命令查看。观察寄存器 cx 的值是 多少;观察寄存器 ds 和 cs 的值是多 少,它们之间是否满足关系(cs)=(ds)+10H?  ② PSP(程序段前缀)的头两个字节是CD 20, 用debug查看PSP的内容,验证是否 如此。  ③ 使用 u 命令对 t1.exe 进行反汇编,观察反汇编得到的源代码。 ④ 使用 t 命令和 p 命令(遇到 int 命令时,用 p 命令)单步调试,观察结果。

 

2. 练习2 第1步,编写汇编源程序t2.asm,源程序代码如图1-2所示。

第 3页 /共 6页

 

图1-2 汇编源程序t2.asm源代码

注*: line6-7相当于mov [0], 0433h line9-10相当于mov [2], 0436h 至于为什么这样使用两条指令,而不直接简化写成上面的形式,有两个原因。其中一个 是方便以后循环;另一个原因,留待第5章再解释说明。暂时,先这样使用。 第2步,对源程序 t2.asm 进行汇编、连接、运行、调试 (1) 对t2.asm进行汇编、连接后,得到可执行文件t2.exe。运行t2.exe,观察程序运行 结果,验证是否在屏幕左上方出现红色的数值36。 注*)经测试,有些平台在 dosbox 下运行这个程序时有些问题,如果屏幕左上方没有 输出结果,请运行程序t2.exe前,先输入cls命令清空一下屏幕,然后再执行t2.exe。 (2) 如果(1)结果得到验证,重新打开t2.asm,尝试将源代码中line7的0433h→0432h, line10 的 0436h→0439h, 然后重新汇编、连接,得到可执行文件 t2.exe。使用 cls 命令清 屏后,再次观察程序运行结果。 (3) 如果(1)结果得到验证,重新打开t2.asm,尝试将源代码中line7的0433h→0333h, line10 的 0436h→0336h, 然后重新汇编、连接,得到可执行文件 t2.exe。使用 cls 命令清 屏后,再次观察程序运行结果。

 

四、实验结论

(一)在集成环境下输入下列指令,并执行

assume cs:code

code segment

mov ah,2

mov dl,3

add dl,30h

int 21h

 

mov ah,2

mov dl,6

add dl,30h

int 21h

 

mov ah,4ch

int 21h

code ends

end

(1) 运行程序,观察程序输出结果是什么? 

 

可以看到,输出结果为36。

 

(2) 将 line4和line9种寄存器dl 的值分别修改为 0~9 中任何一个数字,重新汇编→ 连接→运行,观察结果的变化。

这里将line4改为5和line9改为9

 

此时的输出结果为59

由此可以推断,输出结果应该是两个dl的值

 

(3) 用debug对生成的可执行文件 t1.exe 进行调试。

使用 r 命令查看。观察寄存器 cx 的值是 多少;观察寄存器 ds 和 cs 的值是多 少,它们之间是否满足关系(cs)=(ds)+10H? 

 

 

 

可以get到,ds=075AH,cs=076AH,满足(cs)=(ds)+10H。

PSP(程序段前缀)的头两个字节是 CD 20, 用 debug 查看 PSP 的内容,验证是否

如此。

 

 

答案显然是肯定的

 

 使用 u 命令对 t1.exe 进行反汇编,观察反汇编得到的源代码。

 

 使用 t 命令和 p 命令(遇到 int 命令时,用 p 命令)单步调试,观察结果。

 

 

 

(二)这边在执行t2时候遇到了一些问题。。。

在集成实验环境下执行命令时,不知为何会对mov [bx],0436h和mov [bx],0436h报错。。。

 

个么,直接到DOS环境下输入命令试试?

用edit命令,然后输入下列命令,并命名为t2.asm

 

对t2.asm 进行汇编、链接、运行、调试

 

 

那么问题来了。。。 对t2.asm进行汇编,链接后, 为什么得不到结果(红色的36?)。。。

五、总结与体会

练习二中,执行程序t2的时候

1)在集成实验环境下,不理解对命令mov [bx],0436h和mov [bx],0436h的报错。。。

2)在DOS环境下,不输出结果,不知道哪边出问题了,更别说该如何解决了QUQ。。。

转载于:https://www.cnblogs.com/jiangkeyu/p/9978935.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验二是一项关于80C51汇编语言编程实验。80C51是一种常用的单片机,掌握其汇编语言编程对于学习嵌入式系统和单片机原理非常重要。 在本实验中,我们将学习如何使用80C51汇编语言编写程序,并将其下载到单片机上运行。通过实验,我们可以深入了解单片机内部的工作原理和寄存器的使用方法。 在开始实验前,我们需要了解一些基本概念和知识。首先,我们需要了解单片机的硬件架构和内部寄存器的作用。单片机的硬件包括中央处理器、存储器、输入输出端口等,而寄存器则用于存储数据和控制单片机的行为。 接下来,我们需要学习80C51汇编语言的语法和指令集。汇编语言是一种低级语言,使用特定的指令直接与硬件进行交互。学习汇编语言需要掌握不同的指令和寄存器的用法,以及如何进行数据操作和控制流程。 在实验过程中,我们将根据实验要求,编写相应的程序来实现特定的功能。例如,我们可以通过控制LED的亮灭来实验GPIO端口的输入输出,或者通过定时器来实现延时功能。 完成编写程序后,我们需要将程序下载到单片机上运行。这需要使用编程器来将程序写入单片机的存储器中,并配置相应的寄存器来使程序能够在单片机中正常运行。 通过实验二,我们可以提高对80C51汇编语言的理解和应用能力,掌握单片机的编程技巧,同时也培养了我们解决问题和调试的能力。这对于进一步学习和应用嵌入式系统和单片机原理都具有重要的意义。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值