实验一__汇编程序的汇编及运行
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)通过以上调试分析,最终修正代码,如图已能通过编译。