微机原理实验汇编语言指导书资料.docx
《微机原理实验汇编语言指导书资料.docx》由会员分享,可在线阅读,更多相关《微机原理实验汇编语言指导书资料.docx(24页珍藏版)》请在冰豆网上搜索。
微机原理实验汇编语言指导书资料
前言
《微机原理及接口技术》是工科计算机及相关专业学习微型计算机基本知识和应用技能的重要课程。
本课程帮助学生掌握微型计算机的硬件组成及使用;学会运用指令系统和汇编语言进行程序设计;熟悉各种类型的接口及其应用,树立起微型计算机体系结构的基本概念,为后继计算机课程的学习及应用打好基础。
实验教学是本课程的重要组成部分,对学生理解概念、进行程序设计及提高应用技能至关重要。
在指导书中,每一个实验均按照该课程实验大纲的要求编写,力求紧扣理论知识点、突出设计方法、明确设计思路,通过多种形式完成实验任务,最终引导学生有目的、有方向地完成实验任务,得出实验结果。
书中标(*)的实验可酌情选作。
由于作者水平有限,书中难免存在不足之处,敬请读者批评指正。
编者
2013年5月
目录
前言2
目录3
第一部分汇编语言程序实验
实验一显示程序实验1
一、实验目的1
二、实验所用设备1
三、实验内容1
四、实验步骤1
五、参考程序清单2
六、实验报告内容及要求3
实验二数据传送实验4
一、实验目的4
二、实验所用设备4
三、实验内容4
四、实验步骤5
五、实验报告内容及要求5
实验三数码转换程序实验6
一、实验目的6
二、实验所用设备6
三、实验内容6
四、实验步骤8
五、实验报告内容及要求9
实验四运算类程序实验10
一、实验目的10
二、实验所用设备10
三、实验内容10
四、实验步骤11
五、实验报告内容及要求11
实验五分支程序设计实验12
一、实验目的12
二、实验所用设备12
三、实验内容12
四、实验步骤12
五、实验报告内容及要求13
实验六循环程序设计实验14
一、实验目的14
二、实验所用设备14
三、实验内容14
四、实验步骤14
五、实验报告内容及要求15
实验七子程序设计实验*16
一、实验目的16
二、实验所用设备16
三、实验内容16
四、实验步骤18
五、实验报告内容及要求18
实验八综合程序设计实验*19
一、实验目的19
二、实验所用设备19
三、实验内容19
四、实验步骤19
五、实验报告内容及要求20
第二部分16位微机接口技术实验
。
。
。
附录一:
实验报告格式21
实验一显示程序实验
一、实验目的
1.掌握在PC机上以十六进制形式显示数据的方法;
2.掌握部分DOS功能调用使用方法;
3.熟悉汇编语言调试环境和TurboDebugger的使用。
二、实验所用设备
PC微机一台。
三、实验内容
一般来说,程序需要显示输出提示运行的状况和结果,有的还需要将数据区中的内容显示在屏幕上。
本实验要求将指定数据区的数据以十六进制数形式显示在屏幕上,并通过DOS功能调用完成一些提示信息的显示。
实验中可使用DOS功能调用(INT21H)。
(1)显示单个字符输出
入口:
AH=02H
调用参数:
DL=输出字符
(2)显示字符串
入口:
AH=09H
调用参数:
DS:
DX=串地址,’$’为结束字符
(3)键盘输入并回显
入口:
AH=01H
返回参数:
AL=输出字符
(4)返回DOS系统
入口:
AH=4CH
调用参数:
AL=返回码
四、实验步骤
1.运行轻松汇编软件,选择Edit菜单,根据实验内容的描述编写实验程序,本实验显示部分参考实验流程如图1-1示;
2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;
3.使用Run菜单中的Run,运行程序,观察运行结果;
4.使用Run菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;
5.更改数据区中的数据,考察程序的正确性。
图1-1显示程序实验流程图
五、参考程序清单
DATASEGMENT
MESDB'Showaashex:
',0AH,0DH,'$'
SDDB'a'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETMES;显示提示信息
MOVAH,09H
INT21H
MOVDI,OFFSETSD
MOVAL,DS:
[DI]
ANDAL,0F0H;取高4位
SHRAL,4
CMPAL,0AH;是否是A以上的数
JBC2
ADDAL,07H
C2:
ADDAL,30H
MOVDL,AL;显示字符
MOVAH,02H
INT21H
MOVAL,DS:
[DI]
ANDAL,0FH;取低4位
CMPAL,0AH
JBC3
ADDAL,07H
C3:
ADDAL,30H
MOVDL,AL;显示字符
MOVAH,02H
INT21H
MOVAX,4C00H;返回DOS
INT21H
CODEENDS
ENDSTART
六、实验报告内容及要求
写出程序调试过程及运行情况。
实验二数据传送实验
一、实验目的
1.熟悉汇编语言调试环境和TurboDebugger的使用;
2.掌握与数据有关的不同寻址方式。
二、实验所用设备
PC微机一台。
三、实验内容
将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。
参考实验程序:
DDATASEGMENT;定义源数据段
MSRDB"HELLO,WORLD!
$"
LENEQU$-MSR
DDATAENDS
EXDASEGMENT;定义附加数据段
MSDDBLENDUP(?
)
EXDAENDS
MYSTACKSEGMENTSTACK;定义堆栈段
DW20DUP(?
)
MYSTACKENDS
CODESEGMENT;定义代码段
ASSUMECS:
CODE,DS:
DDATA,ES:
EXDA
START:
MOVAX,DDATA
MOVDS,AX;装载数据段寄存器
MOVAX,EXDA
MOVES,AX;装载附加数据段寄存器
MOVSI,OFFSETMSR;设置SI
MOVDI,OFFSETMSD;设置DI
MOVCX,LEN
NEXT:
MOVAL,[SI];开始传输数据
MOVES:
[DI],AL
INCSI
INCDI
DECCX
JNZNEXT
PUSHES
POPDS;将附加段寄存器的段值赋给数据段寄存器
MOVDX,OFFSETMSD
MOVAH,9
INT21H
MOVAX,4C00H;利用DOS功能调用返回DOS状态
INT21H
CODEENDS
ENDSTART
将程序主体部分的寄存器间接寻址方式改为相对寻址方式,则如下所示:
MOVBX,0
MOVCX,LEN
NEXT:
MOVAL,MSR[BX]
MOVES:
MSD[BX],AL
INCBX
LOOPNEXT
四、实验步骤
1.运行轻松汇编软件,选择Edit菜单编写实验程序;
2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;
3.使用Run菜单中的Run,运行程序,观察运行结果;
4.使用Run菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;
5.更改数据区中的数据,考察程序的正确性。
五、实验报告内容及要求
写出程序调试过程及运行情况。
实验三数码转换程序实验
一、实验目的
掌握不同进制数及编码相互转换的程序设计方法。
二、实验所用设备
PC微机一台。
三、实验内容
计算机输入设备输入的信息一般是由ASCII码或BCD码表示的数据或字符,CPU用二进制数进行计算或其它信息处理,处理结果的输出又必须依照外设的要求变为ASCII码、BCD码或七段显示码等。
因此,在应用软件中,各类数制的转换和代码的转换是必不可少的。
计算机与外设间的数码转换关系如图3-1所示,数码对应关系如表3-1所示。
图3-1计算机与外设间的数码转换关系
1.将ASCII码表示的十进制数转换为二进制数
十进制数可以表示为:
Dn×10n+Dn-1×10n-1+…+D0×100
=Di×10i其中Di代表十进制数1、2、3…9、0。
上式可以转换为:
ΣDi×10i=((…(Dn×10+Dn-1)×10)+Dn-2)×10+…+D1)×10+D0
由上式可归纳十进制数转换为二进制的方法:
从十进制数的最高位Dn开始作乘10加次位的操作,依次类推,则可求出二进制数结果。
本实验要求将缓冲区中的一个五位十进制数00012的ASCII码转换成二进制数,并将转换结果按位显示在屏幕上。
转换过程的参考流程如图3-2所示。
表3-1数码转换对应关系
2.将十进制数的ASCII码转换为BCD码
本实验要求将键盘输入的一个五位十进制数54321的ASCII码存放入数据区中,转换为BCD码后,并将转换结果按位分别显示于屏幕上。
若输入的不是十进制数的ASCII码,则输出“FF”。
提示:
一字节ASCII码取其低四位即变为BCD码。
转换部分的实验流程参见3-3。
3.将十六进制数的ASCII码转换为十进制数
十六位二进制数的值域为0-65535,最大可转换为五位十进制数。
五位十进制数可表示为:
ND=D4×104+D3×103+D2×102+D1×10+D0
因此,将十六位二进制数转换为五位ASCII码表示的十进制数,就是求D1-D4,并将它们转化为ASCII码。
图3-2十进制ASCII转换为
二进制数参考流程
图3-3十进制ASCII转换为
BCD码参考流程
本实验要求将缓冲区中存放的000CH的ASCII码转换成十进制数,并将转换结果显示在屏幕上。
转换部分的实验流程参见图3-4。
4.BCD码转换为二进制码
本实验要求将四个二位十进制数的BCD码存放在某一内存单元中,转换出的二进制数码存入其后的内存单元中,转换结束,送屏幕显示。
转换部分的实验流程参见3-5。
四、实验步骤
1.运行轻松汇编软件,选择Edit菜单编写实验程序;
2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;
3.使用Run菜单中的Run,运行程序,观察运行结果;
4.使用Run菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;
5.更改数据区中的数据,考察程序的正确性。
图3-4将十六进制数的ASCII码转换为十进制数参考流程
图3-5BCD码转换为二进制码
参考流程
五、实验报告内容及要求
根据流程图编写程序并调试,写出程序调试过程及运行情况。
实验四运算类程序实验
一、实验目的
1.掌握运算类指令编程及调试方法;
2.掌握运算类指令对各状态标志位的影响及测试方法。
二、实验所用设备
PC微机一台。
三、实验内容
80x86指令系统提供了实现加、减、乘、除运算的基本指令,可对表4-1所示的数据类型进行算术运算。
表4-1数据类型算术运算表
1.二进制双精度加法运算
本实验要求计算X+Y=Z,将结果Z输出到屏幕,其中X=001565A0H,Y=0021B79EH。
实验利用累加器AX,先求低十六位和,并存入低址存储单元,后求高16位和,再存入高址存储单元。
由于低位和可能向高位有进位,因而高位字相加语句需用ADC指令,则低位相加有进位时,CF=1,高位字相加时,同时加上CF中的1。
在80386以上微机中可以直接使用32位寄存器和32位加法指令完成本实验的功能。
2.十进制数的BCD码减法运算
本实验要求计算X-Y=Z,其中,X、Y、Z为BCD码,其中X=0400H,Y=0102H。
3.乘法运算
本实验要求实现十进制数的乘法,被乘数和乘数均以BCD码形式存放于内存中,被乘数为54320H,乘数为3H,运算结束后,将乘积在屏幕上显示。
4.用减奇数开平方运算
80x86指令系统中有乘除法指令但没有开平方指令,因此,开平方运算是通过程序来实现的。
用减奇数法可求得近似平方根,获得平方根的整数部分。
我们知道,N个自然数中的奇数之和等于N2,即:
1+3+5=9=32
1+3+5+7=16=42
1+3+5+7+9+11+13+15=64=82
若要做S的开方运算,那麽就可以从S中逐次减去自然数中的奇数1,3,5,7…,一直进行到相减数为0或不够减下一个自然数的奇数为止,然后统计减去自然数的奇数个数,它就是S的近似平方根。
本实验要求利用减奇法计算0040H的开平方值,并将运算结果显示在屏幕上。
四、实验步骤
1.运行轻松汇编软件,选择Edit菜单编写实验程序;
2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;
3.使用Run菜单中的Run,运行程序,观察运行结果;
4.使用Run菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;
5.更改数据区中的数据,考察程序的正确性。
五、实验报告内容及要求
根据实验要求编写程序并调试,写出程序调试过程及运行情况。
实验五分支程序设计实验
一、实验目的
1.掌握分支程序的设计方法。
二、实验所用设备
PC微机一台。
三、实验内容
程序有顺序、循环、分支和子程序四种结构形式,分支结构的示意图如图5-1所示。
本实验要求通过求无符号字节序列中的最大值和最小值来反映分支程序的结构形式。
图5-1分支结构示意图
实验可以使用BH,BL作为暂存现行的最大值和最小值,且在程序的初始,将BH和BL初始化为首字节的内容,然后进入循环操作。
在循环操作中,依次从字节序列中逐个取出一个字节的内容与BH,BL进行比较,若取出的字节内容比BH的内容大或比BL中的内容小,则修改之。
当循环结束操作时,将BH,BL分别送屏幕显示。
参考实验流程如图5-2所示。
四、实验步骤
1.运行轻松汇编软件,选择Edit菜单编写实验程序,提供8字节的数据:
0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9H;
2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;
3.使用Run菜单中的Run,运行程序,观察运行结果;
4.更改数据区中的数据,考察程序的正确性。
五、实验报告内容及要求
根据实验要求编写程序并调试,写出程序调试过程及运行情况。
图5-2分支程序实验流程图
实验六循环程序设计实验
一、实验目的
掌握循环程序的设计方法。
二、实验所用设备
PC微机一台。
三、实验内容
本实验要求通过求某数据区内负数的个数来表现循环程序的结构形式。
要求实验程序在数据区中存放一组数据,为统计负数的个数,逐个判断区内的数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,即得到区内所包含负数的个数。
循环程序的结构示意如图6-1所示。
图6-1循环结构示意图
四、实验步骤
1.运行轻松汇编软件,选择Edit菜单编写实验程序,提供10字节的数据:
12H,88H,82H,89H,33H,90H,01H,10H,0BDH,01H;
2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;
3.使用Run菜单中的Run,运行程序,观察运行结果;
4.更改数据区中的数据,考察程序的正确性。
五、实验报告内容及要求
根据实验要求编写程序并调试,写出程序调试过程及运行情况。
实验七子程序设计实验*
一、实验目的
1.掌握子程序的定义调用方法;
2.掌握系统功能调用程序的使用和编写方法。
二、实验所用设备
PC微机一台。
三、实验内容
在汇编程序设计中,用户通常会将常用的具有特定功能的程序段编制成子程序使用。
一般过程定义伪操作的格式如下:
procedurenamePROCAttribute
…
procedurenameENDP
其中Attribute是指类型属性,可以是NEAR或FAR,调用程序和过程在同一个代码段中使用NEAR属性,不在同一个代码段中,使用FAR。
1.数据移动实验
本实验要求将指定数据区的数据搬移到另一个数据区,并通过子程序调用的方法将搬移的数据显示在屏幕上。
图7-1源数据块和目标数据块在存储器中的位置示意
源数据块和目标数据块在存储中的位置可能有三种情况,如图7-1所示。
对于两个数据块分离的情况,数据的传送从数据块的首地址开始,或者从数据块的末地址开始均可。
但对于有部分重叠的情况,则要加以分析,否则重叠部分会因搬移而遭到破坏。
所以搬移过程可以通过以下两个方式完成:
当源数据块首地址>目标块首址时,从数据块的首地址开始传送数据;当源数据块首地址<目标块首址时,从数据块的末地址开始传送数据。
2.数码转换及显示实验
有时当系统运行或者程序运行期间在遇到某些特殊情况时,需要计算机自动执行一组专门的例行程序来进行中断处理。
这段例程称为中断子程序。
中断分为内部中断和外部中断两类。
象除法错或者程序中为了作某些处理而设置的中断指令等属于内部中断。
外部中断则主要用来处理I/O设备与CPU之间的通信。
在汇编语言程序设计中使用系统功能调用程序,只需要通过MOV指令,将中断参数装到与此有关的寄存器中,然后用INT指令调用所需中断。
如果希望中断处理程序是用户自己编写的一段程序,则需要修改对应中断的中断处理程序入口。
微机系统中可以使用0-255共256个中断。
当80x86系统工作于实模式的时候,内存的000H—3FFH被用于作为中断向量表,向量表中包含了256个中断的中断子程序入口(中断向量地址),向量表内容如图7-2示。
图7-2中断向量表
本实验要求利用47H号中断将一组字符转换成十六进制数码,并在屏幕上显示出来。
四、实验步骤
1.运行轻松汇编软件,选择Edit菜单编写实验程序,对实验1,提供16字节的数据:
11H,22H,33H,44H,55H,66H,77H,88H,99H,0AAH,0BBH,0CCH,0DDH,0EEH,0FFH,00H;
2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;
3.使用Run菜单中的Run,运行程序,观察运行结果;
4.更改数据区中的数据,考察程序的正确性。
五、实验报告内容及要求
根据实验要求编写程序并调试,写出程序调试过程及运行情况。
实验八综合程序设计实验*
一、实验目的
1.掌握分支、循环、子程序调用的基本程序结构;
2.掌握16位寄存器、指令使用的基本方法;
3.学习综合程序的设计、编制及调试。
二、实验所用设备
PC微机一台。
三、实验内容
1.排序实验
编写一个程序,对存贮区中的一组字进行排序,并将排序结果显示在屏幕上。
在编写过程中,应使用16位寄存器,并且采用基址+变址+偏移的寻址方式。
2.用16位寄存器、指令、寻址方式实现数码转换及显示
将一组ASCII字符转换成十六进制数码,并在屏幕上显示出来。
要求使用16位寄存器、16位的指令和寻址方式。
如将字符串“Hello!
China!
”进行转换,应转换成:
48H、65H、6CH、6CH、6FH、21H、20H、43H、68H、69H、6EH、61H、21H。
四、实验步骤
1.运行轻松汇编软件,选择Edit菜单编写实验程序;
2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;
3.使用Run菜单中的Run,运行程序,观察运行结果;
4.更改数据区中的数据,考察程序的正确性。
五、实验报告内容及要求
根据实验要求编写程序并调试,写出程序调试过程及运行情况。
附录一:
实验报告格式
实验报告要求用A4纸,写明实验目的、实验内容,具体实验按要求写出程序清单、实验过程、实验过程中遇到的问题、解决方法及关于实验的思考。
实验名称
成绩
班级
姓名
学号
实验目的:
实验内容:
实验步骤:
实验结果及分析:
收获体会: