北京理工汇编语言实验一实验报告

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

汇编语言实验一实验报告
——DOS 环境下的汇编语言编程环境使用
班级:05211102
姓名:庞珂
学号:1120111306
日期:2013.9.2早8:30~11:30
实验一 DOS环境下的汇编语言编程环境使用
(基础与验证型)
一、实验要求和目的
1、掌握汇编语言程序设计的基本流程和学会上机开发简单程序;
2、熟练掌握宏汇编程序MASM 的使用;
3、熟练掌握连接程序LINK 的使用;
4、熟练掌握DEBUG 的使用;
二、软硬件环境
1、硬件环境:计算机系统windows;
2、软件环境:装有MASM、DEBUG、LINK、等应用程序。

三、实验涉及的主要知识
汇编语言程序设计上机开发过程如图1.1 所示:
1、汇编语言源程序的汇编过程
汇编语言源程序的汇编过程是是利用汇编程序(MASM)对已编辑好的源程序文件(.ASM)进行汇编,将源程序文件中以ASCII 码表示的助记符指令逐条翻译成机器码指令,并完成源
程序中的伪指令所指出的各种操作,最后可以建立3 个文件:扩展名为 .OBJ 的目标文件、
扩展名为 .LST 的列表文件和扩展名为 .CRF 的交叉索引文件。

2、目标程序的连接过程
连接程序进行连接时,其输入有两个部分:一是目标文件(.OBJ),目标文件可以是一个也可以是多个,可以是汇编语言经汇编后产生的目标文件,也可以是高级语言(例如C 语言)经编译后产生的目标文件;另一是库文件(.LIB),库文件是系统中已经建立的,主要是为高级语言提供的。

连接后输出两个文件,一是扩展名为 .EXE 的可执行文件,另一个是扩展名为 .MAP 的内存分配文件。

3、Debug 调试过程
一个程序特别是比较复杂的程序不能保证没有一点错误。

因此,在投入正式运行前必须进行调试,以检查程序的正确性。

调试程序Debug 就是用来调试汇编语言程序的一种工具。

四、实验内容与步骤
1、汇编、链接并调试给出的简单程序,找出程序中的错误。

(一)录入并建立汇编语言源程序文件(ASM 文件),例如:
D:\MASM> EDIT TEST01.ASM;TEST01.ASM with several errors
DATA1 SEGMENT
word1 DW 1, 9078H
byte1 DB 21, 'World'
DD 12345678H
Msg DB 'Hello ,everyone!$'
DATA1 ENDS
STACK SEGMENT
sta dw 20 dup(?)
Top equ size sta
STACK ENDS
code segment
assume cs:code,ds:data1,ss:stack
Start:
MOV AX,data1
MOV DS,AX
MOV DX,OFFSET Msg
MOV AH,9
INT 21h
Nop
MOV AX,0
MOV BX,1H
ADDITION
ADD AX,BX
INC BX
COM BX,10
JAE ADDITION
MOV AH,4ch ;DOS terminate program function
INT 21h
Code ends
END Start
(二)用汇编程序MASM 将ASM 文件汇编成目标程序文件(OBJ 文件)其操作步骤如下: D:\MASM>MASM TEST01
Microsoft (R) Macro Assembler Version 5.00
Copyright (C) Microsoft Corp 1981–1985,1987. All rights reserved.
Object filename [TEST01.OBJ]:
Source listing [NUL.LST]:TEST01
Cross-reference [NUL.CRF]:TEST01
50674 + 450574 Bytes symbol space free
0 Warning Errors
0 Severe Errors
汇编程序调入后,首先显示版本号,然后出现三个提示行。

第一个提示行为:Object filename [TEST01.OBJ]:
第二个提示行为:Source listing [NUL.LST]:
第三个提示行为:Cross-reference [NUL.CRF]:
(三)用连接程序LINK 生成可执行程序文件(EXE 文件)连接过程如下:
D:\MASM>LINK TEST01
Microsoft (R) Overlay Linker Version 3.60
Copyright (C) Microsoft Corp 1983-1987. All rights reserved.
Run File [TEST01.EXE]:
List File [NUL.MAP]:TEST01
Libraries [.LIB]:
在连接程序调入后,首先显示版本号,然后出现三个提示行。

第一个提示行为:Run File [TEST01.EXE]:
第二个提示行为:List File [NUL.MAP]:
第三个提示行为:Libraries [.LIB]:
(四)程序的调试,调试过程:
①进入Debug 并装入可执行文件TEST01.EXE
D:\MASM>Debug TEST01.EXE<Enter>
-
②观察寄存器初始状态
-R <Enter>
AX=0000 BX=0000 CX=020C DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=1892 ES=1892 SS=18A2 CS=18A2 IP=0100 NV UP EI PL NZ NA PO NC
③以单步工作方式开始运行程序
首先用T 命令顺序执行用户程序的前l 两条指令,将段寄存器DS 预置为用户的数据段。

④观察用户程序数据段初始内容
-D ds:0 <Enter>
-
⑤连续工作方式运行程序至返回DOS 前,查看运行结果。

为此,现使用U 命令反汇编。

⑥修改源程序,重新汇编、链接并调试,查看运行结果。

⑦退出
-Q <Enter>
D:\MASM>
2、完成程序设计:
分类统计字数组data 中正数、负数和零的个数,并分别存入内存字变量Positive、Negative 和Zero 中,数组元素个数保存在其第一个字中。

使用Debug 查看Positive、Negative 和Zero 三个变量的数据。

五、实验过程及结果:
实验一:
1.输入给出的程序
2.运行输入的程序,发现了三处错误:
根据错误提示,发现错误为ADDITION后未打冒号,CMP错打为COM。

修改原代码:改为:
3.调试发现ADDITION并没用正确运行。

检查语句逻辑性发现,应将JAE改成JB,才能实
现累加并终结。

运行得到:
4.重新进行DEBUG调试:
实验二:
分类统计字数组data 中正数、负数和零的个数,并分别存入内存字变量Positive、Negative和Zero 中,数组元素个数保存在其第一个字中。

使用Debug 查看Positive、Negative 和Zero 三个变量的数据。

1.根据题目得流程图,如下:
2.根据题目要求,编译如下程序:
测试数据为2,0,-3,0,0,1,则应有2个正数,3个零,1个负数。

3.在DEBUG中调试:
直接用-g36将程序运行到操作归还给DOS系统之前。

用-dds:0查看内存状态:
实验感想:
这是我第一次接触汇编语言编程,它比c语言更加复杂一些,它都是由一系列指令组成。

其次,第一次做这类实验,我不知道应该怎么操作,不知道应当事前做什么准备,导致这一次实验完成的不是很好。

在实验过程中,我并没有当堂把实验的第二个变成顺利完成,我很难理解它的思维,因此,在下课以后,我把书本好好梳理了一次,虽然没有理想的顺利,但是起码有了思路,我想这是一个良好的开始。

我想以后我会对我的学习做一下调整:
第一:我会事先预习实验内容。

第二:实验以后,我会把知识进行梳理。

第三:把不了解的地方做记号,下课查资料。

为了好好学好汇编语言,我会努力的。

相关文档
最新文档