汇编实验报告总课案Word文档下载推荐.docx
《汇编实验报告总课案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《汇编实验报告总课案Word文档下载推荐.docx(41页珍藏版)》请在冰豆网上搜索。
实验一汇编程序的汇编及运行
2
实验二顺序程序设计
3
实验三分支循环程序设计
4
实验四子程序设计
5
实验五DOS功能调用
总平均
福建农林大学金山学院实验报告
信息与机电工程系专业:
电子信息工程年级:
12
姓名:
陈振韦学号:
126710100实验课程:
汇编语言
实验室号:
___试验A楼_608_实验设备号:
实验时间:
2014,4,9
指导教师签字:
刘永芬成绩:
1.实验目的和要求
(1)熟悉汇编程序的汇编、连接、执行过程
(2)生成LST文件,查看LST文件
(3)生成OBJ文件,修改语法错误
(4)生成EXE文件
(5)执行
2.实验环境
IBM—PC机及其兼容机
实验的软件环境是:
操作系统:
DOS2.0以上;
调试程序:
DEBUG.COM;
文本编程程序:
EDIT.EXE、WPS.EXE;
宏汇编程序:
MASM.EXE(或ASM.EXE);
连接装配程序:
LINK.EXE;
交叉引用程序:
CREF.EXE(可有可无)。
3.实验内容及实验数据记录
(1)将数据段输入,取名1.txt,保存在MASM文件夹下。
生成LST文件,(不必连接、运行)用EDIT查看1.LST文件。
试回答:
DA1,DA2的偏移量分别是多少?
COUNT的值为多少?
DATASEGMENT
ORG20H
NUM1=8
NUM2=NUM1+10H
DA1DB‘IBMPC’
DA2DB0AH,0DH
COUNTEQU$-DA1
DATAENDS
END
(2)输入有错误的文件,修改错误语句。
(MASM没有出现错误即可。
不
必连接、运行。
)
DATASEGMENT
VAR1DB0,25,ODH,300
VAR2DB12H,A4H,6BH
VAR3DB’ABCDEF’
VAR4DW1234H,5678H
VAR5DW10HDUP(?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DE:
DATA
BEINGMOVAX,DATA
MOVDS,AX
LEASI,VAR5
MOVBX,OFFSETVAR2
MOV[SI],0ABH
MOVAX,VAR1+2
MOV[BX],[SI]
MOVVAR5+4,VAR4
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
(3)输入正确的程序,汇编、连接、运行
STACKSSEGMENTSTACK
DW128DUP(?
STACKSENDS
DATASSEGMENT
STRINGDB‘WELCOME!
’,13,10,‘$’
DATASENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS
MOVDS,AX
LEADX,STRING
MOVAH,9
INT21H
MOVAH,4CH
CODESENDS
ENDSTART
4.算法描述及实验步骤
(1)在记事本编写源程序1.txt,masm1.txe回车,回车,出现提示
输入1,生成1.lst,打开1.lst,查看内容。
(2)在记事本编写源程序2.txt,masm1.txe回车,回车,出现提示
输入2,查看错误,再在2.txt修改内容,然后经汇编生成.obj文件,链接生成.exe文件。
(3)在记事本编写源程序3.txt,masm3.txe回车,回车,然后经汇编生成3.obj文件,链接生成3.exe文件,debug3.exe,输入g显示出结果。
5.调试过程
(1)调试过程如下图:
(2)实验2出现10个错误,1个警告。
如下图:
修改过程:
(1)ODH改为0DH;
(2)300改为30;
(3)‘ABCDEF‘将引号改为英文型引号;
(4)在BEGINE后加冒号;
(5)将MOV[SI],0ABH改为MOVBYTEPTR[SI],0ABH;
(6)将MOV[BX],[SI]改为MOVCX,[BX]MOVCX,[SI]MOV[BX],CX;
(7)将MOVVAR5+4,VAR4改为MOVDX,VAR5+4MOVDX,VAR4MOVVAR5+4,DX
(3)
修改如下:
‘WELCOME!
’和‘$’的引号改为英文型的,START后的冒号改为英文型的。
6.实验结果
(1)DA1,DA2的偏移量分别是多少?
(2)修改后的结果如下图:
(3)实验结果如下图:
7.总结
本次会编,真是一次艰难的事情啊,不过我想万事开头难。
通过这次汇编我学会了一些基本的汇编、连接、执行过程;
试验段目的不是为了验证书本理论,更重要的是对实践能力的培养。
2012
1256710100实验课程:
__实验楼a606实验设备号:
j6实验时间:
4.16
成绩:
1.实验目的和要求
1.学习使用DEBUG的命令;
2.使用DEBUG命令在数据段中查看程序运行的结果;
3.利用DEBUG运行简单的程序段。
实验的硬件环境是:
1)输入程序观察寄存器变化
使用DEBUG,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器的内容变化。
注意用T命令执行时,CS:
IP寄存器的内容
MOVAX,4E20
ADDAX,1416
MOVBX,2000
ADDAX,BX
MOVBX,AX
MOVAX,001A
MOVBX,0026
ADDAL,BL
ADDAH,BL
ADDBH,AL
MOVAH,0
ADDAL,9C
2)下列程序单步运行,注意AL,BX,CX寄存器的变化,并观察数据段字母的变化。
如果原来是大写,要如何修改指令,使得它们变成小写?
DSEGSEGMENT
MSG1DB‘abc’
DSEGENDS
CSEGSEGMENT
ASSUMECS:
CSEG,DS:
DSEG
START:
MOVAX,DSEG
MOVDS,AX
LEABX,MSG1
MOVCX,3
S:
MOVAL,[BX]
ANDAL,11011111B;
将AL中的ASCII码的第5位置0,
;
变成大写字母。
MOV[BX],AL
INCBX
LOOPS
MOVAL,0
MOVAH,4CH
INT21H
CSEGENDS
3)程序的跟踪执行操作
在DOS下直接输入文件主名就可以执行文件了,有的程序会显示结果,可能执行后什么结果都没有,是因为程序中没有显示命令。
那么如何查看程序的运行结果呢?
程序执行过程的跟踪操作步骤如下:
(1)在DOS下输入:
DEBUG文件名.EXE
(2)在DEBUG提示符下输入U命令
(3)可以用T命令单步执行指令,执行到MOVAH,4CH时结束,也可以用G命令执行整个程序,输入:
G=B地址(如:
G=0000)
(4)用D命令查看程序执行后数据段的变化
输入:
DK地址:
0(如:
D1260:
0)
在显示的数据中,对照源程序或LST文件查看结果所在的偏移地址的内容。
4)编写调试下面的程序,用DEBUG查看数据段中的结果
(1)
,X,Y,W为字节类型变量,结果存于Z单元,写出数据段和代码段。
(2)X,Y为字节类型数,求
,写出完整的数据段和代码段,不用乘除指令。
1、修改成正确的代码;
obj》link》exe;
2、修改成正确的代码;
4、一丶
①初始化
②有符号数乘法imul(单操作数),被乘数在ax中,将(w-x)送入ax,Imul10,因为8bit*8bit,结果超过8bit,存于dx:
ax->
bx:
cx。
③有符号数相加add,并且两操作数位数要一致。
④用add加法指令,算出x+y。
⑤有符号数除法idiv(单操作数),当除数是8bit,被除数要16bit,所以被除数默认存于dx:
ax,除后商在ax,余数在dx.
⑥最后结果存在z变量中。
二丶
②把X存在AL中,使用add,使X,Y相加,存在AL中。
③乘8相当于左移3位,移动位数存于CX中。
乘完后存于AX中。
④把X存在BL中,使用SUB,使X,Y相减,存在BL中。
⑤乘2相当于左移1位。
乘完后存于BX中。
⑥然后SUB,AX,BX
⑦除16相当于右移4位,移动位数存于CX中。
⑧最后结果存在z变量中。
汇编好程序,保存txt中,运行masm生成lst文件,有错误就进行修改,修改后再链接文件生成obj文件,debug生成exe文件,然后g命令运行一次,最后d命令查看结果。
1、错误的代码
正确的
分步
2、d命令查看
当BX=0000时的AL,CX的变化情况:
当BX=0001时AL,CX的变化情况:
3、当BX=0002时AL,CX的变化情况
4、不用做
5、程序无误
调试出错
U命令
D命令
见调试过程中的末张图
学会使用debug,各种命令。
1、学习使用debug的命令;
2、使用debug命令在数据段中查看程序运行的结果;
3、利用debug运行简单的程序段。
福建农林大学