测控12微机原理实验16.docx
- 文档编号:7380132
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:18
- 大小:38.63KB
测控12微机原理实验16.docx
《测控12微机原理实验16.docx》由会员分享,可在线阅读,更多相关《测控12微机原理实验16.docx(18页珍藏版)》请在冰点文库上搜索。
测控12微机原理实验16
测控12-1微机原理实验
简介:
本实验课程的安排与“微机原理”课程讲授紧密结合,是该课程的延伸。
旨在加深对课堂教学内容的理解,打下微型计算机应用方面坚实基础,培养学生独立分析问题和软硬件开发能力。
要求运用所学到的原理和编程技术,在计算机上独立编写程序,在Pentium机的实模式下进行汇编、链接和调试通过,深化理解所学内容。
通过实际操作,掌握方法、巩固知识、提高能力。
说明:
1.TASM5是微机上机实验或作业的工具,请大家保存在硬盘根目录下,文件夹用TASM命名为佳。
2.请仔细阅读“TASM使用方法”。
3.自己的实验程序用英文命名,不要超过8个字符,建议另存在一个文件夹中,该文件夹最好直接在根目录下,层次不要太深。
4.带“*”的为提高题。
5.Debug命令参见附录一。
实验1(2学时)
简单运算实验
[目的]熟悉DEBUG的操作命令,练习用简单的指令编写完整的程序段,并运行观察指令执行结果。
[设计要求]
1.在DEBUG调试程序下,在A命令下编写程序段完成两个字节BCD码相加。
要求第一个BCD码存放在1000H和1001号单元。
第二个BCD码存放在2000H和2001号单元。
相加结果和存放在2003H、2004H、2005H单元。
2.用T命令单步执行指令。
3.观察有关寄存器、存储单元和FLAGS的改变。
实验2(2学时)
求最大值并显示结果
[目的]熟悉将运算结果显示在屏幕上的功能。
掌握简单循环程序的控制。
[设计要求]
1.在内存缓冲区内存入10个有符号的字节整数(在数据段变量定义时存入),编一程序将其中最大的数找出来存入MAX单元。
2.将MAX单元的最大数显示在屏幕上。
实验3(2学时)
人机对话
[目的]学习和熟悉DOS功能调用。
[设计要求]
1.程序执行后,首先询问:
What’syourname?
2.要求用户键入回答,例如输入:
lily。
3.再次询问:
Whichclassareyouin?
4.要求用户再次键入回答,例如输入:
CK09-12。
5.回车换行。
6.显示:
Yournameislily,andyourclassisCK09-12.confirm(y/n)。
7.如果回答y,退出程序;否则,返回1。
[设计思路]
1.程序通过Dos的9号功能调用显示字符串。
2.通过调用Dos的0A号功能显示和接收输入的字符串。
3.单个控制键可通过调用Dos的2号功能来完成。
4.接收单个字符可调用Dos的1号功能来完成。
5.注意接收完字符串后,加入串结束符。
实验4(2学时)
统计、求和与*排序
[目的]熟悉循环和子程序调用的编程方法
[设计要求]
1.从键盘随机输入十个数据,统计其中负数的个数,并在屏幕上显示出来;(要求标出何种进制后缀)
2.求出这十个数的总和,存入数据段SUM单元,并在屏幕上显示出来;
3.*将这些数从小到大排序,存入ORDER为首址的存储区域,并在屏幕上显示出来。
实验5(2学时)
代码转换
[目的]将键盘输入的4位十六进制数转换成等值的十进制数送屏幕显示。
[设计要求]
1.程序执行后,首先给出操作提示:
Pleaseinputa4-bithexadecimalnumber:
2.程序要有保护措施,对于非法键入不受理、不回显,但可重新输入。
3.显示合法键入的数据,当收到第4位合法数据后,立即显示转换结果。
4.显示格式示范如下:
ABCDH=43981
[设计思路]
1.程序通过DOS或BIOS调用得到的输入数据均是键盘字符的ASCII码。
而程序送往屏幕显示的数据,也都是该数的ASCII码。
2.根据设计要求,程序应首先辨别键入的数据是否在‘0’—‘9’和‘A’—‘F’之间,不在这个范围就是非法键入。
3.DOS系统的7号和8号子功能,对键入的字符没有回显功能,如果键入的字符是合法数据,再用单字符输出的子功能“回显”合法数据,即可达到显示合法数据而不显示非法数据这一设计要求。
4.代码转换的方法:
首先把键入的十六进制数ASCII码,转换成等值的二进制数,然后再把二进制数转换成十进制数。
实验6(2学时)
8255A的应用实验
[目的]
(1)掌握8255的工作方式及应用编程。
(2)掌握8255的应用电路接法。
[设计要求]
流水灯显示实验。
编写程序,使8255的A口和B口均为输出,实现16位数据灯的相对循环显示。
[设计思路]
1.首先分别向A口和B口写入7FH和FEH,然后分别将该数右移和左移一位,再送到端口上,这样循环下去,从而实现流水灯的显示。
2.具体实验步骤:
(1)按实验线路图接好电路。
(2)编写实验程序,检查无误后汇编、连接。
(3)打开实验箱电源,运行程序,观察数据灯的显示。
参考电路图如下:
附录一
注:
DEBUG只能在 DOS或 WINDOWS98及WINDOWSME下运行)
DEBUG的命令表
A(汇编)命令
用途:
把计算机的宏汇编语句直接汇编到内存中.
格式:
A[address]
说明:
“A”是一条逐行汇编命令,当使用“A”命令时,并不直接将16进制字节(机器
码)键入存储器,而键入的是助记符。
但键入的汇编语句被汇编在指定地址的连续单元中.
在“A”命令后没指出地址时,分两种情况:
a.没指定地址同时前面没有使用汇编命令,则语句被汇编到CS:
100开始的区域中.
b.没指定地址,但前面已有汇编命令,则语句被汇编到紧接着前一条汇编语句的后
一个地址单元里。
例
- ;“-”为DEBUG提示符
-A
0CDE:
0100 DB ‘THISISANEXAMPLE’,‘$’
0CDE:
0113 DB ‘123456789ABCDEF$’
OCDE:
0133 MOV DX,0100
0CDE:
0136 MOV AH,09
0CDE:
0138 1NT 21
0CDE:
013A MOV DL,0D
0CDE:
013C MOV AH,02
0CDE:
013E INT 21
0CDE:
0140 MOV DL,0A
0CDE:
0142 MOV AH,02
0CDE:
0144 INT 21
0CDE:
0146 MOV DX,0100
0CDE:
0149 MOV AH,09
0CDE:
014B INT 21
0CDE:
014D 1NT 20
0CDE:
014F
- ;“-”为DEBUG提示符
*在DEBUG状态下键入的数字都是16进制数,所以不要用H表示为16进制数。
在语句输入完后,只要按ENTER键,即告诉DEBUG用户程序输入完毕,此时回
到DEBUG初始状态。
注意:
(1)DEBUG不能识别操作数是字存储单元,还是字节存储单元。
必须用前缀
“WORDPTR”或“BYTEPTR”来明确指出数据类型。
WORD和BYTE可简写为
WO,BY。
例:
NEG BYTE PTR[l28]
DEC WORD PTR[SI]
(2)NEAR前缀可缩写为NE,但FAR前缀不能缩写。
C(比较)命令
用途:
比较两个内存区的内容。
格式:
Crangeaddress
说明:
比较两个内存区的内容,比较长度由range决定,若发现不相等的字节,按下
列格式显示它们的内容。
addr1 bytel byte2 addr2
例:
先用D命令显示两个存储区的内容。
-D0100
0CDE:
01005448495320495320—414E204558414D50
0CDE:
01104C45243120322033—2020342035203620
-C0100L60 11F ;比较100H和11FH开始的6个字符。
0CDE:
0100 544CCDE:
0110
0CDE:
0101 48450CDE:
0111
0CDE:
0102 49240CDE:
0112 ;不同字符
0CDE:
0103 53310CDE:
0113
0CDE:
0105 49320CDE:
0115
D(显示)命令
用途:
显示部分存储区的内容。
格式:
D[address]或D[range]
说明:
显示指定内存单元的内容。
(1)在输入的起始地址中,只键入一个相对偏移量,段地址为DS中。
-D100
0915:
01005448495320495320-414E204558414D50
0915:
01104C45243120322033-2034203520362037
0915:
01202038203920412042-2043204420452046
(2)若要显示指定范围的内容,则要输入显示的起始和结束地址.
-D0100011F
0915:
01005448495320495320-414E204558414D50
0915:
01104045243120322033-2034203520362037
(3)如果用D命令没有指定地址,则当前D命令开始地址是由前一个D命令所显示
的最后单元后面的单元地址。
E(修改)命令
用途:
修改RAM区的单元内容
格式:
Eaddress[List]
说明:
该命令可以在指定的地址里修改一个或多个字节的内容,同时也可连续的修改
每个字节的内容。
如:
(1)连续修改每个字节的内容
-D0180 ;显示0180单元开始的内容
0915:
01800000000000000000-0000000000000000
0915:
01900000000000000000-0000000000000000
-E 0180 ;修改开始,每修改—个单元后按空格键再修改第二个单元
0915:
018000.12 00.34 00.56 00.78 00.12 00.54 00.99 0087
0915:
018800.21 00.AC 00.SS 00.CB 00.BE 00.FC 00.EF 00.BA
0915:
019000
-D0180019F ;修改完毕,检查正确否
0915:
01801234567812549987-21AC00CBBEFCEFBA
0915:
01900000000000000000-0000000000000000
(2)用给定的内容去代替指定范围的内存单元内容。
-d
0915:
01500000000000000000-0000000000000000
0915:
01600000000000000000-0000000000000000
-e0150‘whatisyourname?
’
-d 0150016F
0915:
01507768617420697320-796F7572206E616D
0915:
016065203F0000000000-0000000000000000
(3)输入一个连接号‘-’,则显示前一个地址单元的内容,若修改就键入一个字节,
然后按“-”,则又显示前一个地址单元内容···。
如显示的单元不修改,则按“-”。
-D 0150 015F ;从150H到15FH单元内容
0CDD:
0150 08200800D038041B一5B324A4298 1l44AC
-E0160 ;从160单元开始修改
0CDD:
016025.- ;160单元不修改,键入“-”
0CDD:
015FAC.23- ;15F单元用23替代原先AC
0CDD:
015E44.AA- ;15E单元用AA替代原先44
0CDD:
015D11.55- ;修改完毕
-D0150015F ;检查修改后的单元内容
0CDD:
0150 082008000D3804 1B-5B324A4298 11 AA23
F(填充)命令
用途:
把表中的值填到内存单元中。
格式:
FrangeList
说明:
如果List所含的字节数比range小,则List被重复使用,如List所含的字节
数比range大,则多余被略去。
-F 0280L20“ABCDEF0123456789” ;把ASCⅡ码填入到从280开始的32个单元里
-D 0280029F ;检查
0CDD:
02804l42434445463031-3233343536373839
0CDD:
02904142434445463031-3233343536373839
-F 0100L9“ABCDEF0123456789” ;删除多余的3-9
-D 0100010F ;检查
0CDD:
0100 4142434445463031-320DOA007038496E
G(执行)命令
用途:
执行需运行的程序,并对调试的程序进行断点测试跟踪。
格式:
G[=address][address[address···]]
说明:
程序从当前指令开始执行,执行的地址由CS和IP的内容决定。
如用“=ad-
dress”参数取代,则程序从CS:
“=address”开始执行。
-A
0CDD:
0100 DB‘THISISANEXAMPLE’,‘$’
0CDD:
0113 DB‘123456789ABCDEF$’
0CDD:
0132 MOV DX,0100
0CDD:
0135 MOV AH,09
0CDD:
0137 1NT 21
0CDD:
0139 MOV Dl,0D
0CDD:
013B MOV AH,02
OCDD:
013D INT 21
0CDD:
013F MOV DL,0A
0CDD:
0141 MOV AH,02
0CDD:
0143 INT 21
0CDD:
0145 MOV DX.0113
0CDD:
0148 MOV AH,09
0CDD:
014A INT 21
0CDD:
014C INT 20
0CDD:
014E
-G ;从CS:
IP=0CDD:
0100开始运行结果在显示器上显示出
THlSISANEXAMPLE
123456789ABCDEF
Programterminatednormally
-G=0132
THISISANEXAMPlE
123456789ABCDEF
Programterminatednormally
-G=013F
123456789ABCDEF
Programterminatednormally
-G=0132 013F ;程序从0132开始运行,在013F处设置一个断点
THlSISANEXAMPLE
AX=020D BX=0000 CX=0000DX=010D SP=FFEE BP=0000 SI=0000 DI=0000
DS=0CDD ES=0CDD SS=OCDDCS=0CDD IP=013F NVUPEIPLNZNAPONC
0CDD:
013FB20A MOV DL,0A
注意:
(1)一旦程序运行结束(DEBUG显示“programterminatednormally”信息),在它
再次执行之前,必须重新启动程序。
(2)地址参数指向的位置必须含有合法的8086/8088指令码,如指定第一个字节为
非法指令,那么会出现不可预测的结果。
(3)堆栈指示器必须是合法的,并且对G命令有6个字节可用,否则会出现不可预
测的结果.
(4)对断点只键入一个偏移量,G命令设该段在CS寄存器中。
H(16进制运算)命令
用途:
对两个16进制数进行加,减,然后显示出和与差。
格式:
HValueValue
-HAB
0015FFFF ;和为0015H,差为FFFFH
I(输入)命令
用途:
从指定的端口显示出输入数据字节。
格式:
Iportaddtess
-I200
FF ;从200端口读入FF字节
L(装入)命令
用途:
把磁盘上的内容装入内存。
格式:
L或Laddress
说明:
此命令装入在CS:
5CH格式化的文件控制块所指定的文件,所以在使用这种格
式的L命令以前,在CS:
5CH中必须有已格式化的文件标识符,这通常用N命令采实现。
若命令没规定地址,则文件装入到CS:
100开始的内存区中,若命令规定了地址,则
装入到指定的区域中,但对具有扩展名的.COM或.EXE的文件,则始终是装入到CS:
100
的内存区中,即使命令中指定了地址,此地址也被忽略。
A>DEBUG
-NSS.COM
-L ;把SS.COM文件从磁盘装人内存
-U0114011D ;用反汇编检查装人内存程序正确否(文件见W命令)
0CF3:
0114BA0001 MOV DX,0100
0CF3:
0117B409 MOV AH,09
0CF3:
0119CD21 INT 21
0CF3:
011BCD20 1NT 20
0CF3:
011D6F DB 6F
-D0100011D
0CF3:
0100 5448495320495320-414E204558414D50
0CF3:
0110 4C452024BA0001B4-09CD21CD206F
M(传送)命令
用途:
把由range规定的内存单元区域的内容传送到address开始的单元。
格式:
Mrangeaddress
说明:
传送期间总是执行复盖传送,源区域的数据保持不变。
-DDS:
0100011F
0CDD:
0100CD2000A0009AEEFE-IDF0F50242092E03
0CDD:
0110424F4D535045433D-433A5C434F4D4D41
-DDS:
0000001F
0CDD:
0000 42 09 BD02 42 09 3B 08-01 01 01 00 02 FF FF FF
0CDD:
0010 42 09 BD02 42 09 3B 08-01 01 01 00 02 FF FF FF
-DCS:
050005lF
L
0CDD:
0500 CD2000A0009AEEFE-1DF0 F50242092E03
0CDD:
0510 424F4D535045433D-433A 5C434F4D4D41
-DCS:
0800080F
0CDD:
08000000000000000000-0000000000000000
-MDS:
0000000FDS:
0100 ;把DS:
0000开始的000FH个单元内容传送到CS:
100开始的单元里
-DDS:
0100010F ;检查传
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 测控 12 微机 原理 实验 16
![提示](https://static.bingdoc.com/images/bang_tan.gif)