SXL100B+实验指导.docx
《SXL100B+实验指导.docx》由会员分享,可在线阅读,更多相关《SXL100B+实验指导.docx(186页珍藏版)》请在冰豆网上搜索。
SXL100B+实验指导
目录
第一章SXL-100B+型实验仪的组成及安装2
第二章总体结构及其使用3
第三章实验编程环境与有关操作19
第四章DOS平台实验27
实验一熟悉汇编和编译环境的实验—冒泡法27
实验二即插即用配置资源的获取实验35
实验三简单I/O端口实验44
实验四8255可编程并行接口实验
(一)-扫描式键盘54
实验五8255可编程并行接口实验
(二)—数码LED显示63
实验六8253定时器/计数器实验72
实验七D/A转换实验80
实验八A/D转换实验——查询方式87
实验九A/D转换实验——中断实验93
实验十16C550串行接口实验107
实验十一8255工作方式1实验117
实验十二温度测量实验122
实验十三步进电机实验131
实验十四直流电机实验138
实验十五可编程中断控制器8259实验150
实验十六主控DMA8237实验161
附录PCIBIOS函数说明173
附录PCI9052开发板使用说明175
附录引脚图176
第一章SXL-100B+型实验仪的组成及安装
SXL-100B+型32位微机原理及接口实验仪由实验扩展箱,连接电缆和PCI总线板卡组成。
安装步骤:
1.关闭PC微机电源。
2.打开PC微机机箱,将PCI总线板卡插入主机板上任一PCI总线扩展插槽中(白色),并将连接电缆接入扩展卡上的插座中锁定(注意缺口方向)。
3.开启PC机电源,在PC机刚完成BIOS要进入Windows时即PC机显示CPU类型、CPU时钟、内存大小、软驱类型时,应该可以看到在PCIdevicelisting......下,有如下显示有VendorID为10EB,DeviceID为8376的PCI板卡存在,若无则表明PCI板卡未插好,需要重新插入。
4.在第3步完成后,Windows9x完全启动并会出现一发现新设备,需要驱动程序的对话框。
5.选择搜索设备最新驱动程序,点下一步。
6.指定位置,并点击浏览按钮。
7.在此对话框中选择到光盘的如下目录:
\驱动程序\VXD\ISAVXD并选择文件mce(注另一目录MasterDMA是仅供给主控DMA使用)。
8.按向导指示直至安装完毕。
9.将40+26芯扁平电缆另一端接到实验箱的40+26芯座上。
(注意缺口方向)
10.将随机所带电源线插入实验箱的电源插头上。
11.安装完毕可以做实验了。
注意2~9的步骤仅是SXL-100B+第一次安装时要做,以后就不必处理。
第二章总体结构及其使用
一、PCI总线扩展卡
PCI板卡完成PCI至ISA接口即利用9052的ISA方式来模拟产生ISA信号。
二、连接电缆
普通的40+26芯扁平电缆,该电缆连接PCI总线扩展卡和扩展板,其两端插头可互相调换。
三、实验扩展板
SXL—100B+实验扩展板布局图如图所示
J32位输入输出
4片8255控制1个16×16的点阵
K数码显示电路及4×4键盘电路
地址分配电路图
H区H区
y0
00-0f
10-1f
20-2f
30-3f
80-8f
90-9f
a0-af
b0-bF
y7
四、板图分区说明
APCI板卡输出接口
BUSB&单片机扩展区6116读写电路
CDAC0832数模转换电路
C1ADC0809模数转换电路
D步进电机8MHZ信号发生器与分频器
D1直流电机
D2温度模块
E发光管控制译码电路8255电路
F八位逻辑电平输入
G138译码电路信号发生器与分频器
H8253计数器8259
IPC16C550串行通信实验
J32位输入输出,4片8255控制1个16×16的点阵,单脉冲发生电路
K8255数码显示电路及4×4键盘电路
五、接线柱说明
区号
圆柱编号
功能
K
K
J14-A
数码管的A段
J14-B
数码管的B段
J14-C
数码管的C段
J14-D
数码管的D段
J14-E
数码管的E段
J14-F
数码管的F段
J14-G
数码管的G段
J14-DP
数码管的DP段(小数点)
J37-LD8
数码管LD8的控制端
J37-LD7
数码管LD7的控制端
J37-LD6
数码管LD6的控制端
J37-LD5
数码管LD5的控制端
B
J20-A0
地址线ADD0
J20-A1
地址线ADD1
J20-A2
地址线ADD2
J20-A3
地址线ADD3
J20-A4
地址线ADD4
J20-A5
地址线ADD5
J20-A6
地址线ADD6
J20-A7
地址线ADD7
J22-D7
资料线D7
J22-D6
资料线D6
J22-D5
资料线D5
J23-D4
资料线D4
J23-D3
资料线D3
J23-D2
资料线D2
J23-D1
资料线D1
J23-D0
资料线D0
J21-A8
地址线ADD8
J21-A9
地址线ADD9
J21-A10
地址线ADD10
J21-A11
地址线ADD11
J21-A12
地址线ADD12
J21-A13
地址线ADD13
J21-A14
地址线ADD14
J21-A15
地址线ADD15
J19-IRQ
中断埠
A
J19-IOW
I/O写端
J19-IOR
I/O读端
J19-MEMW
内存写端
J19-MEMR
内存读端
J83
地
J82
电源+5V
J13
电源+12V
J12
电源-12V
J11
电源-5V
J7-4MHz
4MHz信号输出
G
J7-2MHz
2MHz信号输出
J7-1MHz
1MHz信号输出
J7-500KHz
500KHz信号输出
J7-250KHz
250KHz信号输出
J7-125KHz
125KHz信号输出
J7-62.5KHz
62.5KHz信号输出
J7-31.25KHz
31.25KHz信号输出
JP8
为ADC0809提供时钟信号的短路块
J2-Y0
地址0H
G
J2-Y1
地址10H
J2-Y2
地址20H
J2-Y3
地址30H
J2-Y4
地址80H
J2-Y5
地址90H
J2-Y6
地址0A0H
J2-Y7
地址0B0H
J15-IN_1
与K1个开关(从左边开始)相连
F
J15-IN_2
与K2开关相连
J15-IN_3
与K3开关相连
J15-IN_4
与K4开关相连
J15-IN_5
与K5开关相连
J15-IN_6
与K6开关相连
J15-IN_7
与K7开关相连
J15-IN_8
与K8开关相连
J48-PB0
8255的B口0
K
J48-PB1
8255的B口1
J48-PB2
8255的B口2
J48-PB3
8255的B口3
J48-PB4
8255的B口4
J48-PB5
8255的B口5
J48-PB6
8255的B口6
J48-PB7
8255的B口7
J50PA0
8255的A口0
J50PA1
8255的A口1
J50PA2
8255的A口2
J50PA3
8255的A口3
J50PA4
8255的A口4
J50PA5
8255的A口5
J50PA6
8255的A口6
J50PA7
8255的A口7
J49PC0
8255的C口0
J49PC1
8255的C口1
J49PC2
8255的C口2
J49PC3
8255的C口3
J49PC4
8255的C口4
J49PC5
8255的C口5
J49PC6
8255的C口6
J49PC7
8255的C口7
J478255CS
8255的片选端
J65IN0
模拟量输入,第0信道
C1
J65IN1
模拟量输入,第1信道
J65IN2
模拟量输入,第2信道
J65IN3
模拟量输入,第3信道
J65IN4
模拟量输入,第4信道
J65IN5
模拟量输入,第5信道
J65IN6
模拟量输入,第6信道
J65IN7
模拟量输入,第7信道
J70EOC
ADC0809的EOC端(EOC为转换完成)
J69SIGNAL_IN
模拟量输入
J670809CS
ADC0809的片选端
J770832CS
DAC0832的片选
C
J76Xfer
控制DAC0832的Xfer端
J72OUT
DAC0832的输出
J78WW
停止DAC0832工作的控制端(为Windows9x下特有)
J53-OUT0
第1个计数器输出
H
J53-GATE0
第1个计数器控制端
J53-OCLK0
第1个计数器输入
J53-OUT1
第2个计数器输出
J53-GATE1
第2个计数器控制端
J53-CLK1
第2个计数器输入端
J53-OUT2
第3个计数器输出
J53-GATE2
第3个计数器控制端
J53-CLK2
第3个计数器输入端
H
J238253CS
8253的CS端
JP17
8253的地址连接短路块
J29-L1
键盘第1行
K
J29-L2
键盘第2行
J29-L3
键盘第3行
J29-L4
键盘第4行
J29-R1
键盘第1列
J29-R2
键盘第2列
J29-R3
键盘第3列
J29-R4
键盘第4列
JPC0-JPC7
8255与键盘的缺省连接
JPM0
RAM6116的第8脚地址线ADD0
B
JPM1
RAM6116的第7脚地址线ADD1
JPM2
RAM6116的第6脚地址线ADD2
JPM3
RAM6116的第5脚地址线ADD3
JPM4
RAM6116的第4脚地址线ADD4
JPM5
RAM6116的第3脚地址线ADD5
JPM6
RAM6116的第2脚地址线ADD6
JPM7
RAM6116的第1脚地址线ADD7
JPM8
RAM6116的第28脚地址线ADD8
JPM9
RAM6116的第22脚地址线ADD9
JPM10
RAM6116的第19脚地址线ADD10
JP64
74LS688的14脚Q0端
JP63
74LS688的15脚Q1端
JP62
74LS688的12脚Q2端
JP61
74LS688的11脚Q3端
JP60
地址信号ADD15
J34-Q
74S74的5脚Q
B
J34-/Q
74S74的6脚/Q
J1016C550_INT
J10与16C550的30脚INTR端相连
I
J4216C550CS
与16C550的14脚CS2相连
SoftICE的使用及基本I/O程序的调试
(一)SoftICE简介
由于VxD是典型的系统程序,工作在ring0层,不能用MicrosoftVisualC++或BorlandC++/C++Builder的调试器来调试,因为它们是用于调试ring3层应用程序的。
目前,针对ring0层程序的系统级调试工具主要有两种,一种是Microsoft公司的WDEB386,另一种是NuMega公司的SoftICE。
WDEB386必须同时使用两台PC机才能工作,其中一台用于运行被调试程序,另一台用于观察WDEB386的输出,而且WDEB386仅能观察汇编代码,无法同时观察源程序。
SoftICE则没有这些限制,因此目前被广泛使用。
SoftICE运行于Windows和硬件之间,不依赖Windows中任何东西,所以它可以用于调试运行于ring0层的VxD甚至Windows操作系统本身。
因此,SoftICE是研究和调试虚拟驱动程序的有力工具。
当然,SoftICE同样也可用于调试各种ring3层应用程序。
SoftICE与普通调试器不同,你不必在Windows内装入SoftICE(当然您系统中必须安装了SoftICE),你也不必非用它调试一段程序不可。
SoftICE装在Windows底层下,并且总是存在的。
除非你用它的热键(Ctrl-D)引出它的工作界面,否则Soft_ICE会静静地藏在Windows底层下面。
(二)SoftICE的安装
一般SoftICE要先于VTOOLSD安装,并且应在VTOOLSD安装完后将VTOOLD光盘中的library目录中所有数据手工拷贝在一目录中,以便供SoftICE使用。
在安装SoftICE过程中,一定要对显卡的参数(即显卡厂商及型号)进行正确的设置,否则SoftICE的界面可能无法正确显示。
设置完成后,一定要使用显卡选择对话框上的Test按钮测试SoftICE能否在该设置下正确工作,如图4-1所示。
若在显卡选择对话框中没有所使用的显卡的型号,则可以选择标准VGA显卡(StandardVGA)。
在SoftICE4.0以后的版本提供了一种新的显示驱动程序,即UniversalVideoDriver。
当使用这种显示模式时,SoftICE的输出不再是以全屏方式显示,而是在Windows桌面上开出一个窗口显示。
对于某些显卡(如RivaTNT/TNT2系列),必须使用UniversalVideoDriver才能正常工作。
图4-1显卡选择对话框
(三)SoftICE的用户界面
由于SoftICE运行于硬件和Windows之间,SoftICE的用户界面与Windows操作系统相互独立。
当按下其激活热键Ctrl-D后,Windows桌面隐藏,SoftICE弹出.如果使用的是UniversalVideoDriver,则SoftICE以窗口的形式弹出,不会完全遮住Windows桌面。
SoftICE的用户界面由若干窗口组成,每个窗口可根据需要显示或隐藏。
下表是各窗口的用途:
窗口
用途
命令窗口
输入命令,显示信息
代码窗口
显示汇编代码或源程序
局部窗口
显示当前的StackFrame
监视窗口
可用WATCH向该窗口中加入需要监视的变量
寄存器窗口
显示各寄存器的当前值
数据窗口
显示存储器的当前值
调用栈窗口
显示调用栈
PIII寄存器窗口
显示PentiumIII寄存器的值
FPU堆栈窗口
显示FPU(FloatingPointUnit)的堆栈状态
(四)SoftICE常用命令
1.激活SoftICE:
热键Ctrl-D
2.使用联机帮助:
HELP或?
3.基本调试命令
命令
用途
格式
A
使用SoftICE内建的汇编程序直接输入标准的Intel80x86汇编指令
A[起始地址]
U
从指定地址开始反汇编
U[起始地址[L长度]]
U[(过程或函数)符号名]
G
执行
G[=起始地址][终止地址]
T
单步执行
T[=起始地址][步数]
4.窗口管理
SoftICE提供了以下命令用于显示或隐藏特定的窗口
命令
用途
格式
WC
显示/隐藏代码窗口
WC
WD
显示/隐藏数据窗口
WD
WF
显示/隐藏FPU堆栈窗口
WF
WR
显示/隐藏寄存器窗
WR
WW
显示/隐藏监视窗口
WW
WS
显示/隐藏调用栈窗口
WS
WX
显示/隐藏PentiumIII寄存器窗口
WX
5.断点管理
调试程序的基本手段之一是在程序中设置若干断点,当程序执行发生某些事件时便会触发这些断点,程序暂停执行.此时程序员可根据需要察看有关信息,如变量的值、通用寄存器及状态寄存器的值,并据此判断程序是否正确运行或推测错误发生的原因。
断点设置得当,将使程序调试工作事半功倍。
为此,SoftICE提供了强大的断点管理功能,如设置断点、清除断点、使断点暂时失效及重新激活断点等等。
在SoftICE中,断点被分为五类,对应程序执行中可能发生的各种事件:
●执行断点:
当程序执行到某一地址(指令)时触发;
●内存访问断点:
当程序访问某一内存区域时触发;
●中断断点:
当发生某一中断时触发;
●I/O断点:
当发生对某一I/O端口的读写操作时触发;
●窗口消息断点:
当窗口收到某些消息时触发;
以下是SoftICE中常用的断点命令:
命令
用途
格式
BC
清除断点
BC断点列表|*
BD
使断点暂时失效
BD断点列表|*
BE
使断点有效(激活断点)
BE断点列表|*
BL
列出所有断点
BL
BH
恢复上次使用SoftICE时设置的断点
BH
BPX
设置断点,通过程序执行触发
BPX[地址]:
当执行到指定地址时暂停;
BPX[IF布尔表达式]:
当布尔表达式为TRUE时暂停
BPR
设置断点,当对指定范围的内存执行特定操作时触发
BPR起始地址结束地址[动作][c=次数]
动作:
R(读),W(写),RW(读写)
BPRW
设置断点,当对指定模块的内存区域执行特定操作时触发
BPRW模块名|段选择器[动作]
动作:
R(读),W(写),RW(读写)
BPIO
设置断点,当在指定I/O端口执行特定操作时触发
BPIO端口[动作]
动作:
R(读),W(写),RW(读写)
BPINT
设置断点,当发生指定的中断时触发
BPINT中断号
BMSG
设置断点,当指定窗口收到特定消息时触发
BMSGhWnd[起始消息[结束消息]]
6.输入/输出
在SoftICE中可直接通过命令对I/O端口进行读写,并且可指定数据的宽度(字节/字/双字):
命令
用途
格式
I
从port所指定的端口输入数据
IBport(字节)
IWport(字)
IDport(双字)
O
向port所指定的端口输出数据value
OBportvalue(字节)
OWportvalue(字)
ODportvalue(双字)
7.显示/修改信息
SoftICE提供了多种命令,用于显示/修改/复制内存中的数据,以及显示Windows中各种系统信息,如所有窗口、模块、进程、线程、VxD及其它对象的信息。
这些信息对了解系统运行情况及程序的调试有着非常重要的作用。
以下是常用的命令:
D
显示内存数据
DB[起始地址[L长度]]
DW[起始地址[L长度]]
DD[起始地址[L长度]]
E
修改内存数据
EB[起始地址[数据列表]]
EW[起始地址[数据列表]]
ED[起始地址[数据列表]]
M
内存数据块传送
M源地址L长度(字节)目的地址
S
在内存中查找二进制数据或字符串
S[-cu][源地址L长度待查找数据(串)],c区分大小写,u表示查找Unicode串
R
修改寄存器的值
R[-d|寄存器|寄存器[=]值]
PCI
显示PCI设备的配置信息
PCI
VxD
显示指定VxD的信息
VxD[VxD名字|通配符]
TIMER
显示Timer信息
TIMER[Timer地址]
MOD
显示指定模块的信息
MOD[-u|-s]|[模块名称|通配符]
HWND
显示指定窗口的信息
HWND[窗口句柄|[[层数l][进程名]]
8.表达式的使用
在SoftICE的命令窗口中,可以随时根据需要计算各种表达式的值。
表达式的语法与C语言表达式类似,此处不再赘述。
(五)SoftICE符号装入器
用户用SoftICE调试软件前,必须先用SoftICE的符号生成程序NMSYM产生VxD的符号文件(.NMS)供SoftICE使用。
符号文件建立了VxD源程序中各种符号(变量名、函数名等)和VxD的二进制机器(汇编)指令间的关系。
这样在SoftICE中不仅可看到编译后的VxD机器(汇编)代码,还可看到每段机器(汇编)代码对应的源程序,如此非常有利于程序的调试工作。
当编译好VxD后,先使用SoftICE的SymbolLoader程序生成VxD的符号文件,然后再用SymbolLoader程序将该符号文件调入。
以下是使用SymbolLoader的具体步骤:
(1)
运行SoftICE的symbolLoader程序。
如下图所示:
(2)单击File菜单中OpenModule菜单项,选取要调试的VxD文件;
(3)单击Module菜单下的Settings菜单项,弹出Settings对话框,如下图所示:
在General页中输入源文件路径,在Debugging页中选择“Loadsymbolinformationonly”选项,在Translation页中选择“Symbolsandsourcecode”选项并复选“Packagesourcewithsymboltable”,然后单击“OK”退出Settings对话框;
(4)单击Module菜单中的Translate菜单项,开始产生符号文件;
(5)单击Module菜单中的Load菜单项,加载符号文件;
(6)若希望每次SoftICE启动时都调入该符号文件,可点击Edit菜单中的SoftICEInitializationSetting菜单项,打开SoftICE的初始化设置对话框,如下图所示:
然后在初始化设置对话框中的Symbols页中加入该符号文件的路径名即可。
(六)使用SoftICE调试VxD
使用SoftICE调试VxD之前,首先用SymbolLoader装入相应的符号文件。
若符号文件未生成,可用NMSYM程序或SymbolLoader从VxD生成。
然后,通过设置断点、单步执行以及设置监视变量等手段,便可对VxD进行调试了。
从Windoww9x进入SoftICE/W的工作环境。
如下所示:
窗口一
0028:
C0002841XCHGAX,[EBP+24]
0028:
C0002845ROREAX,10
0028:
C0002848XCHGAX,[EBP+28]
0028:
C000284CRORGAX,10窗口二
0030:
000000009E00560065047000-1600C40965047000
0030:
000000106504700054132000-90FFA00112345601
0030:
000000202032453478003344-80EED01113145689
0030:
000000301314517499244300-20BBC0223