第一次汇编实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一次汇编实验

一、实验目的

1.熟悉汇编语言源程序书写格式。

2.熟悉汇编语言源程序的编辑、汇编、连接、执行步骤。

3.练习DEBUG常用命令的使用。

4.练习常通用数据传送类指令的使用。

二、实验内容

1.编辑程序一,编写程序并用DEBUG命名保存,得出结果并用DEBUG单步调试。

2.编辑程序二,用DEBUG调试,查看DATA段中定义的数据在内存中的存放方式,

并单步执行查看每一语句执行后相关寄存器的内容。

3.编辑程序三,将立即数2AH送入内存数据段1000H开始的100个单元中,并单步

执行查看每一语句执行后相关寄存器的内容。

4.编辑程序四,练习压栈出栈指令,并单步执行查看每一语句执行后相关寄存器的

内容。

5.编辑程序五,练习交换指令XCHG,并单步执行查看每一语句执行后相关寄存器的

内容。

6.

三、实验步骤

<程序一>

1.编辑程序并命名为。

2.修改寄存器内容,写入文件总字符数.

3.查看程序并进行反汇编(-u)。

4.根据反汇编得到的机器码,用e写入内存。

<程序二>

1.编辑源程序并汇编成目标文件。

2.连接成可执行文件并运行输出结果。

3.检查寄存器内容(-r)。

4.反汇编(-u)。

5.单步调试(-t)。

<程序三>

1.编辑程序,将立即数2AH送入内存数据段1000H开始的100个单元中,并单步执

行。

可以看到mov di,1000mov cx,64mov al,2a执行后,寄存器DI=1000 CX=0064AX=002A,执行inc di,dec cx后,DI,CX里的值分别增加减少1。

2.反汇编(-u)。

3.执行三次mov [di],al后可以看到数据段1000H开始的3个单元中已存在2a。

<程序四>

1.编辑程序并单步执行,可以看到在执行MOV AX,9000MOV DX,38FF MOV

SP,E200后,AX=9000,DX=38FF,SP=E200;

2.PUSH操作后,可以发现SP=SP-2;POP操作后,发现SP=SP+2;根据堆栈的后进先

出的性质,在PUSH DX;PUSH AX后执行POP DX;POP AX,则AX与DX 里的值发生变化,我们可以从最后两个-t操作中发现AX与DX 的变化情况。

<程序五>

1.编辑程序并单步执行,可以看到在执行MOV AX,1000MOV BX,2EFF后,AX=1000,

BX=2EFF;在执行XCHG 后,BX=1000,AX=2EFF。

四、总结与心得

通过五个程序的汇编与执行,已经熟悉了汇编语言源程序书写格式,并熟悉了汇编语言源程序的编辑、汇编、连接、执行的过程,也就是编辑源文件(.asm),汇编(masm)生成目标文件(.obj),连接(link)生成可执行文件(.exe)。通过运用DEBUG练习,已对程序的执行过程有稍许了解,对小型程序直接在DEBUG里汇编,执行,命名,保存也有了初步了解。

通过对程序三、四、五的编辑与单步调试,对命令MOV,XCHG,PUSH,POP有了初步的掌握能力,对单步执行命令t有了更深刻的理解,对各个寄存器的功能的认识进一步加强。

实验中,通过对程序的编辑,对字符串在存储单元的存储情况有了更深刻的认识,如f dw 'ab','c','$',,’ab’是看成一个整体的,’a’就是高字节,高字节放在连续两个字节单元的高地址单元,所以由低到高是42H、41H、43H,所以输出’bac’。同时也了解到db是定义字节型的数据,dw定义字类型数据,dd定义双字类型的数据,lea和offset是取偏移地址,seg 是取段地址。

相关文档
最新文档