汇编语言实验指导书.docx
- 文档编号:6249769
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:38
- 大小:229.83KB
汇编语言实验指导书.docx
《汇编语言实验指导书.docx》由会员分享,可在线阅读,更多相关《汇编语言实验指导书.docx(38页珍藏版)》请在冰豆网上搜索。
汇编语言实验指导书
微机原理与接口技术实验指导书
容文杰杨俊华编写
河北师范大学职业技术学院电子系
目录
实验目的与要求………………………………….........………...1
实验一汇编语言上机操作…...……………………......….....2
实验二循环程序设计实验...………………………….…......9
实验三TDN86/51教学系统认识实验.........................…....…11
实验四8259中断控制器应用实验...…………………..........14
实验五8253定时/计数器应用实验...………………....……23
实验六8255并行接口应用实验...…………………..........…31
附录一DEBUG命令及操作..................................…………....35
附录二系统编程信息.…………………………….................37
实验目的与要求
一、实验目的
微机原理实验共安排了6个实验内容。
其目的是使学生理解8086CPU系统的工作原理。
熟悉8086指令系统和常用接口芯片的工作原理及使用方法。
掌握汇编语言程序设计方法和常用系统功能调用的使用方法,并能利用DEDUG调试工具来调试汇编语言程序。
能够利用实验室中所提供的硬件环境搭建硬件控制电路,并能完成相应的控制功能和编制有关的控制程序。
为学生从事计算机研究与应用工作打下一个坚实的基础。
二、实验要求
1.实验前要预习,做好充分准备,包括了解相应接口芯片的工作原理和使用方法,分析或编制源程序清单,了解实验步骤和调试方法等。
2.要熟悉教学实验设备的使用方法。
在实验过程中,要注意多观察,有意识地培养自己发现问题和解决问题的能力。
3.实验完成后,必须由实验指导教师检查运行结果,经教师确认后才算完成。
4.每个实验完成后,应写出实验报告。
实验报告内容应包括:
(1)实验目的;
(2)实验设备;
(3)实验内容及步骤;
(4)观察到的现象及结果分析;
(5)实验中遇到的问题及解决办法;
(6)实验的心得体会等。
5.实验时要遵守实验室的规章制度,爱护实验设备。
6.实验结束后,要将实验设备和实验材料收拾好,并经指导教师检查后方可离开。
实验一汇编语言上机操作
一、实验目的
掌握汇编语言程序编辑、汇编、连接、运行以及利用DEBUG调试程序的方法。
二、实验设备
PC机及相应的软件。
三、实验内容及步骤
1、编辑一个指定的汇编语言源程序,并对其进行汇编、连接和运行。
2、利用DEBUG进行程序调试,掌握常用命令的使用方法,观察运行结果。
3、汇编语言上机操作,见图1-1汇编语言上机操作流程。
上机操作过程:
开始输入cmd确认后显示:
C:
\Documentsandsetting\Administrator>-
输入cdc:
\masm后显示:
c:
\masm>-
c:
\masm>EDITABC.asm
c:
\masm>MASMABC;
若有语法错,回EDIT下改该程序
c:
\masm>LINKABC;
若有错,回EDIT下改程序
c:
\masm>ABC
若运行结果错,回EDIT下改程序
或在DEBUG下调试,找原因。
c:
\masm>DEBUGABC.exe
图1-1汇编语言上机操作流程
汇编语言程序举例
例1:
将BL寄存器的内容按二进制形式显示出来。
设:
(BL)=01010011B
分析:
采用2号功能调用,分别输出3031303130303131
显示:
01010011
参考程序:
CODESEGMENT
ASSUMECS:
CODE
START:
MOVCX,8;显示字符个数为8
MOVBL,53H
NEXT:
SHLBL,1;将显示位移至CF中
JCONE;CF=1?
MOVDL,30H;CF=0,将0的ASCII放在DL中
JMPEXIT
ONE:
MOVDL,31H;CF=1,将1的ASCII放在DL中
EXIT:
MOVAH,2
INT21H;调用DOS功能显示
DECCX;循环次数减1
JNZNEXT;判断是否结束
MOVAH,4CH;返回DOS
INT21H
CODEENDS
ENDSTART
上机操作:
c:
\masm>EDITShowBL.asm;编辑源程序
c:
\masm>MASMShowBL;汇编成ShowBL.obj
Microsoft(R)MacroAssemblerVersion5.10
Copyright(C)MicrosoftCorp1981,1988.Allrightsreserved.
48912+447243Bytessymbolspacefree
0WarningErrors
0SevereErrors
c:
\masm>LINKShowBL;连接成ShowBL.exe
Microsoft(R)OverlayLinkerVersion3.61
Copyright(C)MicrosoftCorp1983-1987.Allrightsreserved.
LINK:
warningL4021:
nostacksegment
c:
\masm>ShowBL;装载并执行ShowBL.exe
01010011;屏幕显示
c:
\masm>-
在DEBUG下查看ShowBL.exe的装入情况:
c:
\masm>DEBUGShowBL.exe
-R;查看当前寄存器内容
AX=0000BX=0000CX=001BDX=0000SP=0000BP=0000SI=0000DI=0000
DS=0B51ES=0B51SS=0B61CS=0B61IP=0000NVUPEIPLNZNAPONC
B353MOVBL,53
-UCS:
0;查看程序
0B61:
0000B353MOVBL,53
0B61:
0002B90800MOVCX,0008
0B61:
0005D0E3SHLBL,1
0B61:
00077205JB000E
…….
0B61:
0017B44CMOVAH,4C
0B61:
0019CD21INT21
…….
-G;执行程序
01010011
Programterminatednormally
-
例2:
将某段中的字符串“Hello!
”传送到另一段中。
编写完整的汇编语言程序,完成内存数据块传送功能。
参考程序:
AASEGMENT;数据段1
XXDB‘Hello!
’;定义源串
AAENDS
BBSEGMENT;数据段2
YYDB6dup(?
);定义目的缓冲区
BBENDS
CCSEGMENT;代码段
ASSUMECS:
CC,DS:
AA,ES:
BB;指示程序中标号,变量所在段
START:
CLD;设置传送方向
MOVAX,AA;DS:
SI←源串首地址
MOVDS,AX
LEASI,XX
MOVAX,SEGYY;ES:
DI←目的首地址
MOVES,AX
MOVDI,OFFSETYY
MOVCX,6;CX←串的长度
REPMOVSB;串传送
MOVAH,4CH;调用4CH系统功能,返回DOS
INT21H
CCENDS
ENDSTART;指示程序结束和程序入口
c:
\masm>EDIThello.asm;编辑源程序
c:
\masm>MASMhello;;汇编源程序
Microsoft(R)MacroAssemblerVersion5.10
Copyright(C)MicrosoftCorp1981,1988.Allrightsreserved.
49860+421241Bytessymbolspacefree
0WarningErrors
0SevereErrors
c:
\masm>LINKhello;连接程序
Microsoft(R)OverlayLinkerVersion3.61
Copyright(C)MicrosoftCorp1983-1987.Allrightsreserved.
LINK:
warningL4021:
nostacksegment
c:
\masm>hello;执行程序
c:
\masm>-
c:
\masm>DEBUGhello.exe;利用DEBUG查看结果
-U;查看程序代码
CLD
MOVAX,AA
MOVDS,AX
LEASI,XX
MOVAX,SEGYY
MOVES,AX
MOVDI,OFFSETYY
MOVCX,6
REPMOVSB
MOVAH,4CH
INT21H
129F:
0000FCCLD
129F:
0001B89D12MOVAX,129D
129F:
00048ED8MOVDS,AX
129F:
00068D360000LEASI,[0000]
129F:
000AB89E12MOVAX,129E
129F:
000D8EC0MOVES,AX
129F:
000FBF0000MOVDI,0000
129F:
0012B90600MOVCX,0006
129F:
0015F3REPZ
129F:
0016A4MOVSB
129F:
0017B44CMOVAH,4C
129F:
0019CD21INT21
对应的源程序见文本框中所示。
-D129D:
0L20;执行程序前,查看源串内容
129D:
000048656C6C6F210000-0000000000000000Hello!
.......
129D:
00100000000000000000-0000000000000000................
-D129E:
0L20;执行程序前,查看目的串
129E:
00000000000000000000-0000000000000000..................
129E:
0010FCB89D128ED88D36-0000B89E128EC0BF.......6.......
-
-G;执行程序
Programterminatednormally
-D129D:
0L50;从源串重新查看
129D:
000048656C6C6F210000-0000000000000000Hello!
.........
129D:
001048656C6C6F210000-0000000000000000Hello!
.......
129D:
0020FCB89D128ED88D36-0000B89E128EC0BF.....6......
129D:
00300000B90600F3A4B4-4CCD2109E8080003......L.!
......
129D:
0040F1E803003C0DC3AC-E8ECF875043C3B75...<...u.<;u
-
AASEGMENT
XXDB'Hello!
’
AAENDS
BBSEGMENT
YYDB6DUP(?
)
BBENDS
CCSEGMENT
ASSUMECS:
CC,DS:
AA,ES:
BB
START:
CLD
MOVAX,AA
MOVDS,AX
LEASI,XX
MOVAX,SEGYY
MOVES,AX
MOVDI,OFFSETYY
MOVCX,6
REPMOVSB
MOVAH,4CH
INT21H
CCENDS
ENDstart
-U;查看程序代码
129F:
0000FCCLD
129F:
0001B89D12MOVAX,129D
129F:
00048ED8MOVDS,AX
129F:
00068D360000LEASI,[0000]
129F:
000AB89E12MOVAX,129E
129F:
000D8EC0MOVES,AX
129F:
000FBF0000MOVDI,0000
129F:
0012B90600MOVCX,0006
129F:
0015F3REPZ
129F:
0016A4MOVSB
129F:
0017B44CMOVAH,4C
129F:
0019CD21INT21H
对应的源程序见文本框中所示。
实验二循环程序设计实验
一、实验目的
加深对循环程序结构的理解,掌握循环结构程序设计的方法,熟练汇编语言程序上机调试的方法和过程。
二、实验设备
PC机及相应的软件。
三、实验内容及步骤
1、编写一个求某数据区内负数个数的汇编语言源程序。
要求:
在数据区定义若干个字节数据,在数据之后定义一个字单元存放你输入的数据个数,在数据个数之后的单元存放结果。
按要求编写汇编语言源程序,并对其进行上机调试,观察运行结果并记录。
参考程序:
DATASEGMENT
DAT1DB61H,12H,78H,9AH,81H,0D6H,00H,56H,......
NUMDW$-DAT1
RESULTDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVSI,OFFSETDAT1
MOVCX,NUM
MOVBL,0
LP1:
MOVAL,[SI]
TESTAL,80H
JELP2
INCBL
LP2:
INCSI
LOOPLP1
MOVRESULT,BL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
2、修改上述源程序,使其能分别求出数据区中的正数、负数和零的个数。
并将结果存放在数据个数后面连续的三个单元。
写出源程序并对其进行上机调试,观察运行结果并记录。
实验三TDN86/51教学系统认识实验
一、实验目的
掌握TDN86/51教学系统的基本操作。
二、实验设备
TDN86/51教学系统实验箱一台。
三、实验内容及步骤
1、系统认识实验
实验步骤:
(1)使用串行通讯电缆将实验系统与PC机相连。
(2)将位于线路板右下角的系统状态选择开关拨至86档,开启实验系统。
(3)双击PC机桌面上的WMD86快捷方式图标,进入窗口操作界面。
选择对应的串行口号。
(4)鼠标点击文件下拉菜单的编辑进入编辑状态。
输入并保存源程序,扩展名为*.ASM。
参考程序:
STACKSEGMENTSTACK
DW64DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVDI,3500H
MOVCX,0010H
MOVAX,0000H
SAHF
A1:
MOV[DI],AL
INCDI
INCAX
DAA
LOOPA1
A2:
JMPA2
CODEENDS
ENDSTART
(5)对源程序进行汇编、连接,检查无误后,将可执行文件*.EXE装入实验系统。
系统装载后提示起始地址为0000:
2000。
(6)装载完毕后使用U0000:
2000命令进行反汇编,检查程序是否正确装入。
发现程序有错误或需要调整时,可用A命令修改。
(7)分别使用T命令单步运行;用G=0000:
2000命令连续运行;用B命令设置断点和GB=0000:
2000命令带断点运行。
用D命令查看存储单元内容;用E命令修改存储单元内容。
2、系统操作练习
将内存3500H单元开始的0-15共16个数传送到3600H单元开始的存储区中。
参考程序:
STACKSEGMENTSTACK
DW64DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVSI,3500H
MOVDI,3600H
MOVCX,0008H
A1:
MOVAX,[SI]
MOV[DI],AX
INCSI
INCSI
INCDI
INCDI
DECCX
JNZA1
A2:
JMPA2
CODEENDS
ENDSTART
实验步骤:
(1)编辑程序并检查无误后,经汇编、连接后装入系统。
(2)用E3500命令在3500-3510单元中分别装入00、01、02……数据。
(3)用G=0000:
2000命令运行以上程序,按实验系统的复位键返回监控状态。
(4)用D3600命令显示结果。
实验四8259中断控制器应用实验
一、实验目的
1、掌握8259可编程中断控制器的应用编程。
2、掌握8259级连方式的使用方法。
3、熟悉在系统的实验单元上连接实验电路。
二、实验设备
1、TDN86/51教学实验系统一台。
2、连接导线(排线)若干。
三、实验内容及步骤
1、8259应用实验
(1)
实验内容:
利用系统的开关KK2产生中断请求信号,接到8259的IRQ7。
8259每次响应IRQ7的中断时,显示一个字符“7”,中断10次后停止。
实验线路:
参考程序:
STACKEGMENTSTACK
DW4DUP(?
)
STACKENDS
CODEGMENT
ASSUMECS:
CODE
START:
PUSHDS;保存数据段
MOVAX,0000H
MOVDS,AX
MOVAX,OFFSETIRQ7;取中断程序入口地址
ADDAX,2000H;加载时IP=2000H
MOVSI,003CH;填8259中断7的中断矢量
MOV[SI],AX;写偏移地址
MOVAX,0000H
MOVSI,003EH
MOV[SI],AX;写段地址
CLI
POPDS
INAL,21H;读8259中断屏蔽字
ANDAL,7FH;开放8259中断7
OUT21H,AL
MOVCX,000AH
A1:
CMPCX,0000H
JNZA2
INAL,21H;读8259中断屏蔽字
ORAL,80H;关8259中断7
OUT21H,AL
STI
HLT
A2:
STI
JMPA1
IRQ7:
MOVAX,0137H;中断程序入口
INT10H
MOVAX,0120H;产生空格
INT10H
DECCX
MOVAL,20H;发中断结束命令
OUT20H,AL
CLI
IRET
CODEENDS
ENDSTART
实验步骤:
(1)接线:
8259的IRQ7连接开关KK2。
(2)编辑程序并检查无误后,经汇编、连接后装入系统。
(3)G=0000:
2000运行程序,按动开关KK2,观察屏幕的显示情况。
结果:
按动开关KK2,屏幕上以字符“7”来响应,直到按动开关KK210次后系统处于停机状态。
系统复位后返回监控状态。
2、8259应用实验
(2)
实验内容:
利用系统的开关KK1和KK2产生中断请求信号,分别接到8259的IRQ6和IRQ7。
当无中断请求时执行主程序,延时显示“main”,当有中断请求时则执行其中断服务程序,显示对应的中断号“6”或“7”;在执行低级中断服务程序中允许再响应高级的中断。
试验线路:
参考程序:
STACKSEGMENTSTACK;定义堆栈段
DW64DUP(?
)
STACKENDS
DATASEGMENT;定义数据段
TABLEDB4DH,41H,49H,4EH,20H,00H
DATAENDS
CODESEGMENT;定义代码段
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA;主程序开始
MOVDS,AX
PUSHDS
MOVAX,0000H
MOVDS,AX
MOVAX,OFFSETIRQ6;取中断程序入口地址
ADDAX,2000H;加载时IP=2000H
MOVSI,0038H;填8259中断6的中断矢量
MOV[SI],AX;写偏移地址
MOVAX,0000H
MOVSI,003AH
MOV[SI],AX;写段地址
MOVAX,OFFSETIRQ7;取中断程序入口地址
ADDAX,2000H;加载时IP=2000H
MOVSI,003CH;填8259中断7的中断矢量
MOV[SI],AX;写偏移地址
MOVAX,0000H
MOVSI,003EH
MOV[SI],AX;写段地址
POPDS
MOVAL,13H;ICW1
OUT20H,AL
MOVAL,08H;ICW2
OUT21H,AL
MOVAL,09H;ICW4
OUT21H,AL
MOVAL,3DH;开放8259中断6、7、1
OUT21H,AL
STI
A1:
MOVCX,0007H
MOVAX,010DH
INT10H;回车换行
A2:
MOVAH,06H
MOVBX,OFFSETTABLE;取数据段中ASCII码存放地址
INT10H;显示字符串“MAIN”
CALLDALLY;调用延时子程序
LOOPA2
JMPA1;到7次换行
IRQ6:
STI;8259中断6程序入口
CALLDALLY
MOVAX,0136H;显示“6”
INT10H
MOVAL,20H;显示空格
OUT20H,AL
IRET;中断返回
IRQ7:
STI;8259中断7程序入口
CALLDALLY
MOVAX,0137H;显示“7”
INT10H
MOVAL,20H;显示空格
OUT20H,AL
IRET;中断返回
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 实验 指导书