测控12微机原理实验.docx
《测控12微机原理实验.docx》由会员分享,可在线阅读,更多相关《测控12微机原理实验.docx(17页珍藏版)》请在冰豆网上搜索。
测控12微机原理实验
测控12-1.2微机原理及应用课程实验
简介:
本实验课程的安排与“微机原理及应用”课程讲授紧密结合,是该课程的延伸。
旨在加深对课堂教学内容的理解,打下微型计算机应用方面坚实基础,培养学生独立分析问题和软硬件开发能力。
要求运用所学到的原理和编程技术,在计算机上独立编写程序,在Pentium机的实模式下进行汇编、链接和调试通过,深化理解所学内容。
通过实际操作,掌握方法、巩固知识、提高能力。
说明:
1.TASM、TLINK是微机上机实验或作业的工具,请大家保存在硬盘根目录下,文件夹用TASM命名为佳。
2.自己的实验程序用英文命名,不要超过8个字符,建议和TASM、TLINK存在一个文件夹中。
3.带“*”的为提高题。
4.Debug命令参见附录一。
实验1(2学时)
简单运算程序设计
[目的]熟悉TASM、TLINK的操作,练习用简单的指令和伪指令编写完整的程序,并调试通过。
[设计要求]
1.在数据段建立以NUMB为首址,以byte为单位的数据区域,NUMB和NUMB+1单元分别为36H和18H,再编写.EXE程序,求这两个数的和与差。
2.观察有关寄存器、存储单元和FLAGS的改变。
实验2(2学时)
循环结构程序设计
[目的]掌握循环结构程序设计方法以。
[设计要求]
编一程序找出十个字节数中最大数(十个数自拟,要求正负数都有,赋在数据段变量中。
)。
要求程序运行结束后在屏幕上显示出:
Max Num is:
XXH
实验3(2学时)
子程序结构程序设计
[目的]掌握排序方法;子程序的运用。
[设计要求]
编一程序对十个字节数排序(十个数自拟,要求正负数都有,赋在数据段变量中)。
要求排序结果在屏幕上显示出。
实验4(2学时)
换码程序设计
[目的]掌握十六进制数转换成十进制数的方法。
[设计要求]
编一程序将键盘输入的4位十六进制数转换成等值的十进制数,并送屏幕显示。
实验5(2学时)
8259中断控制器应用
[目的]学习8259中断控制器的工作原理;学习8259可编程控制器的应用编程;掌握使用PC机内8259的方法;掌握修改中断向量的方法。
[设计要求]
编写一键盘中断处理程序,计数键盘中断次数,并用该程序替换系统键盘中断处理程序,使当键盘中断产生10H次后,显示按键次数并结束应用。
实验6(2学时)
8255并行接口实验(流水灯显示)
[目的]掌握8255的工作方式及应用编程;掌握8255的典型应用电路接法。
[设计要求]
设置A、B两端口为输出端口,分别向A口和B口写入7FH和FEH,然后分别将该数右移和左移一位,再送到端口上,这样循环下去,从而实现流水灯的显示。
[实验步骤]
1、设计实验线路图如下,并将PCI总线扩展卡的ADD-ON总线与仿真ISA总线进行连接,完成线路连接。
(接线图另外发图片文件)
2、编写实验程序,检查无误后汇编、连接。
3、打开实验箱电源,运行程序,观察数据灯的显示。
附录一
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“ABCDEF” ;把ASCⅡ码填入到从280开始的32个单元里
-D 0280029F ;检查
0CDD:
02804l42434445463031-3233343536373839
0CDD:
02904142434445463031-3233343536373839
-F 0100L9“ABCDEF” ;删除多余的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 ;检查传送结果
0CDD:
0100 42 09 BD02 42 09 3B 08-01 01 01 00 02 FFFFFF
-MDS:
0100 010F CS:
0800 ;把DS:
100开始的0FH个单元内容传送到CS:
800开始的单元里
-DCS:
0800080F ;检查传送结果
0CDD:
080042 09 BD02 42 09 3B08-01 01 01 00 02 FFFFFF
N(命名)命令
用途:
给文件定名,用于文件存盘或装入内存区。
格式:
Nfilespec[filespec…]
说明:
用命令中给定的两个文件标识符,格式化在CS:
5CH和CS:
6CH的两个文件控制块(若在
调用DEBUG程序时具有一个文件标识符,则它已格式化在CS:
5CH的文件控制块)中,文件控制块
是为L和W命令提供所要求的文件名。
所有文件标识符和参数按键人的模式,放在CS:
81H开始的参数保存区中,在CS:
80H
中保存输入的字符个数,在寄存器AX中保存前两个文件标识符中的驱动器标志。
A>DEBUG
-NSS.COM ;给文件命名为SS,扩展名为COM(文件见W命令)
-L
-U0114 011D
0CF3:
0114 BA0001 MOV DX,0'00
0CF3:
0117 B409 MOV AH,09
0CF3:
0119 CD21 INT 21
0CF3:
011B CD20 INT 20
OCF3:
011D 6F DB 6F
-D0100 011D
0CF3:
0100 54 48 49 53 20 49 53 20-41 4E 20 45 58 41 40 50
0CF3:
0110 4C 45 20 24 BA 00 01 B4-09 CD 21 CD 20 6F
-G