8086实验报告:汪润中十字路口红绿灯控制代码

需积分: 0 0 下载量 88 浏览量 更新于2024-08-04 收藏 180KB DOCX 举报
"汪润中 515021910285 实验一1" 这篇实验报告是关于8086微处理器的实验,由学生汪润中完成,主要目标是实现一个十字路口红绿灯的循环控制系统。在实验中,使用了74LS273芯片,它具有8个发光二极管作为显示,其地址被设定为88H、8AH、8CH和8EH。这个系统设计用于模拟交通信号灯的切换逻辑,以确保路口的交通安全。 汇编程序采用了8086汇编语言编写,程序模型设定为SMALL,这意味着程序的内存占用较小。程序首先指定了输出端口的地址PortOut为88H,这是与硬件设备交互的关键部分,用于发送控制信号到74LS273芯片来驱动LED灯的状态。 在堆栈段的定义中,使用了`.stack 100h`来分配256字节的堆栈空间,这是运行程序时用于存储临时数据和保护返回地址的区域。数据段`.data`包含了一个名为DELAY的双字节变量,其初始值为23500,这很可能是用来实现延时或定时功能的计数器。 代码段`.code`中虽然没有给出完整的程序,但可以推断出,实验的主体部分会包含初始化、主循环以及控制红绿灯状态变化的逻辑。通常,这样的逻辑会包括读取当前时间,根据预设的时间间隔改变灯的状态,并通过端口PortOut向74LS273发送相应的控制命令。 汇编程序的执行入口点可能由`.startup`指令指示,但在这个报告的摘录中并未提供。完整的程序应该还包括一些基本的延迟循环,例如使用`DJNZ`(减法不进位跳转)指令来实现固定时间的延迟,以模拟红绿灯的切换间隔。 这个实验涉及的知识点包括: 1. 8086汇编语言:程序的编写和指令集的使用。 2. 8086程序模型:理解Small模型的内存管理。 3. 堆栈操作:堆栈的定义和使用。 4. 数据存储:变量定义及其作用。 5. 输入/输出:通过端口进行硬件交互。 6. 循环和控制结构:实现定时和灯状态的切换。 7. 数字逻辑:74LS273芯片的功能和应用,以及LED灯的控制。 这个实验为学习者提供了实际操作8086微处理器并解决实际问题的机会,有助于深入理解计算机硬件和低级编程的概念。

本关任务:根据给出的基类Animal和main()函数。 1、根据给出的main()函数和运行结果的提示,设计出相关的各个类,注意观察运行结果,提取出每个类中需要的数据成员,并匹配上需要的成员函数。 2、显然,Animal设计为抽象类更合适,Animal不需要能够实例化,是专门作基类使用的。改造程序,使Animal设计为抽象类,这时main()函数中p = new Animal();将出错,将此行删除。 3、每一个Animal的派生类都有一个“名字”数据成员,这一共有的成员完全可以由基类提供改造上面的程序,将这一数据成员作为抽象类Animal数据成员被各派生类使用。 下面是给出的基类Animal和main()函数: class Animal { public: virtual void cry() { cout<<"不知哪种动物,让我如何学叫?"<<endl; } }; int main( ) { Animal *p; Animal a = Animal(); a.cry(); Mouse m1("Jerry",'m'); p=&m1; p->cry(); Mouse m2("Jemmy",'f'); p=&m2; p->cry(); Cat c1("Tom"); p=&c1; p->cry(); Dog d1("Droopy"); p=&d1; p->cry(); Giraffe g1("Gill",'m'); p=&g1; p->cry(); return 0; } 下面是程序的运行结果: 不知哪种动物,让我如何学叫? 我叫Jerry,是一只公老鼠,我的叫声是:吱吱吱! 我叫Jemmy,是一只母老鼠,我的叫声是:吱吱吱! 我叫Tom,是一只猫,我的叫声是:喵喵喵! 我叫Droopy,是一条狗,我的叫声是:汪汪汪! 我叫Gill,是公长颈鹿,我的脖子太长,发不出声音来!

2023-06-01 上传