三、实验原理 1. TDN—ACS 的构成的构成 TDN—ACS 系统在实验板下面含有 8088 为 CPU 的微机主板,通过串行接口与 PC 机进行通讯,从而支持以微机为控制平台的计算机控制技术实验。8088 主板的某些接口连线,通过扁平电缆接到 TDN—ACS 板上, 并引至接线孔, 方便作微机控制实验。 系统带有模拟示波器,利用系统提供的集成软件,通过 PC 示波器功能可实时、清晰的观察控制系统的各项静、动态特性,方便了对模拟控制系统特性的研究。 2. 8088 微机主板资源微机主板资源 (1)系统内存分配情况 1 系统程序区 64K 用户栈区↓ 用户程序区 系统堆栈区↓ DEBUG 系统数据区 BIOS 系统数据区 中断矢量区 ←F000:0000H 0000:0000H→(2)输入/输出接口 系统中 8255、8253、8259 等接口芯片在 8088 实验系统下层的微机主板上,其中一些端口被系统本身占用,其余的提供给用户使用,因此它们的控制信号及片选信号线均已连接好。 8255 A口数据线与U12ADC单元的ADC0809 数据线固定相连,ADC0809 转换的数据只能由8255 A口读入;B口和C口一条线(PC0)供用户自由使用。 8253 2 口提供给用户,其中CLK2(时钟)与系统中的分频时钟信号OPCLK相连,GATE2(门信号)接高电平。 8259 芯片中断号从 08 开始(对应硬件端为 IRQ0) ,其中中断号为 08、0C 的外部中断被系统占用,其余留给用户。 输入/输出接口编码 电路名称 0832 信号线 IOY0 寄存器 编址 命令寄存器 控制寄存器 0#计数器 1#计数器 00H 20H 21H 40H 41H 8259 IOY1 8253 IOY2 28K 0000:1000H→0000:0FFFH→ 《计算机控制技术》实验 2#计数器 控制寄存器 A 口 B 口 C 口 控制寄存器 状态寄存器 2 42H 43H 60H 61H 62H 63H C1H 8255 IOY3 (3)中断源分配 中断号 08 09 0A 0B 0C 0D 0E 0F 绝对地址 20H 24H 28H 2CH 30H 34H 38H 3CH 中断内容 8259 实时钟中断 备注 用户自定义 8259 硬中断矢量区 串行口中断 用户自定义 8259 硬中断矢量区 (4)INT10 说明 INT10 使用说明 入口:AH=00H,AL=01H 功能:清屏 入口:AH=01H,AL=数据 功能:写 AL 中的数据到显示屏上 入口:AH=06H,DS:BX=字串首址,且字串尾用 00H 填充 功能:显示一字串,直到遇到 00H 为止 3. TDN—AC/ACS 系统的集成操作软件系统的集成操作软件 进入 ACS 系统集成软件环境后屏幕显示如图 1-2。 屏幕上端为菜单栏,用户可通过键盘各功能键选择使用编辑、汇编、调试、示波器等功能;幕中部为调窗口(Debug)和寄存器、标志位显示窗口(REGS) ;幕下端为信息栏,显示当前提示信息。 由于各实验自编的实验程序较短,故采用逐条语句汇编方式,即小汇编方式(Debug 下的A命令)编辑汇编程序,直接在内存中生成可执行的机器码,所以对上述软件环境中 Edit(全屏幕编辑) 、Masm(汇编) 、Link(连接)的操作不作介绍,如果有兴趣同学可以自己去尝试,下面只对 Debug(调试)重点介绍。 调试(Debug)界面下的主要命令 A 进入小汇编进入小汇编 其格式为:A [段址:] [偏移量]↙即: A 段址:偏移量↙—从段址:偏移量构成的实际地址单元起填汇编程序的目标码。 A 偏移量↙—从默认的段址:偏移量构成的实际地址单元起填汇编程序的目标码。 A↙—从默认的段址:默认的偏移量构成的实际地址单元起填汇编程序的目标码。 需要说明的是,对输入汇编语句有如下规定: (1) 数字一律是不带 H 后缀的 16 进制数。 (2) [m]类操作一定要在之前标注 W(字)或 B(字节) ,如 MOV B [2000],AL; MOV W[2010],AX B 断点设置断点设置 在“>”提示符下键入 B,↙ 系统就提示:“[i]:”等待你给出断点地址,回车后系 《计算机控制技术》实验 统继续提示“[i+1]:”。若直接用回车来响应则结束该命令。系统允许至多 10 个断点,断点的清除方法,只能是通过键入复位开关或重新上电来实现。 D 显示一段地址单元中的数据显示一段地址单元中的数据 其格式为 D [段址:] [起始地址],[尾地址]↙ E 编辑指定地址单元中的数据编辑指定地址单元中的数据 其格式为 E [段址:]每次只能一字节一字节地显示或修改数据,一旦进入 E 命令状态,就可通过“空 格”键来使地址向高地址方向移动,而“—”键则使地址向低地址方向移动,亦可直接填入新数据来修改地址单元中的内容。若直接用回车键来响应的话,就退出 E 命令。 [↙ 偏移量] G 连续运行程序连续运行程序 其格式为 G= [段址:][偏移量]↙ GB= [段址:][偏移量]↙ 其中 G 格式表示无断点连续运行由段址:偏移量指定入口的程序;而 GB 格式表 示带断点连续运行由段址:偏移量指定入口的程序。注:断点是由 B 命令来设置。 I 从从 I/O 端口读入数据并显示端口读入数据并显示 其格式为 I [I/O 接口地址] ↙ M 数据块搬移数据块搬移 其格式为 M [段址:][源起始地址],尾址 [目标段址:][目标起始地址] ↙ 执行该命令可实现整块数据区的搬移。 O 数据送存指定数据送存指定 I/O 接口地址单元接口地址单元 其格式为 O I/O 接口地址,数据↙ R 寄存器显示与修改寄存器显示与修改 其格式为 R↙或 R 寄存器名↙ 前者显示所有寄存器内容。后者则可显示并修改特定寄存寄存器的内容。如:>RAX 就显示 AX=XXXX,此时您键入回车键表示结束 R 命令,若输入四位 16 进制数并回车的话,则就会将该四位数填入到相应的寄存器中并结束 R 命令。 [ T 单步运行指定的程序单步运行指定的程序 其格式为 T= [段址:][偏移量] ↙ 单步运行指定的程序入口地址由段址:偏移量来指定,每次执行完毕系统就会显 示 CS、DS、IP、AX 的内容到显示器上。如 T=0000:2000 ↙表示从 0000:2000 地址起单步执行一条命令。 U 反汇编程序命令反汇编程序命令 其格式为 U [段址:][起始地址],[尾地址]↙或 U[段址:][起始地址]↙、U↙ 系统提供反汇编程序能力,上面第一格式可实现连续显示从某地址到另一高端地址间的代码反汇编,而后一种格式每次只能显示地址后 16 个单元的代码反汇编。 四、实验内容及步骤四、实验内容及步骤 1.程序调试的操作练习1.程序调试的操作练习 通过对下列程序的调试练习,熟练掌握 ACS 教学系统集成软件调试命令的使用。 从 3500H 内存单元开始建立 0~15 共 16 个数据。程序如下: 地址(H) 机内码(H) 助记符 注释 2000 BF0035 MOV DI, 3500 ; 设数据区首址 2003 B91000 MOV CX,0010 ; 字节数→CX 3 《计算机控制技术》实验 2006 B80000 MOV AX,0000 2009 9E SAHF 200A 8805 MOV B[DI],AL ; 写入一字节 200C 47 INC DI ; 修改地址指针 200D 40 INC AX ; 修改数据 200E 27 DAA ; 十进制调整 200F E2F9 LOOP 200A ; 未填完转移 2011 EBFE JMP 2011 (1)准备(1)准备 ①开启 PC 微机及实验平台的电源开关,启动实验系统 ②使用 DOS 命令建立自己的文件夹: C:\>下键入 MD 文件夹名↙。 ③在 C:\>下键入 CD ACS↙进入 ACS 子目录,键入 NAC 并回车,屏幕显示如下: [ [ 请选择串口(1-COM1/2-CM2) : 版本 4.1 2000 西安唐都科教仪器公司 仪 唐 器 都 图图 1—1 集成操作软件引导界面集成操作软件引导界面 ④根据所选用的通讯端口选择键入 1 或 2 ,可进入 ACS 系统集成软件环境,屏幕如下: F1_Edit F2_Masm F3_Link F4_Step F5_Load F6_Save F7_Wave F8_Exit Debug Initialize system ok! > > 信息栏 图 1—2 集成软件操作界面集成软件操作界面 REGS图 上界面中 Initialize system ok ! 下有两个“> ” (如上图) 或重新开启 ACS 教学系统的电源开关,屏幕上出现 : >WELCOME TO YOU ! > 表示联机成功,可进入调试。否则,按 F8 返回 DOS 状态,重新进入并选择通讯端口。 ((2)输入及修改程序)输入及修改程序:可用 A 命令实现。 在 “>”下即可输入源程序,输入程序具体操作如下: 4 《计算机控制技术》实验 显示信息 > 0000:2000 0000:2003 … 0000:2011 0000:2013 > 键入信息 A2000↙ MOV DI,3500↙ MOV CX,0010↙ … JMP 2011↙ ↙ 此时如果段址 CS 不是 0000,可在命令中加入指定段址,如输入 A0000:2000,其余 DEBUG命令亦相同不再重述。 输入过程中,若在回车前发现本行有错误字符,则可以按“←”键来回抹并重输;当回车后,系统提示“error!”时,地址指针仍旧会停留在当前行,等待你重新正确输入。回车后如输入正确会显示下一语句的物理地址等待你下面输入的语句,而本行已汇编成机器码。下一句的物理地址与本行指令所占用的单元个数有关,视单、双、三字节指令的不同而不同。再按一次回车则回到“>”状态。 如果要重新输入一句话, 这句话并未出现 “error! ”提示时, 只要在 “>”下打入 A “”为要键入语句地址。 ××××注意小汇编为只汇编当前一行源程序,因此不接受伪指令、标号等需要与上下程序相关联的×××× ↙,语句形式,如上源程序中 Loop 200A 一句。编程时不能确定跳转的具体地址,可暂时用一标号助记,在行汇编输入程序时再确定。 输入程序后,机器文件是否在指定的内存中可在”>”标示符下使用 U 命令反汇编 查看。 显示信息 > 2000 BF0035 MOV DI,3500 … 200F E2F9 LOOP 200A > 2011 BEFE JMP 2011 2013 CC INT … 键入信息 U2000↙ U↙ (3) 程序的保存程序的保存 当使用 Debug 的 A 命令后会有与源程序相应的机器码在指定的用户程序区中, 如本程序的机器码经过上述操作后存在于地址为 2000H 开始的内存单元。为防止内存中的程序丢失,需将程序保存到硬盘,使用集成软件中的 F6——SAVE 功能。操作如下: 显示内容 Filename:_ Start address:_ Bytes:_ Save ok ! 键入内容 [路径]文件名↙ 2000↙ 0013↙ Bytes=<程序最后一条指令的下一地址>—<程序首址>,文件夹为先前准备步骤时所建。 例:本程序的 Bytes=2013H-2000H=0013H ((4)程序的装入)程序的装入 用 F5——LOAD 命令, 将用 SAVE 保存在硬盘中的程序装入指定的内存单元。 为避免与 2000H已有程序冲突,将程序装入 3000H 开始的内存单元,操作如下: 5 《计算机控制技术》实验 6 显示内容 Filename:_ CS:_ IP:_ Load ok ! 键入内容 [路径]文件名↙ 0000↙ 3000↙ 装入后可用 U 命令查看,键入 U3000H↙。 (5)程序的运行:程序的运行方式有单步运行、带断点运行及连续运行几种方式。 ①单步运行:按如下操作,可单步运行程序,即 显示信息 > 2003 B91000 MOV CX,0010 2006 B80000 MOV AX,0000 …… 键入信息 T=2000↙ T↙(or F4) 即将执行的指令 T↙(or F4) 即将执行的指令 …… 注释 寄存器状态在屏幕上显示 观察指令执行后 REGS 窗口中各寄存器状态,并记录运行第一条 MOV DI, 3500 和第九条LOOP 200A 指令执行后 REGS 窗口中各寄存器状态。每一次运行一条指令就显示各寄存器的内容以及下一条待执行指令的地址 IP。重复 T↙就可一步一步地运行整个程序,直至程序结束。 ②断点运行:首先在程序中设定断点,系统规定至多可定义 10 个为点,例如: 显示信息 > [0] [1] [2] > 键入信息 B↙ 200A↙ 200F↙ ↙ 就定义了 200A 和 200F 为断点地址,每次程序连续运行到断点时(断点处的语句尚未执行) ,程序中断并在 REGS 窗口显示当前各寄存器的内容。例如: 显示信息 > >200A 8805 MOV B[DI],AL> >200F E2F9 LOOP 200A > GB 是 G 命令的扩充,表示含断点连续运行程序,如希望程序运行至断点处暂停,要用 GB命令执行程序,断点仅当系统复位时消除。 观 ③连续运行: 按以下操作即可连续运行程序。 显示信息 > 不难发现这个练习程序是一个在自身无限循环的程序, 不能自动返回监控状态。 可键入 Ctrl+C(按下 Ctrl 键保持的情况下,再键入 C 键)来中断程序运行,返回监控状态;键入 Ctrl+S 来暂停程序运行,直到其它任意键键入为止。 ((6)内存单元的修改与显示)内存单元的修改与显示 本程序执行正确与否, 可查看相应的内存单元, 即 3500H ~ 350FH 单元中的内容是否为 0 ~ 15键入信息 GB=2000↙ GB↙ 察并记录断点处 REGS 窗口显示的当前各寄存器的内容。 键入信息 G=2000↙ 《计算机控制技术》实验 共 16 个数。操作如下: 显示信息 键入信息 > 0000:3500 00 01 02 … … D0000:3500↙ D 操作可以显示数据单元的内容,并可用 Ctrl+S 来暂停显示, 用任意键入来恢复 Ctrl+S 导致的暂停,而 Ctrl+C 则可以中止数据显示,并返回监控状态。 若 显示信息 > 0000:3500 00— 0000:3501 01— 0000:3502 0...