实验一 系统认识实验 1 系统介绍 1 . 1 软件启动 运行 Windows, 进入桌面窗口。 鼠标单击“开始” 按钮, 在“程序” 栏中打开“星研集成环境软件” 菜单栏, 在其中选择“星研(SUPER、 STAR 系列仿真器)”, 开始启动星研集成环境软件。 注意: 当您使用低配置机器时, 从星研集成环境软件退出后必须等待足够的时间, 让系统完全退出(硬盘停止工作) 后, 方可再次启动星研集成环境软件。 1 . 2 编译器 星研集成环境软件支持的编译器 MCS51 MCS96、 MCS196 80X86 Keil A51、 C51 Franklin A51、 C51 Intel ASM51、 PL/M51 Archimedes A8051、 C-51 Intel ASM96、 PLM96、 C96 Tasking ASM196、 C196 TC、 TASM 编译器请用户自备。 设置工作环境 您的编译器正确安装后, 请设置星研集成环境软件的编译器工作环境。 打开[主菜单 » 项目 » 设置工作环境]: 例如: 您使用的编译器是 TASM、 TC, 安装在 C: \xingyan\TASM, C: \xingyan\TC, TASM 宏汇编路径: C: \xingyan\TASM; Turbo C 路径: C:\xingyan\TC; 2 如何使用星研集成环境软件 下边几节, 介绍如何使用星研集成环境软件: 以下将使用汇编语言, 将数据段中3000H~30FFH 单元的内容传送给实验仪 B4 区的 61C256 的 2000H~20FF 中; B4 区的 61C256在 I/O 设备区, 使用IOR、 IOW读写; 再将它传送回数据段的 6000H~60FFH 中。 2. 1 数据传送程序(ASM) 星研集成环境软件推荐您使用项目为单位来管理您的程序。 如果您做一个简单的实验,或只希望看一个中间结果, 您可以不建立项目文件, 系统需要的各种设置, 来源于“缺省项目”。 本节不使用项目文件。 本例子旨在通过建立一个具体的程序来介绍星研集成软件的使用方法以及它的强大的调试功能。 使用户很快的上手, 体验到我们软件功能的强大和方便。 本实例是将数据段中 3000H~30FFH单元的内容传送给实验仪B4区的 61C256的 2000H~20FFH 中; B4 区的 61C256 在 I/O 设备区, 使用 IOR 、 IOW 读写; 再将它传送回数据段的6000H~60FFH 中, 程序是用汇编语言来编写。 下面介绍相应的操作步骤: 首先运行星研集成软件。 启动画面如图: 1、 设置缺省项目 执行 [主菜单 » 辅助 » 缺省项目], 出现一个对话框: 选择“STAR ES8688 仿真模块”。 点击进入下一步: “选择语言” 您可以根据自己的需要以及程序的类型作相应的选择, 本实例选择Borland公司的 Turbo C(3.0)、 TASM(5.0) (请确定在选择语言之前已经安装好相应的编译软件)。 然后再点击进入下一步: “编译、 连接控制项” 实验仪提供 64K memory空间, memory model 请选择tiny, 缩写为 mt; 如果需要源程序级别调试, 必须使用-v – y 控制项, 为了支持多文件编译、 连接, 必须使用-c 控制项。 一般不必改变 Turbo C 的编译控制项。 如果需要源程序级别调试, 必须使用/zi /l 控制项。一般不必改变 Tasm 的编译控制项。 如果需要源程序级别调试, 必须使用/m /l /v 控制项。一般不必改变 TLINK 的连接控制项。 然后再点击进入下一步: “存贮器出借方式” 仿真模块 EMU598 提供 64K 仿真 RAM, 作程序段(CS)、 数据段(DS)、 附加段(ES)、堆栈段(SS) 使用。 2、 建立源文件 下面我们建立源文件, 执行 [主菜单 » 文件 » 新建],(或者点击图标下: ) 打开窗口如 首先选择存放源文件的目录, 输入文件名, 注意: 一定要输入文件名后缀。 对源文件编译、 连接、 生成代码文件时, 系统会根据不同的扩展名启动相应的编译软件。 比如: *. asm文件, 使用 TASM 来对它编译。 本实例文件名为 move. asm。 窗口如下: 按“确定” 即可。 然后出现文件编辑窗口: 输入源程序, 本实例的源程序如下: . MODEL TINY ; memory mode : tiny . STACK 100 ; 堆栈 . CODE ; 开始程序段 START: MOV AX, @DATA MOV DS, AX MOV ES, AX NOP MOV CX, 100H MOV SI, 3000H MOV DX, 2000H START1: MOV AL, [SI] OUT DX, AL INC SI INC DX LOOP START1 MOV DI, 6000H MOV DX, 2000H MOV CX, 100H START2: IN DX, AL MOV [DI], AL INC DI INC DX LOOP START2 SJMP $ Move ENDP END START 输入源程序, 如下图: 这样一个源文件就建立好了。 3. 编译、 连接文件 首先选择一个源文件, 然后可以编译、 连接文件了。 对文件编译, 如果没有错误, 再与库文件连接, 生成代码文件(DOB、 EXE 文件)。 编译、 连接文件的方法有如下二种:(1) 使用[ 主菜单 » 项目 » 编译、 连接 ]或[主菜单 » 项目 » 重新编译、 连接 ]”。(2) 点击图标或“编译连接” 与“重新编译、 连接” 区别: “重新编译、 连接” 不管源文件是否修改、来“编译、 连接” 或“重新编译连接”。 编译软件是否变化、 编译控制项有无修改, 对源文件编译, 如果没有错误, 再与库文件连接,生成代码文件(DOB、 EXE 文件)。 编译、 连接过程中产生的信息显示在信息窗的“建立” 视中。 编译没有错误的信息如下: 若有错误则出现如下信息框: 有错误、 警告信息, 用鼠标左键双击错误、 警告信息或将光标移到错误、 警告信息上, 回车,系统自动打开对应的出错文件, 并定位于出错行上。 这时用户可以作相应的修改, 直到编译、 连接文件通过。 4. 调试 在进入调试状态以前, 请正确设置通信口: 执行[ 主菜单 » 辅助 » 通信 ], 对话框如下: 仿真器、 实验仪配套的通信线可以与微机 USB 口相连, 即为 USB 通信线, 请选择 USB。 对于最下面一行的校验, 通常您不必选中它, 可以提高传送 DOB、 HEX、 BIN 文件时的速度。 在进入调试状态以前, 你还必须确定仿真器、 实验仪与微机的正确连接, 如果使用仿真器, 仿真头正确地连接在仿真器上。 电源接通, 开关打开。 在软件中选择对应的仿真器、 实验仪型号, 具体设置如下: 执行[ 主菜单 » 辅助 » 仿真器、 实验仪 ], 对话框如下: 根据你所使用的机型作相应选择。 如果编译、 连接正确后, 可以开始调试程序。 进入调试状态方法有: a) 执行[ 主菜单 » 运行 » 进入调试状态] b) 点击工具条的 c) 执行[ 主菜单 » 运行 » 装载 DOB、 HEX、 BIN 文件] 进入后的窗口如下: 在整个图片中我们可以看到相对应的窗口信息。 在“工作区窗” 的“CommonRegister”中我们可以了解通用寄存器的信息。 中间的窗口为源程序窗口, 用户可在此设置断点, 设置光标的运行处, 编辑程序等。 寄存器窗我们可以看到一些常用的寄存器的数值。 存贮窗 1、存贮窗 2 显示相应的程序段(CS)、 数据段(DS)、 IO 设备区的数据, 还有变量窗, 自动收集变量显示其中。 反汇编窗显示对程序反汇编的信息代码、 机器码、 对应的源文件。 在信息窗的“装载” 视中, 显示装载的代码文件, 装载的字节数, 装载完毕后, 显示启始地址, 结束地址。 这种船坞化的窗口比通常的窗口显示的内容更多, 移动非常方便。 用鼠标左键点住窗口左边或上方的标题条, 移动鼠标, 将窗口移到您认为合适的位置; 将鼠标移到窗口的边上, 鼠标的图标变成可变化窗口时的形状, 用鼠标左键点住, 移动鼠标, 变化一个或一组窗口的大小。 在调试过程中, 可以根据您的需要, 在[主菜单 » 查看]中打开: 寄存器窗、 存贮器窗 1、 2、 3、 观察窗、 变量窗、 反汇编窗。 您也可以通过[主菜单 » 辅助 » 设置 » 格式], 设置每一种窗口使用的字体、 大小、 颜色。 移动窗口到您喜欢的位置、 大小。 首先在 “种类”中选择一个窗口,然后选择“字体”、“大小”, 在“颜色” 中选择某一类, 在“前景”、“背景” 中选择您喜欢的颜色。 对于高级语言, 在您的程序前有一段库文件提供的初始化代码,不会出现在您的文件行上, 如果您使用 C 语言, 可将光标移到 main 函数上, 按 F4 功能键,让 CPU 全速运行到 main 行上后停下; 如果您使用 PL/M 语言, 按 F7 功能键, 让 CPU“单步进入”, 运行到您的任何一个可执行行后停下。 您可以使用以下命令调试您的程序: 设置或清除断点(功能键为 F2) 在当前光标行上设置或清除一个断点 单步进入(功能键 F7) 单步执行当前行或当前指令, 可进入函数或子程序。 连续单步进入(功能键 Ctrl + F7) (当前可执行标志)连续执行“单步进入”, 用鼠标点击 单步(功能键 F8) 单步执行当前行或当前指令, 将函数或子程序作为一条指令来执行。 如果当前行中含有函数、 子程序或发生中断, CPU 将执行完整个函数、 子程序或中断, 停止于当前行或当前指令的下一有代码的行上。 连续单步(功能键 Ctrl + F8) 或按任意键后, 停止运行。 运行到光标行(功能键 F4) 或按任意键后, 停止运行。 连续执行“单步”, 用鼠标点击从当前地址开始全速运行用户程序, 碰到光标行、 断点或用鼠标点击行。 全速断点(功能键 F9) , 停止运从当前地址开始全速运行用户程序, 碰到断点或用鼠标点击 全速运行(功能键 Ctrl + F10) 从当前地址开始全速运行用户程序, 此时, 按用户系统的复位键, CPU 从头开始, 停止运行。 执行用户程序, 用鼠标点击任何断点。 停止运行 终止微机与仿真器之间通信(功能键 ESC)。 , 停止运行。 全速运行时, 屏蔽了所有断点, 即不会响应注意: 欲终止微机与仿真器之间通信, 功能键 ESC 是一个很方便的键, 它的效果比点击相应的图标的效果要好。 建议用户多用 ESC 键。 在系统运行“连续单步” 或者“连续单步进入” 时 ESC 键被禁止, 这时用户可以按键盘的其他任意键停止其运行。 5. 调试的方法及技巧 一般来说, 用户的程序或多或少的会有一些逻辑错误, 我们的仿真器、 实验仪和星研集成软件可以帮助用户很快的定位, 很快的查出相应的错误。 在调试状态的窗口中我们可以看到很多的窗口, 用户只要熟练地应用这些窗口来观察、分析数据就会很快的调试好程序, 达到事半功倍的效果。 进入调试界面后, 由于我们本次操作需要观察三个数据块: 数据段 3000H~30FFH, 数据段 6000H~60FFH, I/O 区 2000H~20FFH, 可以打开二到三个存贮器窗口, 具体操作是: [主菜单»查看] 然后根据你的需要打开不同的窗口。 调整后的调试界面为: 由于我们本次操作主要是观察存贮器窗口, 所以我们拉大了这两个存贮器窗口的大小。 每个窗口设置了 4 个分页项:的观察数据空间以及地址范围。 在, 我们可以在不同的分页项设置不同中可以选择 CS: Memory, DS: Memory, I/O,根据需要可以做不同的选择。 在可以直接转到我们输入的地址的窗口上面观察数据。 由于我们在此程序中的写入数据的RAM 空间分别为 DS: 3000H~30FFH、 DS: 6000H~60FFH、 I/O 区 2000H~20FFH, 故我们建立的分页项如下: 存贮 0 分页项: 中可以直接输入地址, 然后按回车, 就 存贮 1 分页项: 存贮 2 分页项: 我们这样设置界面的目的就是当用户要观察不同地址段的数据时, 只要切换一下分页项就行了。 由于本次程序需要同时观察 DS: 3000~30FFH、 I/O: 2000~20FFH 和 I/O: 2000H~20FFH、DS: 6000H~60FFH, 所以打开二个存贮器窗。 如图: 软件中总共存在 3 个存贮器窗。 可以同时观察三个不同的地址。 存贮器窗口支持数据的直接修改功能。 本软件的所有窗口中的数据都支持直接修改功能。 用户可以根据自己的需要在窗口中直接修改数据。 比如: 执行程序前, 将 DS: 3000H~300FH 中的数据改为 11、 22、 33、 44、 55、 66、 77、 88、 99、 AA、 BB、 CC、 DD、 EE、 FF、00, 在相对应的地址中直接输入数据即可。 如图: 一般刚刚写好的程序, 在进入调试状态后, 执行“单步” 或者“单步进入”, 我们推荐您能记住这些操作的相对应的功能键, 这样您就在调试程序的过程中很方便。 在刚才的调试程序中我们多次执行 “单步 (F8)”命令, 在工作区窗口的 CommonRegister视中查看通用的寄存器: 我们可以观察到在本程序中所使用的一些寄存器的变化, 比如 AX、 CX、 DX、 SI 的数值的变化, 每一次循环, CX 减一, DX、 SI 加一, AX 寄存器的低字节 AL暂存从 DS: [SI]取出的数值: 11、 22、 33、 44、 55、66……。 我们可以看到存贮器窗口中的相对应的 RAM 的数据的变化。 比如 其中右边为相应数据的 ASCII 码。 切换分页项我们可以观察到其它地址的数据。 把光标移动到 MOV DI, 6000H 行上, 点击图标检查 IO: 2000H~20FFH 内容, 是否与 DS: 3000H~30FFH 相同, 如果完全一样, 说明以上(功能键 F4), 全速运行到光标行,程序没有任何问题。 切换分页项, 存贮器窗显示 DS: 6000H 开始的单元内容, 将光标移到 JMP $行的左边, 鼠标变为, 点击鼠标, 在该行上设置了一个断点, 也可以用鼠标点击该行, 将光标(功能键为 F2), 设置断点, 重复操作, 清除断点。 移到鼠标处, 点击图标 点击图标(功能键 F9), CPU 全速断点运行到光标处停下, 检查 DS: 6000H~60FFH内容, 与 I/O: 2000H~20FFH 内容是否一样, 相同表示程序没问题; 如果不相同, 将光标移到 MOV DI, 6000H 行上(具体操作是: 用鼠标点击该行, 然后再点击图标 ), 使用单步进入命令 F7 或连续单步进入命令 Ctrl + F7, 检查结果, 判断程序出错原因。 实验一 数据传送 一、 实验目的 熟悉星研集成环境软件的使用方法。 熟悉 Borland 公司的 TASM 编译器 熟悉 8086 汇编指令, 能自己编写简单的程序, 掌握数据传输的方法...