实验一__汇编程序的汇编及运行

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

福建农林大学东方学院信息工程类实验报告

系:计算机系专业:电子信息工程年级: 10 姓名:廖少兵学号: 1050302103 实验课程:汇编语言

实验室号:_______ 实验设备号:实验时间:

指导教师签字:成绩:

实验一汇编程序的汇编及运行

1.实验目的和要求

1、熟悉汇编程序的汇编、连接、执行过程

2、生成LST文件,查看LST文件

3、生成OBJ文件,修改语法错误

4、生成EXE文件

5、执行

2.实验的原理和主要仪器设备

IBM—PC机及其兼容机

实验的软件环境是:

操作系统:DOS 2.0以上;调试程序:;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。

3.实验内容及实验数据记录

1、将数据段输入,取名1.txt,保存在MASM文件夹下。生成LST文件,(不必连接、运行)用EDIT查看1.LST文件。试回答:DA1,DA2的偏移量分别是多少?COUNT的值为多少?

DA TA SEGMENT

ORG 20H

NUM1=8

NUM2=NUM1+10H

DA1 DB ‘IBM PC’

DA2 DB 0AH, 0DH

COUNT EQU $-DA1

DA TA ENDS

END

2、输入有错误的文件,修改错误语句。(MASM没有出现错误即可。不必连

接、运行。)

DA TA SEGMENT

V AR1 DB 0, 25, ODH, 300

V AR2 DB 12H, A4H, 6BH

V AR3 DB ’ABCDEF’

V AR4 DW 1234H, 5678H

V AR5 DW 10H DUP(?)

DA TA ENDS

CODE SEGMENT

ASSUME CS: CODE, DE: DA TA

BEING MOV AX, DA TA

MOV DS, AX

LEA SI, V AR5

MOV BX, OFFSET V AR2

MOV [SI], 0ABH

MOV AX, V AR1+2

MOV [BX], [SI]

MOV V AR5+4, V AR4

MOV AH, 4CH

INT 21H

CODE ENDS

END START

3、输入正确的程序,汇编、连接、运行

STACKS SEGMENT STACK

DW 128 DUP(?)

STACKS ENDS

DA TAS SEGMENT

STRING DB ‘WELCOME!’, 13, 10, ‘$’

DA TAS ENDS

CODES SEGMENT

ASSUME CS: CODES, DS: DA TAS

START:MOV AX, DA TAS

MOV DS, AX

LEA DX, STRING

MOV AH, 9

INT 21H

MOV AH, 4CH

INT 21H

CODES ENDS

END START

4.操作方法及实验步骤

编写各代码并存储为源程序asm文件,对其进行汇编、连接。

1、Dos进入masm目录

2、masm 文件名(对文件进行编译)

3、link 文件名(对生成OBJ目标文件进行连接)

4、由dos加载连接后生成的可执行文件来执行程序

5.实验数据处理和分析

(1)

(2)如图输入代码编译未能通过,提示出错有9处

其中2、3、9行均为符号未定义错误,其中修改ODH中O在十六进制中未定义(不存在)、而A4H以字母开头必须添上数字0)、寄存器中没有DE故而修改之。第十行我们暂且放着,第十四行提示说操作数必须指定大小空间由代码可知,立即数ABH传给内存单元时,必须指定内存大小空间,所以可修改该句为MOV BYTE PTR 0ABH。而15行的错误提示与17行一样均不能找到段寄存器所分配的地址,15行从代码格式上看除了位数不一致外并不是如是的所提错误,而17行是错在两个立即数作为MOV指令的操作数,我们先跳过。下面16行的错误是非法错误的操作数格式,这里两个操作数均是内存单元里的数据,可修改【BX】为BX。由21行错误可知START未定义,之前程序入口中出现了标识符BEING,因此这里改为BEING。同时可知刚刚第十行错误就显而易见了,标识的格式错了。应该为BEING:。

部分修改后代码如下:

重新编译得如下错误提示第2行中300超出了所分配的看空间字节大小,

这里把它改为30,比较之前的出错提示17行和15行的均改变了,这才具体指出了出错原因。这里15行我们就修改AX为AL,匹配两操作数位数。17行中我们为不改变原意可以用如下指令替代:MOV CX,VAR4; MOV VAR5+4,CX;

(3)编辑源程序后编译未能通过,提示如图:

我们打开源程序看到如图所示:

我们之前定义的是DA TAS而不是DATAX,修改之。编译通过,我们link进行连接如图:

已生成可执行文件3.exe。

6. 实验结果

(1)编辑源程序后编译生成list文件提示时输入文件名得到1.list文件。

打开如图得知:DA1、DA2的偏移量分别是0020H和0026H。

(2)通过以上调试分析,最终修正代码,如图已能通过编译。

相关文档
最新文档