微机原理与嵌入式系统实验.docx
《微机原理与嵌入式系统实验.docx》由会员分享,可在线阅读,更多相关《微机原理与嵌入式系统实验.docx(16页珍藏版)》请在冰豆网上搜索。
微机原理与嵌入式系统实验
北京联合大学信息学院
微机原理与嵌入式系统报告
姓 名:
刘仡凡
班级学号:
2009080304429
专业:
通信工程
指导教师:
刘瑞祥
2011年11月18日
实验一DOS环境下的汇编语言编程环境使用(基础与验证型)
一、实验要求和目的
1、掌握汇编语言程序设计的基本方法和技能;
2、熟练掌握使用全屏幕编辑程序EDIT编辑汇编语言源程序;
3、熟练掌握宏汇编程序MASM的使用;
4、熟练掌握连接程序LINK的使用。
二、软硬件环境
1、硬件环境:
微机CPU486以上,500MB以上硬盘,32M以上内存;
2、软件环境:
装有MASM5.0、DEBUG、LINK、EDIT、CREF.EXE和EXR2BIN.EXE等应用程序。
三、实验内容与步骤
1、实验内容
编写程序,在屏幕上显示“HelloWorld!
”,该源程序取名为hello.asm。
2、实验步骤
汇编语言程序设计上机过程如图1.1所示。
图1.1汇编语言程序上机过程
(一)用编辑程序EDIT建立汇编语言源程序文件(ASM文件)
在Windows2000或者在WindowsXP环境下鼠标单击“开始”→“运行”,在“运行”中输入“CMD”进入DOS模式,运行EDIT软件,例如:
C>EDIThello.ASM
进入EDIT的程序编辑画面时,输入汇编语言源程序如下:
DATASEGMENT
MSGDB'HelloWorld!
',0DH,0AH,'$';定义数据段,并初始化待显示的字符串
DATAENDS
STACKSEGMENT'stack'
DB100DUP(0);定义堆栈段
STACKENDS
CODESEGMENT
ASSUMEDS:
DATA,SS:
STACK,CS:
CODE;由ASSUM伪指令定义各段寄存器的内容
START:
MOVAX,DATA
MOVDS,AX
LEADX,MSG
MOVAH,9;调用dos功能,显示字符串
INT21H
movah,4ch;返回dos状态
int21h
CODEENDS
ENDSTART
(二)用汇编程序MASM将ASM文件汇编成目标程序文件(OBJ文件)
当源程序建立以后,仍以hello.asm程序为例,我们用汇编程序MASM对hello.asm源程序文件进行汇编,以便产生机器码的目标程序文件hello.obj,其操作步骤如下:
C>MASMhello.asm
Microsoft(R)MacroAssemblerVersion5.00
Copyright(C)MicrosoftCorp1981–1985,1987.Allrightsreserved.
Objectfilename[ABC.OBJ]:
Sourcelisting[NUL.LST]:
Cross-reference[NUL.CRF]:
50674+450574Bytessymbolspacefree
0WarningErrors
0SevereErrors
(三)用连接程序LINK生成可执行程序文件(EXE文件)
经汇编后产生的二进制的目标程序文件(OBJ文件)并不是可执行程序文件(EXE文件),必须经连接以后,才能成为可执行文件。
连接程序并不是专为汇编语言程序设计的。
如果一个程序是由若干个模块组成的,也可通过连接程序LINK把它们连接在一起。
这些模块可以是汇编程序产生的目标文件,也可以是高级语言编译程序产生的目标文件。
连接过程如下:
C>LINKhello.obj
Microsoft(R)OverlayLinkerVersion3.60
Copyright(C)MicrosoftCorp1983-1987.Allrightsreserved.
RunFile[ABC.EXE]:
ListFile[NUL.MAP]:
Libraries[.LIB]:
(四)程序的执行
当我们建立了可执行文件hello.EXE后,就可直接在DOS下执行该程序:
C>hello.exe或者hello
从而显示HelloWorld!
的结果
四、实验要求与提示
1、实验要求
(1)掌握汇编语言程序设计上机过程;
汇编语言上机操作中,不同于windows操作系统,需要进入“命令提示符”界面,通过命令代码进行实际操作。
(2)回答思考问题;
(3)记录实验结果。
练习通过“debug”调试程序,如图:
六、思考与练习以及测评标准
(1)汇编过程中MASMhello和MASMhello.ASM的结果是否一致。
“masmhello”编译对象没有文件后缀,而“masmhello.asm”意为编译“hello.asm”文件;
(2)连接过程中LINKhello和LINKhello.OBJ的结果是否一致。
“linkhello”编译对象没有文件后缀,而“linkhello.obj”将会把“hello.obj”打包成可执行文件,即:
hello.exe;
(3)使用Word如何录入汇编语言源程序。
存档时,后缀改用“.asm”;
实验二Debug的使用(基础与验证型)
一、实验要求和目的
熟练掌握动态调试程序DEBUG的使用;
二、软硬件环境
1、硬件环境:
微机CPU486以上,500MB以上硬盘,32M以上内存;
2、软件环境:
装有MASM5.0、Debug、LINK、EDIT、CREF.EXE和EXR2BIN.EXE等应用程序。
三、实验内容与步骤
1、实验内容
(1) 进入和退出Debug程序
(2) 学会Debug中的D命令、R命令、T命令、G命令、U命、Q命令等的使用。
(3) 利用Debug,验证程序中指令的功能和结果。
(4)使用Debug调试程序调试汇编程序。
2、实验步骤
(1) 在DOS提示符下,进入Debug程序。
(2) 详细记录每一步所用的命令,以及查看结果的方法和具体结果。
(3)求从1开始连续50个奇数之和,并将结果存放在名字为SUM的字存储单元中。
已汇编、连结生成了可执行文件test1.EXE,存放在d:
\MASM目录下。
请使用Debug对其进行调试。
调试过程:
DATASEGMENT;定义数据段
SUMDW0;定义变量并赋初值
DATAENDS
STACKSEGMENTSTACK;定义堆栈段
DB200DUP(0)
STACKENDS
CODESEGMENT;定义代码段
ASSUMEDS:
DATA,SS:
STACK,CS:
CODE;由ASSUM伪指令定义各段寄存器的内容
START:
MOVAX,DATA
MOVDS,AX
MOVCX,5;累加次数
MOVAX,0;存放累加和
MOVBX,1
NEXT:
ADDAX,BX
INCBX
INCBX
DECCX
JNENEXT
MOVSUM,AX;存放最终累加结果
MOVAH,4CH
INT21H;返回dos状态
CODEENDS
ENDSTART
1进入Debug并装入可执行文件test1.EXE
D:
\MASM>Debugtest1.EXE
-
②观察寄存器初始状态
-R
注:
(1)以上显示的寄存器值,可能和你的电脑显示的不一样。
(2)Debug中默认的进制是十六进制。
③观察数据段中相应位置的值
-D数据段:
偏移地址
使用U命令反汇编
-U从程序存放的位置开始
使用T命令进行单步执行观察结果
使用G命令执行
-G地址(程序终止的偏移地址处)
四、实验要求与提示
1、实验要求
(1)熟练掌握Debug的命令;
(2)熟练掌握使用Debug调试汇编程序;
(3)回答思考问题;
(4)记录实验结果。
2、实验提示
一般使用Debug调试汇编程序的步筹如下:
(1)调用DEBUG,装入用户程序
(2)观察寄存器初始状态
(3)以单步工作方式开始运行程序
(4)观察用户程序数据段初始内容
(5)连续工作方式运行程序
五、思考与练习以及测评标准
(1)如何启动和退出Debug程序。
(2)整理每个Debug命令使用的方法,实际示例及执行结果。
(3) 启动Debug后,要装入某一个.EXE文件,应通过什么方法实现?
实验三分支程序设计
知识提要:
本部分内容主要对分支程序加以介绍,其知识要点:
1.无条件转移指令JMP
无条件转移指令JMP是使程序无条件转移至目标处,又分为段内转移、段间转移。
2.条件转移指令JXX
条件转移指令可分为三大类:
1)简单条件转移指令指令。
根据单个标志位的状态判断转移条件。
标志位
指令
转移条件
意义
CF
JC
CF=1
有进位/借位
JNC
CF=0
无进位/借位
ZF
JE/JZ
ZF=1
相等/等于0
JNE/JNZ
ZF=0
不相等/不等于0
SF
JS
SF=1
是负数
JNS
SF=0
是正数
OF
JO
OF=1
有溢出
JNO
OF=0
无溢出
PF
JP/JPE
PF=1
有偶数个1
JNP/JPO
PF=0
有奇数个1
2)无符号数条件转移指令。
假设在条件转移指令前使用比较指令,比较两个无符号数A,B,指令进行的的操作是A-B,其转移指令如下:
指令
转移条件
意义
JA/JNBE
CF=0ANDZF=0
A>B
JAE/JNB
CF=0ORZF=1
A>=B
JB/JNAE
CF=1ANDZF=0
A
JBE/JNA
CF=1ORZF=1
A<=B
3)带符号数条件转移指令。
指令
转移条件
意义
JG/JNLE
SF=OFANDZF=0
A>B
JGE/JNL
SF=OFORZF=1
A>=B
JL/JNGE
SFOFANDZF=0
A
JLE/JNG
SFOFORZF=1
A<=B
一、实验要求和目的
1.熟悉汇编语言程序设计结构;
2.熟悉汇编语言分支程序基本指令的使用方法;
3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法。
二、软硬件环境
1.硬件环境:
微机CPU486以上,500MB以上硬盘,32M以上内存;
2.软件环境:
装有MASM5.0、DEBUG、LINK和EDIT等应用程序。
三、实验内容与步骤
1.实验内容
(1)编写计算下面函数值的程序:
设输入数据为X、输出数据Y,且皆为字节变量,使用Debug查看X、Y两个变量的数据
(2)以ARRAY为首地址的内存单元中,存放若干个8位的带符号数,统计数组中大于等于0的数的个数,并将结果存入RESULT字节单元中。
2.实验步骤
(1)编写程序
(2)对程序进行debug调试,观察中间结果
四、实验要求
1.实验要求
(1)画出各程序流程图;
(2)列出程序清单,加上适量注释;
datasegment
xxdw12
yydw?
dataends
stacksegmentstack'stack'
db100hdup(?
)
stackends
codesegment
assumecs:
code,ds:
data,ss:
stack
start:
movax,data
movds,ax
movax,xx将xx转移给ax
cmpax,0x与0比较
jgebigprx大于等于0,转bigpr
movyy,0ffffh
jmpexit
bigpr:
jeequprx=0,转equpr
movyy,1
jmpexit
equpr:
movyy,0
exit:
movax,4ch
int21h
codeends
endstart
(3)记录实验结果。
五、实验的收获和体会