微机原理与应用实验指导书.docx
- 文档编号:7911995
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:58
- 大小:269.61KB
微机原理与应用实验指导书.docx
《微机原理与应用实验指导书.docx》由会员分享,可在线阅读,更多相关《微机原理与应用实验指导书.docx(58页珍藏版)》请在冰豆网上搜索。
微机原理与应用实验指导书
目录
第一篇汇编语言程序设计
实验一汇编语言上机操作—比较字符串----------------------1-1
实验二循环程序设计—建立学生名次表---------------1-5
实验三显示器界面设计—光标轨迹程序----------------1-8
实验四键盘界面设计—键盘输入程序------------------1-10
实验五算术程序设计—判断闰年程序----------------1-22
第二篇微机硬件实验系统
实验一简单I/O口扩展实验-------------------2-1
实验二8255并行口实验----------------------2-
实验三8253定时器/计数器接口实验-----------2-
实验四8250串口实验------------------------2-
实验五存储器扩展实验-----------------------2-
实验六8259中断控制器实验------------------2-
实验七基于定时中断的实时控制综合实验-----2-
附录1ASCII码表--------------------------3-1
附录2常用BIOS中断调用------------------3-2
附录3INT21HDOS系统功能调用------------3-5
附录4PCIBIOS中断调用INT1AH--------3-11
附录5汉字字符集表-----------------------3-13
附录6DEBUG主要命令--------------------3-21
第一篇汇编语言
实验一汇编语言上机操作—比较字符串
实验项目名称:
比较字符串
实验项目性质:
普通
所属课程名称:
微机原理与应用
实验计划学时:
2
一、实验目的
1、学习程序设计的基本方法和技能;
2、熟练掌握汇编语言设计、编写、调试和运行;
二、实验内容和要求
1、汇编语言上机操作方法
编写程序,比较两个字符串STRING1和STRING2所含字符是否相同,若相同则在屏幕上显示‘MATCH’,否则显示‘NOTMATCH’。
2、系统操作练习
三、实验主要仪器设备和材料
计算机
四、实验方法、步骤及结构测试
1、建立ASM文件
1)在Windows系统环境下,调用写字板编辑程序,建立汇编语言ASM源文件。
2)在Dos系统环境下,调用EDIT编辑器建立汇编语言ASM源文件。
;ProgramTitleGoesHere—Comparestring
;****************************************
Datasegment;definedatasegment
String1db‘Movethecursorbackward.’
String2db‘Movethecursorbackward.’
;
Mess1db‘Match.’,13,10,’$’
Mess1db‘Match.’,13,10,’$’
Dataends
;***************************************
Programsegment;definecodesegment
Mainprocfar
Assumecs:
program,ds:
data,es:
data
Start:
;startingexecutionaddress
Pushds;setupstackforreturn
Subax,ax
Pushax
Movax,data;datasegmentaddress
Movds,ax
MOVes,ax
;mainpartofprogramgoeshere
Leasi,string1
Leasi,string2
Cld
Movcx,25
Repzcmpsb
JzMATCH
Leadx,mess2
Jmpshortdisp
Match:
Leadx,mess1
Disp:
Movah,09
Int21h
Ret;returetoDOS
Mainendp;endofmainpartofprogram
Programends;endofcodesegment
Endstart;endassembly
写完后保存文件名为:
*.asm
2、用汇编程序MASM对源文件“*.asm”汇编产生目标文件*.obj。
1)在Windows环境,点击masm文件,输入*.asm的文件名。
2)在Dos环境,输入命令:
C:
\masm>masm*.asm↙
TheIBMPersonalComputerMACROAssembler
Version1.00(C)CopyrightIBMCorp1981
WarningSevere
ErrorError
10
如汇编过程出错则在屏幕上显示出错信息。
3、用连接程序Link产生可执行文件”*.exe”.
1)在Windows环境,点击Link文件,输入*.obj文件名。
2)在Dos环境,输入命令:
C:
\masm>link*.obj↙
IBM5550MultistationLinker2.00
(C)CopyrightIBMCorp1983
Warning:
NoSTACKsegmengt
Therewas1arrordetected
4、执行程序
1)在Windows环境,点击*.exe文件运行程序。
2)在Dos环境,输入命令:
C:
\masm>*.exe↙
此时在屏幕上可显示程序的运行结果。
屏幕显示:
Match(或NOTMATCH)
5、用DEBUG调试程序
①输入命令:
C:
\masm>debug*.exe↙
幕上显示提示符:
-
②-G↙(运行命令)
MATCH.
PROGRAMTERMINATEDNORMALLY
③-U(反汇编命令),屏幕上显示程序如示:
-U↙
19F3:
00001EPUSHDS
19F3:
00012BC0SUBAX,AX
19F3:
000350PUSHAX
19F3:
0004B8EE19MOVAX,19EE
19F3:
00078ED8MOVDS,AX
19F3:
00098EC0MOVES,AX
19F3:
000B8D360000LEASI,[0000]
19F3:
000F8D3E1900LEADI,[1900]
19F3:
0013FCCLD
19F3:
0014B91900MOVCX,0019
19F3:
0017F3REPZ
19F3:
0018A6CMPSB
19F3:
00197406JZ0021
19F3:
001B8D163B00LEADX,[003B]
19F3:
001FEB04JMP0025
-U
19F3:
00218D163200LEADX,[0032]
19F3:
0025B409MOVAH,09
19F3:
0027CD21INT21
19F3:
0029CBRETF
19F3:
002AFF7501
将断点设置在程序的主要部分运行以前,运行输入的程序为:
-G0B↙
AX=19EEBX=0000CX=007ADX=0000SP=FFFCBP=0000SI=0000DI=0000
DS=19EEES=19EESS=19EECS=19F3IP=000BNVUPDIPLZRNAPENC
19F3:
000B8D360000LEASI,[0000]DS:
0000=6F4D
根据其中指示的DS寄存器内容查看数据段的情况如下:
-D0↙
19EE:
00004D6F766520746865-20637572736F7220Movethecursor
19EE:
00106261636B77617264-2E4d6f7665207468backward.Moveth
19EE:
00206520637572736F72-206261636b776172ecursorbackwar
19EE:
0030642E4D617463682E-0d0a244E6F206D61d.Match…$Noma
19EE:
0040746368210D0A2400-0000000000000000tch!
..$.........
19EE:
00501E2BC050B8EE198E-D88EC08D3600008D.+@P8N..X.@.6...
19EE:
00603E1900FCB91900F3-A674068D163B00EB>..19..S&T…;.K
19EE:
0070048D163200B409CD-21CBFF7501405A22…2.4.M!
K.u.@Z’’
可用E命令修改数据区的字符串,操作如下:
-E29↙
19EE:
002962.6661.6F63.726B.7777.6161.7272.64
19EE:
003064.2E2E.20
再次用D命令查看修改结果:
-D0↙
19EE:
00004D6F766520746865-20637572736F7220Movethecursor
19EE:
00106261636B77617264-2E4d6f7665207468backward.Moveth
19EE:
00206520637572736F72-20666F7277617264ecursorforkward
19EE:
00302e204D617463682E-0d0a244E6F206D61.Match…$Noma
19EE:
0040746368210D0A2400-0000000000000000tch!
..$.........
19EE:
00501E2BC050B8EE198E-D88EC08D3600008D.+@P8N..X.@.6...
19EE:
00603E1900FCB91900F3-A674068D163B00EB>..19..S&T…;.K
19EE:
0070048D163200B409CD-21CBFF7501405A22…2.4.M!
K.u.@Z’’
用G命令运行程序,结果为:
-G↙
Nomatch!
Programterminatednormally
用Q命令退出程序:
-Q↙
至此,程序调试完毕。
(DEBUG命令详见附录2)
五、实验报告要求
分析程序功能,汇编语言的集成环境,调试程序过程中遇到的问题。
六、思考题
1、汇编语言的集成环境有几个主要环节?
2、将程序中的指令JZMATCH改为JNZMATCH,程序结果如何?
为什么?
3、将内存DATA1单元开始的0-15共16个数传送到DATA2单元开始的数据区中。
实验二建立学生名次表RANK
实验项目名称:
建立学生名次表RANK
实验项目性质:
普通
所属课程名称:
微机原理与应用
实验计划学时:
2
一、实验目的
1、学习循环程序的设计方法;
2、熟练掌握程序的调试方法;
二、实验内容和要求
本程序采用两重循环来实现,内层对应学生的名次计算,外层解决所有学生的名次;以GRADE为首地址的10个字保存学生的成绩,RANK为地址的10个字填入学生的名次。
本程序对应的寄存器分配情况说明如下:
AX:
存放当前被测学生的成绩;
BX:
存放当前被测学生的相对地址指针;
CX:
内循环计数值;
DX:
当前被测学生的名次计数值;
SI:
内循环测试时的地址指针;
DI:
外循环计数值;
三、实验主要仪器设备和材料
计算机一台
四、实验方法、步骤及结构测试
1、实验参考程序如下:
;programtitlegoeshere---rank
;***********************************
Datasegment;definedatasegment
Gratedw88,75,95,63,98,78,87,73,90,60
Rankdw10dup(?
)
Dataends
;************************************
Programsegment;definecodesegment
Mainprocfar
Assumecs:
program,ds:
data
Start:
Pushds;setupstackforreture
Subax,ax
Pushax
Movax,data
Movds,ax
Movdi,10
Movbx,0
Loop1:
Movax,grade[bx]
Movdx,0
Movcx,10
Leasi,grade
Next:
Cmpax,[si]
Jgno_count
Incdx
No_count:
Addsi,2
Loopnext
Movrank[bx],dx
Addbx,2
Decdi
Jneloop1
Ret
Mainendp
Programends
Endstart
2、程序框图
3、程序执行
C:
>debug*.exe↙
-U
19F3:
00001EPUSHDS
19F3:
00012BC0SUBAX,AX
19F3:
000350PUSHAX
19F3:
0004B8EE19MOVAX,19F0
19F3:
00078ED8MOVDS,AX
19F3:
0009BF0A00MOVDI,000A
19F3:
000CBB0000MOVBX,0000
19F3:
000F8B870000MOVAX,[BX+0000]
19F3:
0013BA0000MOVDX,0000
19F3:
0016B90A00MOVCX,000A
19F3:
00198D360000LEASI,[0000]
19F3:
001D3B04CMPAX,[SI]
19F3:
001F7F01JG0022
-U
19F3:
002142INCDX
19F3:
002283C602ADDSI,+02
19F3:
0025E2F6LOOP001D
19F3:
002789971400MOV[BX+0014],DX
19F3:
002B83C302ADDBX,+02
19F3:
002E4FDECDI
19F3:
002F75DEJNZ000F
19F3:
0031CBRETF
19F3:
00325APOPDX
19F3:
003322C2ANDAL,DL
19F3:
003550PUSHAX
-G09
AX=19F0BX=0000CX=0062DX=0000SP=FFFCBP=0000SI=0000DI=0000
DS=19F0ES=19E0SS=19F0CS=19F3IP=000BNVUPDIPLZRNAPENC
19F3:
0009BF0A00MOVDI,000A
-D0↙
19F0:
000058004B005F003F00-62004E0057004900X.K._.?
.b.N.V.I
19EE:
00105A003C0000000000-0000000000000000Z.<……………..
19EE:
0020000000000000000000000000000000.+@P8p..X?
........
19EE:
0030642E4D617463682E-0d0a244E6F206D61d.Match…$Noma
19EE:
0040746368210D0A2400-0000000000000000tch!
..$.........
19EE:
00501E2BC050B8EE198E-D88EC08D3600008D.+@P8N..X.@.6...
-G31
AX=003CBX=0014CX=0000DX=000ASP=FFFCBP=0000SI=0014DI=0000
DS=19F0ES=19E0SS=19F0CS=19F3IP=0031NVUPDIPLZRNAPENC
19F3:
0031CBRETF
-D0
19F0:
000058004B005F003F00-62004E0057004900X.K._.?
.b.N.V.I
19EE:
00105A003C0004000700-0200090001000600Z.<……………..
19EE:
00200500080003000A0000000000000000.+@P8p..X?
........
19EE:
0030642E4D617463682E-0d0a244E6F206D61d.Match…$Noma
19EE:
0040746368210D0A2400-0000000000000000tch!
..$.........
19EE:
00501E2BC050B8EE198E-D88EC08D3600008D.+@P8N..X.@.6...
五、实验报告要求
1、画出程序框图并分析双重循环的结构;
2、程序的结果为16进制,可否改为10进制?
六、思考题
1、调试程序时,当用户数据设置好后,程序应运行到什么位置才能查看结果?
2、程序的数据段定义为字单元,可否用字节来定义?
实验三光标轨迹
实验项目名称:
判断闰年程序
实验项目性质:
普通
所属课程名称:
微机原理与应用
实验计划学时:
2
一、实验目的
1、学习显示器I/O程序设计方法;
2、了解系统功能中断的设计方法;
3、了解键盘光标键是如何控制;
二、实验内容和要求
1、用键盘上的↑↓←→键控制光标的移动。
2、按行号*列号的形式给方块字符(ASCII码为0BDH)在屏幕上定位,按↑↓←→光标键使光标在屏幕上移动,光标的移动由方快字符组成的图形而在屏幕上保留下轨迹。
三、实验主要仪器设备和材料
计算机
四、实验方法、步骤及结构测试
1、源程序如下:
TITLEDRAW---Programtodrawonscreenwith
Read_cequ0
Key_romequ16h
Upequ48h
Downequ50h
Rightequ4dh
Liftequ4bh
Blockequ0dbh
Esc1equ1bh
Videosegmentat0b800h;defineextraseg
Wd_bufflabelword
V_buffdb25*80*2dup(?
)
Videoends
Pro_namsegment;definecodesegment
Mainprocfar
Assumecs:
pro_nam,es:
video
Start:
Pushds;setupstackforreturn
Subax,ax
Pushax
Movax,video
Moves,ax
Movcx,80*25;clearscreenbywritingzerostoit
Movbx,0
Clear:
Moves:
[wd_buff+bx],0700h
Incbx
Incbx
Loopclear
Movch,12d;setscreenpointertocenterofscreen
Movcl,40d
Get_char:
Movah,read_c
Intkey_rom
Cmpal,esc1
Jzexit
Moval,ah
Cmpal,up
Jnznot_up
Decch
Not_up
Cmpal,down
Jnznot_dowd
Incch
Not_down:
Cmpal,right
Jnznot_right
Inccl
Not_right:
Cmpal,left
Jnzlite_it
Deccl
Lite_it:
Moval,160d
Mulch
Movbl,cl
Rolbl,1
Movbh,0
Addbx,ax
Moval,block
Moves:
[v_buff+bx],al
Jmpget_char
Exit:
Ret
Mainendp
Pro_namends
Endstart
2、程序说明:
①该程序首先定义了一个附加段VIDEO,并用AT伪操作将该段的段地址指定为00B800H,0B800H是彩色显示器的显示缓冲区的入口地址。
②程序分为三段,第一段完成清除屏幕的工作,程序从偏移地址0开始,向显存的所有单元(25*80)写入数据0700H,其中07H为正常属性代码,00H为ASCII码;第二段程序用BIOSINT16H功能从键盘读取字符,然后根据按动光标控制键增减行号(CH)、列号(CL)。
第三段是在当前行号和列号的位置写入方块字符(0DBH),行号列号使用转换公式为:
(BX)=行号*80*2+列号*2
然后利用间接寻址方式直接将方块符写入存储单元
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 应用 实验 指导书