微机实验期末设计报告
微型计算机实验一实验报告
微型计算机实验一实验报告一、实验目的本次微型计算机实验的主要目的是让我们熟悉微型计算机的硬件组成,了解计算机各部件之间的连接和工作原理,并掌握基本的计算机组装和调试技能。
通过实际操作,提高我们对计算机系统的认识和动手能力,为今后的学习和工作打下坚实的基础。
二、实验设备与工具1、计算机主机箱、主板、CPU、内存、硬盘、显卡、声卡、网卡等硬件设备。
2、螺丝刀、镊子、防静电手环等工具。
三、实验内容1、了解计算机硬件组成打开计算机主机箱,观察主板、CPU、内存、硬盘、显卡、声卡、网卡等硬件设备的外观和安装位置。
学习各硬件设备的功能和作用,如 CPU 负责运算和控制,内存用于临时存储数据,硬盘用于长期存储数据等。
2、计算机硬件组装戴上防静电手环,防止静电对硬件设备造成损坏。
首先安装 CPU,将 CPU 对准主板上的插座,轻轻放下,然后扣紧CPU 插座的扳手。
安装内存,将内存插槽两端的卡扣掰开,将内存条对准插槽,用力按下,直到两端的卡扣自动扣紧。
安装硬盘,将硬盘固定在机箱的硬盘架上,然后连接数据线和电源线。
安装显卡,将显卡插入主板上的 PCIE 插槽,并用螺丝固定。
安装声卡和网卡,根据主板的接口类型,将声卡和网卡插入相应的插槽。
连接机箱前面板的线缆,包括电源按钮、重启按钮、指示灯、USB 接口等。
3、计算机硬件调试检查各硬件设备的安装是否牢固,连接是否正确。
接通电源,按下电源按钮,观察计算机能否正常启动。
如果计算机无法启动,根据报警声和指示灯的提示,查找故障原因并进行排除。
四、实验步骤1、准备工作清理实验台,将所需的硬件设备和工具摆放整齐。
阅读计算机硬件组装的相关资料,了解组装的流程和注意事项。
2、硬件组装按照上述步骤,依次安装 CPU、内存、硬盘、显卡、声卡、网卡等硬件设备,并连接好线缆。
3、硬件调试检查组装完成的计算机,确保没有遗漏的部件和连接错误。
接通电源,按下电源按钮,观察计算机的启动情况。
如果计算机无法启动,首先检查电源是否正常,然后检查各硬件设备的连接是否松动。
南理工微机实验报告
南理工微机实验报告篇一:微机实验报告实验1 基本操作实验一、实验目的(1)掌握TD- PITC 80X86微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。
(2)掌握使用运算指令类编程及调试方法。
(3)掌握运算类指令对各状态标志位的影响及其测试方法。
(4)学习使用软件监视变量的方法。
二、实验设备PC机一台,TD- PITC实验装置一套三、实验内容及步骤通过对样例程序的操作,学会使用在TD- PITC环境下,如何输入汇编语言程序,如何进行汇编语言源程序的汇编、连接、下载和运行;在调试程序的学习过程中,应学会:如何设置断点,如何单步运行程序,如何连续运行程序,怎样查看寄存器的内容,怎样修改寄存器的内容,怎样查看存储器的内容,怎样修改存储器的内容实验内容一——BCD码转换为二进制实验内容将四个二位十进制数的BCD码存放于3500H起始的内存单元中,将转换的二进制数存入3501H起始的内存单元中,自行绘制流程图并编写程序。
实验步骤:1)运行Wmd86软件,进入Wmd86集成开发环境。
2)根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言。
语言选择后,下次再启动软件,语言环境保持这次的修改不变。
在这里我们选择汇编语言。
3)语言选择后,点击新建来新建一个文档。
默认文件名为Wmd861.4)编写实验程序。
并保存,此时系统会提示输入新的文件名,输完后点击保存。
实验程序清单如下:SSTACK SEGMENT STACKDW 64 DUPSSTACK ENDSCODE SEGMENTASSUME CS:CODESTART:XOR AX,AXMOV SI 3500HMOV DI 3510HA1:MOVE AL,[SI]ADD AL,ALMOV BL,ALADD AL,ALADD AL,ALADD AL,BLINC SIADD AL,[SI]MOV [DI],ALINC SIINC DILOOP A1A2:JMP A2CODE ENDSEND START5)点击编译文件,若程序无误,再点击进行连接。
微机原理的实验报告
一、实验目的1. 理解微机的基本组成和各部件的功能;2. 掌握微机的工作原理和指令系统;3. 熟悉汇编语言程序设计的基本方法;4. 提高动手能力和实际操作技能。
二、实验内容1. 微机系统组成实验(1)实验目的:了解微机的基本组成和各部件的功能。
(2)实验内容:观察并记录微机系统的各个部件,如CPU、内存、硬盘、主板等,并了解它们的功能。
(3)实验步骤:①观察微机系统各个部件的连接情况;②了解各个部件的功能和作用;③分析微机系统的整体结构。
2. 微机工作原理实验(1)实验目的:掌握微机的工作原理。
(2)实验内容:观察并记录微机工作过程中的各个阶段,如指令的取指、译码、执行等。
(3)实验步骤:①观察微机工作过程中的各个阶段;②了解各个阶段的功能和作用;③分析微机工作原理。
3. 指令系统实验(1)实验目的:熟悉汇编语言指令系统。
(2)实验内容:学习汇编语言的基本指令,如数据传送指令、算术运算指令、逻辑运算指令等。
(3)实验步骤:①学习汇编语言的基本指令;②编写简单的汇编语言程序,实现数据传送、算术运算、逻辑运算等功能;③调试程序,观察程序运行结果。
4. 汇编语言程序设计实验(1)实验目的:提高汇编语言程序设计能力。
(2)实验内容:编写一个汇编语言程序,实现以下功能:①计算两个数的和;②判断一个数是否为偶数;③输出程序运行结果。
(3)实验步骤:①编写汇编语言程序,实现上述功能;②调试程序,观察程序运行结果;③分析程序运行过程,确保程序正确性。
三、实验结果与分析1. 微机系统组成实验:通过观察和记录微机系统的各个部件,了解了微机的基本组成和各部件的功能。
2. 微机工作原理实验:通过观察微机工作过程中的各个阶段,掌握了微机的工作原理。
3. 指令系统实验:通过学习汇编语言的基本指令,熟悉了汇编语言指令系统。
4. 汇编语言程序设计实验:通过编写汇编语言程序,提高了汇编语言程序设计能力。
四、实验心得通过本次微机原理实验,我对微机的基本组成、工作原理和指令系统有了更深入的了解。
《微机》实验报告格式
《微机》实验报告格式一、实验名称清晰明确地写出本次微机实验的名称,例如:“微机系统性能测试实验”、“微机硬件组装与调试实验”等。
二、实验目的简要阐述进行本次实验的主要目的,例如:1、熟悉微机的硬件组成和结构。
2、掌握微机操作系统的基本操作和设置。
3、学会使用相关软件对微机性能进行测试和评估。
三、实验设备列出实验中所使用到的主要设备和工具,包括微机主机、显示器、键盘、鼠标、各种连接线、安装盘、测试软件等,并注明其型号、规格等相关信息。
四、实验原理对实验所依据的原理进行简要说明,这部分内容应包括相关的理论知识、技术规范和操作流程等。
例如,如果是微机硬件组装实验,需要说明各个硬件组件的功能、接口类型以及组装的顺序和注意事项;如果是性能测试实验,则需要解释测试指标的含义和计算方法,以及所使用测试软件的工作原理。
五、实验步骤详细描述实验的具体操作步骤,这是实验报告的核心部分。
步骤应清晰、准确、可操作性强,以便他人能够按照此步骤重复实验。
例如:1、硬件组装步骤(1)准备好所需的硬件组件和工具,将主机箱平放在桌面上,并打开侧面板。
(2)安装 CPU,注意对准插槽和方向,轻轻按下并扣好固定杆。
(3)安装内存,将内存条插入对应的插槽,确保两端卡扣卡住。
(4)安装硬盘和光驱,将其固定在机箱的相应位置,并连接数据线和电源线。
(5)安装显卡、声卡等扩展卡,插入插槽并固定。
(6)连接各种电源线、数据线和跳线,包括主板电源、CPU 电源、硬盘数据线、光驱数据线等。
(7)检查连接无误后,盖上机箱侧面板,插上电源,准备开机测试。
2、软件安装与设置步骤(1)将操作系统安装盘放入光驱,开机按提示进入 BIOS 设置,将启动顺序设置为光驱优先。
(2)按照安装向导的提示,进行操作系统的安装,包括选择安装分区、输入序列号、设置用户名和密码等。
(3)安装驱动程序,包括主板驱动、显卡驱动、声卡驱动等,可以使用随机附带的驱动光盘或者从网上下载最新的驱动程序。
微机基础实验报告
一、实验目的1. 熟悉微机的基本结构和工作原理。
2. 掌握微机基本操作,包括启动、关闭、使用键盘和鼠标等。
3. 学习微机操作系统的基础知识,包括文件管理、程序管理、系统设置等。
4. 培养动手能力和独立解决问题的能力。
二、实验环境1. 硬件环境:微机一台、显示器一台、键盘一个、鼠标一个。
2. 软件环境:Windows操作系统、常用办公软件等。
三、实验内容及步骤1. 微机基本结构和工作原理(1)观察微机外部结构,了解各部件的名称和功能。
(2)打开微机,观察启动过程,了解微机自检和启动顺序。
(3)学习微机内部结构,了解CPU、内存、硬盘、显卡等部件的功能。
(4)了解微机工作原理,包括指令执行过程、数据传输过程等。
2. 微机基本操作(1)学习启动和关闭微机的方法,了解安全关机的重要性。
(2)学习使用键盘和鼠标进行基本操作,如打开、关闭程序、切换窗口等。
(3)学习使用快捷键提高工作效率。
3. 微机操作系统基础知识(1)学习Windows操作系统的基本界面和功能。
(2)学习文件管理,包括创建、复制、移动、删除文件和文件夹等操作。
(3)学习程序管理,包括安装、卸载、运行程序等操作。
(4)学习系统设置,包括显示设置、声音设置、网络设置等。
4. 实验练习(1)练习使用Windows自带的画图软件,绘制简单的图形。
(2)练习使用Word文档编辑功能,制作一份简单的文档。
(3)练习使用Excel表格处理功能,制作一份简单的表格。
(4)练习使用PowerPoint演示文稿制作功能,制作一份简单的演示文稿。
四、实验结果与分析1. 实验结果通过本次实验,我们熟悉了微机的基本结构和工作原理,掌握了微机基本操作,学习了微机操作系统基础知识,并能够运用所学知识解决实际问题。
2. 实验分析(1)在实验过程中,我们发现微机的基本操作对于提高工作效率具有重要意义。
熟练掌握键盘和鼠标操作,能够使我们更加高效地完成工作。
(2)在文件管理方面,了解文件和文件夹的基本操作,有助于我们更好地管理计算机中的数据。
实训4微机配置方案设计实训报告
实训4微机配置方案设计实训报告实训4:微机配置方案设计一、实训目的通过本次实训,我们的目标是设计一套合适的微机配置方案,以满足用户的需求,提高工作效率和性能。
二、实训背景随着信息时代的到来,计算机已成为我们日常工作和学习中必不可少的工具。
而随着科技的不断进步,计算机的性能和配置也越来越高。
因此,在购买和配置计算机时,我们需要根据实际需求和预算进行选择和调整。
三、实训内容和步骤1.需求分析:首先,我们需要了解用户的需求。
比如,用户是否需要处理大型图像和视频等任务,是否需要进行大量的数据分析和计算,以及是否需要同时运行多个复杂的软件等。
这些需求将决定我们配置的方向和重点。
2.配置选择:根据用户的需求,我们可以选择适当的配置方案。
一般而言,我们需要考虑以下几个方面:-处理器(CPU):选择高性能的多核心处理器,以便同时运行多个任务和应用程序。
-内存(RAM):选择足够大容量的内存,以保证系统的稳定运行和快速响应。
-硬盘(HDD或SSD):选择高速、大容量的硬盘,以存储和传输大量的数据。
-图形处理器(GPU):选择性能强大的独立显卡,以满足图像和视频处理需求。
-显示器:选择分辨率高、色彩准确的显示器,以获得更好的视觉体验。
-输入设备:选择符合个人使用习惯的键盘和鼠标,以提高工作效率。
-其他硬件(如主板、电源等)的选择也需要根据用户需求和预算进行调整。
3. 操作系统选择:根据用户的需求和软件的兼容性,我们可以选择合适的操作系统。
例如,Windows操作系统适用于大多数商业和个人用户,而Mac OS适用于创意和设计行业,Linux适用于开发和科研领域。
4.安装和调试:在配置完成后,我们需要进行操作系统和软件的安装和调试,以确保系统的稳定运行和性能表现。
同时,我们还可以根据实际情况进行一些优化和调整,以提高系统的性能和响应速度。
四、配置方案的设计和实施效果基于以上的分析和考虑,我们可以设计出一套合适的配置方案。
2023年微机实验报告完整版
《微机试验》汇报试验名称 KeilC旳使用与汇编语言上机操作指导教师刘小英专业班级中法1201 姓名肖洋学号 U 联络一、任务规定1.掌握KeilC环境旳使用1)字节拆分、合并:调试e421.asm程序,观测有关寄存器和单元旳内容。
2)数据块填充:调试fill.asm程序,观测有关寄存器和单元旳内容。
2. 编写两个十六位数旳加法程序。
有两个十六位无符号数,分别寄存在从20H和30H开始旳数据区中,低八位先存,高八位在后,和存于R3(高八位)和R4(低八位),进位位存于R2。
二、设计思绪1.字节拆分、合并程序:运用汇编语言中旳 XCHD 和 SWAP 两个语句来实现将八位二进制数拆分为两个四位二进制数并分别存储于不一样旳存储空间旳功能,BCD 码与 30H 相或(加上 30H)得到 ASCII 码。
将两个 ASCII 码和 0FH 相与(高四位清零)得到 BCD 码,运用 SWAP 语句将高位数放至高四位,将高位数和低位数相或可实现字节旳合并。
2.数据块填充程序:将 R0 用作计数器,DPTR 用作片外数据指针,A 作为原始数据来源,依次序在片外旳存储单元内容填充数据。
运用循环语句来减少程序长度,并控制填充单元个数为片外 100H 个。
(通过 R0 旳进位控制)3.两个十六位数加法程序:把第一种十六位无符号数旳地八位和高八位分别存于 20H 和21H 中,把第二个十六位无符号数旳地八位和高八位分别存于 30H 和 31H 中,对 20H 和30H 中旳两个低八位进行 ADD 加法操作,成果存于 R4 中;然后对 21H 和 31H 中旳两个高八位进行 ADDC 带进位旳加法操作,成果存于 R3 中.然后将累加器 A 清零,并和#00H 进行 ADDC 带进位旳加法操作,成果产生进位数并存于 R2 中,程序结束。
三、资源分派1. 字节拆分、合并程序:片内 30H 单位寄存原 BCD 码,31H 和 32H 寄存拆分后旳两个 ASCII 码,33H 寄存合并后旳 BCD 码。
微机系统实验报告
微机系统实验报告一、实验目的本次微机系统实验的主要目的是通过实际操作和研究,深入了解微机系统的组成、工作原理以及相关的硬件和软件技术,提高我们对计算机系统的理解和应用能力。
二、实验设备与环境本次实验所使用的设备包括一台配备有英特尔酷睿 i5 处理器、8GB 内存、512GB 固态硬盘的微机,以及相关的实验仪器和软件,如逻辑分析仪、示波器、编译软件等。
实验环境为 Windows 10 操作系统。
三、实验内容与步骤(一)微机系统硬件组成的认识首先,我们对微机系统的硬件组成进行了详细的观察和学习。
打开计算机主机箱,我们可以看到主板、CPU、内存、硬盘、显卡、声卡等主要硬件组件。
通过观察它们的外观、接口和标识,了解了它们的功能和作用。
(二)CPU 性能测试使用专门的 CPU 性能测试软件,对微机的 CPU 进行了性能测试。
在测试过程中,我们记录了 CPU 的主频、核心数、线程数等参数,并观察了其在不同负载下的性能表现,如处理单线程任务和多线程任务时的速度和效率。
(三)内存性能测试通过内存测试软件,对微机的内存进行了读写速度、延迟等性能指标的测试。
同时,还研究了不同内存容量和频率对系统性能的影响。
(四)硬盘性能测试利用硬盘性能测试工具,对微机的固态硬盘进行了顺序读写、随机读写等性能测试。
分析了硬盘的读写速度、访问时间等参数,评估了其对系统整体性能的贡献。
(五)显卡性能测试使用显卡性能测试软件,对微机的显卡进行了图形处理能力的测试。
包括 3D 渲染、游戏性能等方面的测试,了解了显卡在不同应用场景下的表现。
(六)系统稳定性测试为了确保微机系统在长时间运行中的稳定性,我们进行了长时间的压力测试。
通过运行大型软件、多任务处理等方式,观察系统是否出现死机、蓝屏等故障。
四、实验结果与分析(一)CPU 性能测试结果经过测试,我们发现微机所配备的英特尔酷睿 i5 处理器在处理单线程任务时表现出色,其主频较高,能够快速完成单个任务。
微机课程设计报告
微机课程设计报告一、课程目标知识目标:1. 理解微机的基本组成、工作原理及各部件的功能;2. 掌握微机编程的基本语法和常用指令;3. 学会使用微机进行简单的数据采集、处理和输出。
技能目标:1. 能够独立完成微机的基本操作和编程;2. 能够运用所学知识解决实际问题,设计简单的微机控制系统;3. 能够进行团队协作,共同完成微机课程设计项目。
情感态度价值观目标:1. 培养学生对微机技术的兴趣,激发学习热情;2. 培养学生的创新意识和实践能力,提高解决实际问题的信心;3. 培养学生良好的团队协作精神和沟通能力,增强集体荣誉感。
课程性质:本课程为实践性较强的学科,注重理论知识与实际操作的结合。
学生特点:本年级学生具备一定的电子技术基础和编程能力,对新鲜事物充满好奇,喜欢动手实践。
教学要求:结合学生特点,注重启发式教学,引导学生主动探究,提高学生的实践操作能力和创新能力。
将课程目标分解为具体的学习成果,便于教学设计和评估。
在教学过程中,关注学生的学习反馈,及时调整教学策略,确保课程目标的达成。
二、教学内容根据课程目标,本课程教学内容分为以下三个部分:1. 微机基本原理与组成- 教材章节:第一章 微机系统概述- 内容:微机的发展历程、基本组成(CPU、存储器、输入输出接口等)、工作原理及性能指标。
2. 微机编程与控制- 教材章节:第二章 微机编程基础、第三章 微机接口技术- 内容:编程语言(汇编语言、C语言)、常用指令、程序结构、接口技术、中断处理等。
- 实践项目:设计简单的微机控制系统,如温度控制器、交通灯控制系统等。
3. 微机应用案例分析- 教材章节:第四章 微机应用系统- 内容:微机在工业控制、智能家居、物联网等领域的应用案例。
- 实践项目:分析并仿照实际应用案例,设计具有实际意义的微机应用系统。
教学进度安排:- 第1周:微机基本原理与组成- 第2-3周:微机编程与控制- 第4-5周:微机应用案例分析及实践项目设计教学内容确保科学性和系统性,注重理论与实践相结合,引导学生通过实践项目,将所学知识应用于实际问题中,提高学生的综合能力。
最新微机实验报告六
最新微机实验报告六实验目的:1. 熟悉微机系统的基本组成和工作原理。
2. 掌握微处理器的指令集及其使用方法。
3. 学习如何编写和调试汇编语言程序。
4. 理解中断处理机制及其在微机系统中的应用。
实验内容:1. 实验一:微机系统组成与工作原理- 研究微机的基本硬件组成,包括中央处理器(CPU)、内存、输入输出设备等。
- 通过实验设备,观察并理解微机的启动过程和操作系统的加载过程。
2. 实验二:微处理器指令集学习- 学习x86架构的微处理器指令集,包括数据传输、算术运算、逻辑运算和控制转移指令。
- 编写简单的汇编程序,实现指定的算法或功能。
3. 实验三:汇编语言程序设计与调试- 使用汇编语言编写程序,实现数据的输入输出操作。
- 利用调试工具进行程序调试,理解程序执行过程中的寄存器状态、内存变化等。
4. 实验四:中断处理机制- 学习中断的基本概念,包括中断源、中断向量、中断服务程序等。
- 编写中断服务程序,实现对外部设备的响应和处理。
实验环境:- 实验设备:个人计算机,装配有最新的操作系统和汇编语言开发环境。
- 软件工具:汇编器、调试器、编程IDE等。
实验步骤:1. 按照实验指导书的说明,搭建实验环境。
2. 完成每个实验的预习,理解实验的理论基础。
3. 按照实验步骤,逐步进行实验操作。
4. 记录实验数据和结果,撰写实验报告。
实验结果:- 成功搭建了微机实验环境,并完成了系统的启动和操作系统加载的观察。
- 掌握了x86架构微处理器的基本指令集,并能够编写简单的汇编程序。
- 通过调试工具,成功定位并修正了程序中的错误。
- 编写了中断服务程序,并成功实现了对模拟中断信号的处理。
实验结论:通过本次实验,加深了对微机系统工作原理的理解,熟悉了微处理器的指令集和汇编语言程序的编写。
同时,通过中断处理机制的学习,理解了其在微机系统中的重要性和应用方式。
实验过程中遇到的问题和解决方法也为今后的学习和研究打下了良好的基础。
微机综合课程设计实习报告
一、实习背景随着我国科技的快速发展,计算机技术已成为现代科技的核心。
为了提高学生的实际操作能力和综合运用计算机技术的能力,我们学校开展了微机综合课程设计实习。
本次实习旨在通过实际操作,让学生掌握微机原理、接口技术、操作系统等知识,提高学生的实践能力。
二、实习目的1. 熟悉微机原理,了解计算机硬件组成及工作原理。
2. 掌握微机接口技术,熟悉常用接口芯片的使用方法。
3. 掌握操作系统基本知识,了解操作系统的功能和原理。
4. 培养学生独立思考和解决问题的能力。
5. 提高学生的团队协作能力和沟通能力。
三、实习内容1. 硬件组成及工作原理实习过程中,我们首先学习了计算机硬件组成及工作原理。
通过对CPU、内存、硬盘、显卡等硬件设备的了解,掌握了计算机硬件的基本知识。
2. 微机接口技术实习中,我们学习了微机接口技术,包括并行接口、串行接口、USB接口等。
通过实际操作,掌握了常用接口芯片(如8255、8251、74HC245等)的使用方法。
3. 操作系统我们学习了操作系统的基本知识,包括进程管理、内存管理、文件系统等。
通过实际操作,掌握了操作系统的基本功能。
4. 课程设计在实习过程中,我们进行了微机综合课程设计。
设计内容包括:(1)设计一个基于单片机的电子钟,要求具有定时、闹钟、时间显示等功能。
(2)设计一个基于PC机的交通灯控制系统,要求实现红绿灯的自动切换。
(3)设计一个基于PC机的简易电子琴,要求能演奏简单的旋律。
四、实习过程1. 实习初期,我们通过查阅资料、课堂学习,掌握了微机原理、接口技术和操作系统等基本知识。
2. 在实习过程中,我们按照课程设计要求,分组进行设计。
每组同学负责设计一个项目,并共同完成。
3. 在设计过程中,我们遇到了许多问题,如电路设计、程序编写等。
通过查阅资料、请教老师和同学,我们逐一解决了这些问题。
4. 实习中期,我们进行了项目调试。
在调试过程中,我们不断优化程序,提高系统的稳定性。
西电微机实验报告
西电微机实验报告引言本实验通过学习微机原理和使用相应软件工具,掌握西电微机的基本配置和操作。
本实验主要包括硬件部分和软件部分。
硬件部分主要涉及微机组成和接线;软件部分则包括微机启动和应用软件的使用。
通过本实验,可以加深对微机原理的理解和掌握西电微机的使用。
实验内容硬件部分1. 搭建微机系统主机和外设的连接。
按照提供的连接图和说明,连接主机和显示器、键盘、鼠标、扬声器等外设,并确认连接无误。
2. 检查硬件接线。
确认各个连接口的接触良好,避免松动或脱落导致电流不稳定或数据传输错误。
软件部分1. 启动微机系统。
按照提供的启动指南,打开电源,并检查显示器是否正常显示主机开机画面。
2. 学习操作系统的基本使用。
熟悉微机系统的操作界面、文件管理、软件运行等基本操作,并能够通过鼠标和键盘完成相应操作。
3. 运行应用软件。
通过应用软件,如文档编辑、图片处理、音频播放等,来实践操作系统的使用。
实验结果在硬件部分,我根据提供的连接图和说明,顺利地连接了主机和外设。
在检查硬件接线时,我认真检查了每个连接口,确保其接触良好。
在软件部分,启动微机系统时,显示器正常显示主机开机画面。
通过学习操作系统的基本使用,我掌握了微机系统的操作界面,并能够通过鼠标和键盘完成相应操作。
在运行应用软件时,我成功地进行了文档编辑、图片处理和音频播放等操作。
总体来说,硬件和软件部分的实验都在我的预期范围内顺利进行,并且能够熟练地使用微机系统进行各种操作。
实验总结通过本次实验,我对微机原理有了更深入的了解,掌握了西电微机的基本配置和操作。
通过实际操作,我对微机系统的组成和连接方式有了更直观的认识,并能够独立完成硬件的搭建和连接。
在软件部分,通过学习操作系统的基本使用和运行应用软件,我对微机系统的操作界面和功能有了更深入的理解。
我能够通过鼠标和键盘完成各种操作,并熟练地运行应用软件。
通过本次实验,我不仅加深了对微机原理的理解,同时也提高了自己的动手能力和问题解决能力。
微机原理实验报告
微机原理实验报告一、实验目的本实验旨在通过实际操控和操作微型计算机,深入了解微机系统的组成和工作原理,加深对计算机硬件结构以及基本操作的理解,培养实际动手能力。
二、实验内容1.熟悉微机系统组成部分:主机、显示器、键盘等。
2.掌握微机系统的基本操作:开机、关机、复位、重启等。
3.了解微机系统的工作原理:运行机制、输入输出等。
4.实践运用微机系统进行一些简单的应用操作。
三、实验步骤1.开机操作:按下主机电源按钮,等待主机启动。
2.系统自检:主机启动后会进行自检操作,检查硬件是否正常。
如果发现问题,主机会发出蜂鸣声。
3.输入输出设备准备:连接好显示器和键盘,并检查是否正常连接。
4.系统登录:按照屏幕上的提示,输入用户名和密码进行系统登录。
5.系统操作:根据实验要求,进行相应的系统操作。
6.关机操作:在操作完成后,选择关机选项进行关机。
四、实验结果与分析通过本次实验,我掌握了微机系统的基本操作,并对其工作原理有了更深入的了解。
通过实际操作,我可以熟练地开机、关机、复位等操作,并可以进行一些简单的应用操作。
同时,我也了解到了微机系统由主机、显示器、键盘等多个组成部分组成,不同组成部分的协作工作实现了系统的正常运行。
五、实验心得通过本次实验,我对微机系统的组成和工作原理有了更深入的了解。
这对我后续学习计算机原理和操作系统提供了基础。
在实验过程中,我也发现了一些问题,比如操作系统选择界面的选择问题,我没有选择正确的操作系统,导致后续实验操作遇到一些困难。
这些问题提醒我在实际操作中需要格外注意,仔细阅读提示并选择正确的操作选项。
总结来说,本次实验对我深入理解微机系统的组成和工作原理提供了良好的机会。
通过实际操控和操作微型计算机,我对计算机硬件结构以及基本操作有了更直观的认识,掌握了一些基本操作技能。
在未来的学习和应用中,我将更加注重细节,提高自己的操作技能,并不断深入学习和了解更多关于微机系统的知识。
微机课设报告终极版54
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根保通据护过生高管产中线工资敷艺料设高试技中卷术资配0料不置试仅技卷可术要以是求解指,决机对吊组电顶在气层进设配行备置继进不电行规保空范护载高高与中中带资资负料料荷试试下卷卷高问总中题体资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况中卷下,安与要全过加,度强并工看且作护尽下关可都于能可管地以路缩正高小常中故工资障作料高;试中对卷资于连料继接试电管卷保口破护处坏进理范行高围整中,核资或对料者定试对值卷某,弯些审扁异核度常与固高校定中对盒资图位料纸置试,.卷保编工护写况层复进防杂行腐设自跨备动接与处地装理线置,弯高尤曲中其半资要径料避标试免高卷错等调误,试高要方中求案资技,料术编试交写5、卷底重电保。要气护管设设装线备备置敷4高、调动设中电试作技资气高,术料课中并中3试、件资且包卷管中料拒含试路调试绝线验敷试卷动槽方设技作、案技术,管以术来架及避等系免多统不项启必方动要式方高,案中为;资解对料决整试高套卷中启突语动然文过停电程机气中。课高因件中此中资,管料电壁试力薄卷高、电中接气资口设料不备试严进卷等行保问调护题试装,工置合作调理并试利且技用进术管行,线过要敷关求设运电技行力术高保。中护线资装缆料置敷试做设卷到原技准则术确:指灵在导活分。。线对对盒于于处调差,试动当过保不程护同中装电高置压中高回资中路料资交试料叉卷试时技卷,术调应问试采题技用,术金作是属为指隔调发板试电进人机行员一隔,变开需压处要器理在组;事在同前发一掌生线握内槽图部内纸故,资障强料时电、,回设需路备要须制进同造行时厂外切家部断出电习具源题高高电中中源资资,料料线试试缆卷卷敷试切设验除完报从毕告而,与采要相用进关高行技中检术资查资料和料试检,卷测并主处且要理了保。解护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
微机实验报告
微机实验报告一、引言微机是一种非常重要的工具,它广泛应用于各个领域。
本篇实验报告将介绍我在微机实验中的实践经历和实验结果,以及我对于微机在未来发展的一些思考。
二、实验目的本次实验的主要目的是掌握微机的基本原理和操作方法,了解计算机的内部构造和各个组成部分之间的工作原理。
三、实验步骤1. 实验前的准备工作在实验开始之前,我们首先需要对微机的硬件和软件进行一些基本设置,包括硬盘分区、安装操作系统以及驱动程序等。
这些准备工作非常重要,它们直接影响到我们后续的实验操作。
2. 实验中的操作练习在实验过程中,我通过对微机的操作练习,逐渐熟悉了操作系统的界面、文件管理、软件的安装和卸载等操作。
同时,我还学习了一些常用的办公软件和计算机网络的基本知识。
3. 实验的数据处理和分析在实验过程中,我将自己收集到的数据进行了处理和分析。
通过对数据的统计和图表制作,我可以更直观地了解数据的规律和变化趋势,进一步加深对实验内容的理解。
四、实验结果在实验进行中,我成功完成了操作系统的安装和配置、网络连接的设置、文件的创建与管理等操作。
同时,我还进一步了解了计算机硬件的构造和各个组件的功能。
五、对微机未来发展的思考在我完成这次微机实验的过程中,我深刻认识到微机在现代社会中的重要性和广泛应用。
随着科技的不断进步,微机的发展也将会愈加迅猛。
我相信未来的微机将更加智能化和高效化,它不仅可以简化人们的工作和生活,还可以推动社会进步和科学研究。
在未来,微机可能会融入更多的领域,如医疗、教育、交通等。
我们可以设想,通过微机的高性能计算和先进的数据处理能力,医生可以更准确地诊断疾病,教师可以创建更具互动性的教学环境,交通系统可以更快速地响应和处理各种情况。
同时,微机的发展也将带来更多的创新和机会,为我们的生活增添更多便利和福祉。
六、总结通过这次微机实验,我不仅学到了实践技能,还对于微机的发展有了更加深入的认识。
微机是人类科技发展的重要成果之一,它对于推动社会进步和个人成长具有不可比拟的作用。
微机原理实验报告
微机原理实验报告实验目的,通过本次实验,掌握微机原理的基本知识,了解微机系统的组成和工作原理,掌握微机系统的组装和调试方法。
实验一,微机系统组成及工作原理。
1.1 微机系统的组成。
微机系统由中央处理器(CPU)、内存、输入设备、输出设备和外部设备等组成。
其中,CPU是微机系统的核心部件,负责控制整个系统的运行。
1.2 微机系统的工作原理。
微机系统的工作原理是通过CPU对内存中的指令进行解释和执行,从而实现各种功能。
CPU通过总线与内存、输入输出设备进行数据传输和控制信号的交换,实现对整个系统的控制和管理。
实验二,微机系统的组装和调试。
2.1 微机系统的组装。
在组装微机系统时,首先要选择合适的主板、CPU、内存、硬盘等配件,然后按照正确的安装顺序和方法进行组装。
组装完成后,还需连接电源、显示器、键盘、鼠标等外部设备。
2.2 微机系统的调试。
组装完成后,需要对微机系统进行调试,检查各个部件是否连接正确,是否能够正常工作。
通过BIOS设置和操作系统的安装,完成对微机系统的调试和配置。
实验三,微机系统的应用。
3.1 微机系统的应用领域。
微机系统广泛应用于各个领域,如办公、教育、科研、娱乐等。
在办公领域,微机系统可以用于文字处理、表格制作、图像处理等;在教育领域,微机系统可以用于多媒体教学、网络教学等。
3.2 微机系统的发展趋势。
随着科技的不断发展,微机系统也在不断更新换代,性能不断提升,体积不断缩小,功耗不断降低。
未来,微机系统将更加智能化、便携化,成为人们生活、工作不可或缺的一部分。
结论,通过本次实验,我对微机原理有了更深入的了解,掌握了微机系统的组成和工作原理,了解了微机系统的组装和调试方法,对微机系统的应用和发展趋势也有了一定的认识。
这对我今后的学习和工作将有很大的帮助。
南理工微机实验报告
南理工微机实验报告篇一:南京理工大学微机实验报告微机实验报告实验2.1汇编语言程序的调试与运行思考题:1、带进位加法程序:DISP MACRO XMOV DL,XMOV AH,02HINT 21HENDMDATA SEGMENTDATA1 DB'65087'DATA2 DB'75087'N EQU $-DATA2DATA ENDSSTACK SEGMENT STACKSTA DB 20 DUP (?)TOP EQU $-STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START:MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXLEA SI,DATA1MOV BX,0MOV CX,NCALL DISPLDISP '+'LEA SI,DATA2MOV BX,0MOV CX,NCALL DISPLDISP '='LEA DI,DATA1MOV CX,NCALL ADDALEA SI,DATA1MOV BX,0MOV CX,NCMP DL,0JZ NEXTDISP '1'NEXT: CALL DISPLDISP 0DHDISP 0AHMOV AX,4C00HINT 21HDISPL PROCDS1:MOV AH,02HMOV DL,[SI+BX]INT 21HINC BXLOOP DS1RETDISPL ENDPADDA PROCPUSH CXMOV BX,0AD1:SUB BYTE PTR [SI+BX],30H SUB BYTE PTR [DI+BX],30HINC BXLOOP AD1POP CXPUSH CXMOV BX,N-1CLCAD2:MOV AL,[SI+BX]ADC AL,[DI+BX]AAAMOV [DI+BX],ALDEC BXLOOP AD2POP CXPUSH CXMOV BX,0MOV DL,0JNC AD3MOV DL,1AD3:ADD BYTE PTR [DI+BX],30H INC BXLOOP AD3POP CXRETADDA ENDPCODE ENDSEND START结果截图:2、上机步骤,调试方法:1、写代码完成功能要求,文件格式为.asm文件(如21si.asm),将文件放入带汇编工具的文件夹中,即含有汇编工具(MASM.EXE)和链接工具(LINK.EXE)的文件夹。
微机原理实验报告
微机原理实验报告
一、实验目的
本次实验的主要目的是了解微机原理、学习微机的基础知识、技能和操作方法,还有熟悉微机实验室的使用方法。
二、实验过程
在实验室中,我们首先进行了掌握微处理器的基本指令集和编程技巧的实验。
通过对微处理器的学习,我们了解到了微处理器的组成结构和工作原理,同时也了解了微处理器的基础指令集,包括数据的传送、算术、逻辑、分支、循环指令等等。
接着我们进行了CPU总线实验。
通过对CPU总线的学习,我们了解了CPU读写内部和外部存储器的方法和原理。
同时,我们学习了编写程序来控制CPU读写存储器等。
最后,我们进行了8255并行接口控制实验。
通过学习并实践8255并行接口控制实验,我们了解了接口及其编程。
三、实验结果
在实验中,我们成功地掌握了微处理器的基本指令集和编程技巧,了解了微处理器的组成结构和工作原理,同时掌握了CPU总
线实验和8255并行接口控制实验。
在实验中不仅增长了专业知识,而且也培养了我们的实验能力,并进一步增强了我们的实践能力。
四、实验心得
通过这次实验,我们意识到,要想成为一名优秀的计算机专业
人才,必须首先打牢微机原理的基础,通过大量的实践和实验,
来应用理论知识,深入了解计算机底层的数据处理方式以及处理
器和存储器的工作原理。
只有这样才能够在日后工作中运用自如,并且在以后的学习和研究中更具备竞争力。
在以后的学习中,我将持续学习和实践,不断探索和发现,提
升自身的能力,为未来的发展做好充分的准备。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中山大学微机实验期末设计报告贪吃蛇游戏设计年级专业:10电子学号:10380042姓名:林俊良2012/12/25对使用汇编设计贪吃蛇游戏作详细说明,包括概述,设计要求,设计方案,实验电路,设计思路,程序流程图,总结。
目录概述 (3)设计要求 (3)设计方案 (3)实验电路 (4)设计思路 (6)程序流程图 (8)总结 (17)附录 (18)概述一个学期的微机实验的学习与实践,不仅让我进一步巩固了微机的理论知识,而且也加深了我对汇编语言的认识和理解。
由于平常都习惯与用高级语言进行开发和设计,所以刚开始使用汇编语言时会感到很生硬。
但是随着时间推移,会慢慢地发现汇编语言更适宜用作底层硬件的开发。
通过编写汇编程序能使我们更好的了解底层的硬件结构和工作原理。
尤其在对执行速度要求比较苛刻的情况下,汇编语言相对于高级语言有着不可比拟的优势。
期末设计我选择的贪吃蛇游戏设计,原因是一方面可以接触到DOS系统的图像绘制方法,使对基于图像的编程有更好的认识;另一方面,2D游戏设计比其他系统的控制更有挑战性,其逻辑性,技巧性更强,也对执行速度更敏感。
本设计以贪吃蛇游戏为主体,进一步熟悉8253、8255、74LS244、ADC0809和中断的应用以及加深对汇编程序设计的理解,并对整个学期所学内容作了全面的回顾。
设计要求1、实现贪吃蛇在屏幕上显示和向前移动,用8253作定时,当到达边界时会在与之相对的另一个边界出现。
2、游戏接收键盘的方向键控制,实时调整前进方向,当按下ESC键,游戏退出。
3、实现碰撞检测,当贪吃蛇头部碰到自己的身体时,输掉游戏,游戏结束。
4、实现捕食猎物,当头部碰到猎物时,增加游戏得分,贪吃蛇长度增加,猎物消失,并随机在某个地方出现。
5、游戏得分实时显示在数码管上。
6、用手动单脉冲作为中断源,但按下时,游戏暂停,但数码管正常显示。
当再次按下时,游戏继续。
7、引入A/D转换器作为速度调节装置,通过读取可调电阻上的压降决定贪吃蛇前进速度的快慢,并将速度显示在LED彩灯上,速度越快,彩灯亮的越多。
8、当游戏结束时,根据输赢用点阵滚动显示“YOU WIN”或“YOU LOSE”。
9、引入扬声器,当捕食成功时扬声器响一下,当游戏结束时,根据输赢播放一段音乐。
设计方案系统整体框图如图1所示,本设计综合应用了8253、8255、ADC0809、74LS244和8259等芯片,并且由于需要实现的功能较多,部分芯片进行了复用。
图 1 系统整体框图实验电路各部分电路连接图如图2-7所示。
+5V图 2 74LS244连接图扬声器8255PA71MHZ图 3 8253连接图a e dbc fg8253GATE2S0S1L2L3L4L5L6L7数码管发光二极管图 4 8255连接图图 5 ADC0809连接图8255扬声器图 6 扬声器连接图图 7 外部中断连接图设计思路1、绘图引擎:由于是绘制图形,所以必须选择图形模式,其中分辨率有640×480、640×350、320×200和160×200,分辨率太高会使得贪吃蛇显得太细,所以选择320×200。
绘制游戏主角贪吃蛇的方法可以是每次显示先清除整个屏幕,再逐个绘制像素点,但这样效率比较低。
想到贪吃蛇每次只移动一格,前后两次图像的有差别的像素点只在贪吃蛇的头部和尾部,所以有了另一个方法,第一次先绘制整幅图像,以后每次擦除尾部并绘制头部,如图8。
这样当贪吃蛇的长度变得很长的时候,绘制过程也不会占用更多的时间。
图 8 绘制示意图2、数据结构:由于贪吃蛇的本质就是一系列的点,所以只需要在内存中开辟一块足够大的空间,按从头部到尾部的顺序存储每个点的横坐标和纵坐标,就可以完整地存储它的所有信息,猎物的信息也是只需要标记其横坐标和纵坐标。
当贪吃蛇移动时,有两种算法记录它的坐标变化,第一种是,再用一个变量head记录存储其头部坐标的内存偏移量,并把记录整个贪吃蛇位置的内存块当成一个头尾相接的环,这样每次移动就可以直接把新的头部坐标填到原来记录尾部坐标的内存中,并改变head的值,如图9。
另一种是以从后往前的顺序用前一个点的坐标覆盖后一个点,再改头部坐标为新的值。
虽然前者的效率更高,但是考虑到当贪吃蛇长度变化时算法会变得复杂,而且处理的数据量并不大,所以本设计采用第二种方法。
图 9 移动示意图3、数码管显示:由于2位的数码管显示必须不断刷新才可以看到2位数,而贪吃蛇移动完一格是要停顿一段时间的,所以可以在停顿的延时里边延时边刷新数码管的显示。
4、产生随机数:由于猎物被贪吃蛇捕食后要随机在屏幕的某个位置出现,所以需要能产生随机数。
汇编语言本身没有产生随机数的中断调用,但是考虑到系统时间是在不断改变的,所以可以通过调用中断获取系统时间,再通过系统时间来产生伪随机数。
具体方法是获取当前秒数和百分之一秒数,将这两个数相乘,再按高位和低位拆分为新的两个数,最后分别对最大行数和最大列数求余就可以得到新的猎物坐标。
5、扬声器播放音乐:播放单频率音乐的办法有很多,其中典型的两个是,一,8253定时器0设为模式3接扬声器,利用8253定时器1触发中断,在中断服务程序中改定时器0的计数初值,从而实现发出频率不同的声音;二,利用8255和8253联合控制扬声器。
由于外部中断只提供了一个接口,而且已经用掉,所以只能用方法二。
为了充分利用贪吃蛇停顿时的时间,所以把播放音乐的部分也放在延时部分完成。
而在游戏结束时,则可以在点阵显示完一帧的间隙修改计数初值,实现发出频率不同的声音。
6、点阵滚动显示:由于点阵显示的原理与多位数码管相同,所以只需把要显示的图形先按列保存下来,然后逐列刷新点阵即可实现滚动显示效果。
程序流程图主程序流程图如图10。
图 10 主程序流程图该子程序要在游戏开始前绘制整个画面,由于320×200中一个像素点还是太小了,所以程序中通过线性变换,将1个坐标点投射到屏幕的1个8×8的像素点矩阵。
通过逐个绘制这些像素点矩阵,就可以显示出贪吃蛇和猎物。
其流程图如图11。
图 11 子程序DISPLAY流程图该子程序要接收键盘输入,其中方向键的ASCII码为0,可以通过扫描码来区分,而ESC 键的扫描码为0,但其ASCII码不同。
所以只需要将键盘输入与这5个键逐个比较就能区分了。
另外,应该注意到贪吃蛇不能反向移动,也就是说当移动方向是上下方向时,是不用响应上下方向键的,而当移动方向是左右方向时,也是不用响应左右方向键的。
其流程图如图12。
图 12 子程序CHECKKEY流程图3.子程序DELAY本设计的难点之一是要实现扬声器的发声与数码管的显示的并行处理,而这部分实现就给该子程序处理。
由于主程序已经设置好8253计数器2的模式和初值,所以只需要在需要发声的时候开启GATE2即可。
该子程序还需要根据A/D转换值设置延迟的多少,这个通过修改数码管循环显示的次数实现。
其流程图如图13。
图 13 子程序DELAY流程图4.子程序SMALL_DELAY该子程序根据给定值用8253的计数器0和1作精确延时。
其流程图如图14。
图 14 子程序SMALL_DELAY流程图5.子程序GETSPEED该子程序根据A/D转换值更新SPEED并将速度按等级显示到彩灯上。
其流程图如图15。
图 15 子程序GETSPEED流程图该子程序根据前进方向移动贪吃蛇。
当其移动超出屏幕范围时,要从另一边进来,即实现无边界。
由于需要做碰撞检测,所以逻辑比较复杂。
其流程图如图16。
图 16 子程序MOVE流程图该子程序负责刷新屏幕。
如果有吃到猎物就重绘猎物。
其流程图如图17。
图 17 子程序REFRESH流程图该子程序负责生成2个随机数作为新猎物横纵坐标。
随机数是通过当前时间得到的,由于当前的秒数和百分秒数都具有很大的不确定性,所以生成的坐标将会有很大的随机性。
注意要把坐标限制在屏幕可见范围之内,而且如果坐标与贪吃蛇身体某部分重叠,就要重新生成。
其流程图如图18。
图 18 子程序PLACE流程图9.子程序GAMEEND该子程序在游戏结束时调用,负责点阵滚动显示”YOUWIN”或”YOULOSE”2次(CX=2),并且每滚动3列(SI=DI/3)就播放一个频率的声音。
为了使点阵看起来不闪烁,整个字符串又不会滚动太快以致看不清,每帧图像会重复显示3次(I=3)。
其流程图如图19。
图 19 子程序GAMEEND流程图从最初决定设计题目为贪吃蛇到最后游戏成型,一共用了2周时间,但我觉得这2周时间用得很值,因为整个贪吃蛇游戏设计的综合性、逻辑性很强,通过设计使我的编程思想和编程能力都得到了很大的提升。
由于整个设计很有意义,使我在编写汇编的过程中充满了了乐趣。
特别是当我看到有同学真的会去玩这个游戏时,我很感动,因为这证明我的功夫没有白费。
这个设计综合使用了8255、8253、8259、ADC0832和74LS244共5种芯片和扬声器、点阵、数码管和LED彩灯共4种模块,不仅实现了贪吃蛇的一般性功能——移动、捕食和自杀,也提供了实时观察游戏得分(数码管)和实时调整游戏速度(可调电阻)的独特功能。
然而,虽然在游戏结束时有提供动态显示玩家输赢(点阵)和播放游戏结束音乐(扬声器)的功能,也添加了捕食成功时的音效,但是没有实现在游戏进行中播放背景音乐的功能,显然对玩家来说,游戏背景音乐对游戏的可玩程度占有非常重要的地位,这也是本设计的一大不足之处。
本设计还可以完善的功能还包括:1、添加游戏开始结束画面和选择菜单。
2、添加游戏关卡功能,每个关卡会有不同形状的障碍物(不能触碰)和猎人(会移动的障碍物)。
3、通过D/A转换器接扬声器的方式,播放混合频率的更真实的音乐(而不是一个时间段播放一个频率的单频率音乐),而音乐可以通过麦克风接A/D转换器事先采样得到。
;==========================================================;game : SNAKE;designer : Leo Lin;finish time: 2012/12/25;==========================================================IOY0 EQU 288HMY8253_0 EQU IOY0+00HMY8253_1 EQU IOY0+01HMY8253_2 EQU IOY0+02HMY8253_M EQU IOY0+03HIOY1 EQU 280HMY8255_A EQU IOY1+00HMY8255_B EQU IOY1+01HMY8255_C EQU IOY1+02HMY8255_M EQU IOY1+03HLS244 EQU 2A0HDAC0832 EQU 290HADC0809 EQU 299HDOT_ROW EQU 2A8HDOT_COL EQU 2B0HPS EQU 8 ;point sizeWID EQU 320/PS-1HEI EQU 200/PS-1DATA SEGMENTSNAKE DW 4H,5H,3H,5H,2H,5H,1H,5HDW 60 DUP(0)LEN DW 4ORIENT DW 1 ;0-LEFT,1-RIGHT,2-UP,3-DOWNORIENT1 DW 1 ;intermediate varible of ORIENT SUGAR DW 5H,4HRE_END DW 0H,0H,0H,0H ;[headx,heady,tailx,taily]RE_CLR DW 0C0AH,0H,0C00H,0H;[green,0,black,0]RE_ADD DB 0 ;0-no change,80H-length increase SPEED DW 5TOTAL DW 0 ;scoreWIN DW 0 ;0-normal,1-lose,2-win,3-suspendLED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH LIGHT DB 4H,0CH,1CH,3CH,7CH,0FCHI DB 0J DB 0HEAD_X DW 0HEAD_Y DW 0REM DW 0QUO DW 0YOUWIN DB 8 DUP(0)DB 40H,20H,1EH,20H,40H ;YDB 3CH,42H,42H,3CH,0H ;ODB 7CH,02H,02H,7CH,0H ;UDB 7CH,02H,3CH,02H,7CH,0H;WDB 42H,7EH,42H,0H ;IDB 7EH,20H,18H,04H,7EH ;NDB 8 DUP(0)YOULOSE DB 8 DUP(0)DB 40H,20H,1EH,20H,40H ;YDB 3CH,42H,42H,3CH,0H ;ODB 7CH,02H,02H,7CH,0H ;UDB 7EH,02H,02H ;LDB 3CH,42H,42H,3CH,0H ;ODB 32H,4AH,44H,0H ;SDB 7EH,4AH,4AH ;EDB 8 DUP(0)DOT_N DW $-YOULOSE-8SOUNDL DW 8E0H,9F7H,0B31H,0C8FH ;sound of winning SOUNDW DW 0C8FH,0B31H,9F7H,8E0H ;sound of losing SOUND_N DW $-SOUNDWSOUNDA DW 0 ;address of sound DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTART:MOV AX,DATAMOV DS,AXMOV ES,AXPUSH DSMOV AX,SEG INT3MOV DS,AXMOV DX,OFFSET INT3MOV AX,250BHINT 21H ;set IRQ3POP DSIN AL,21H ;open IRQ3 interrupt AND AL,0F7HOUT 21H,ALSTI ;admit interruptMOV DX,MY8255_M ;initial 8255MOV AL,80H ;A out, C outOUT DX,ALMOV DX,MY8253_MMOV AL,0B6H ;counter 2, mode 3 OUT DX,ALMOV DX,MY8253_2MOV AL,70H ;n=1136, freq=880Hz OUT DX,ALMOV AL,4HOUT DX,ALMOV AX,000DH ;320X200,16INT 10HCALL DISPLAYMAIN_LOOP:CALL CHECKKEYCALL DELAYCALL CHECKKEYMOV BX,ORIENT1MOV ORIENT,BXCALL MOVECALL REFRESHCMP AX,0JNZ EXITCMP WORD PTR WIN,0JZ MAIN_LOOPTERMINATE:CMP WORD PTR WIN,3JNZ EXITJMP MAIN_LOOPEXIT:CALL GAMEENDMOV AX,0003H ;TEXTINT 10HMOV AH,4CHINT 21HINT3: ;change between normal and suspend PUSH AXMOV AX,3 ;3 <-> 0SUB AX,WINMOV WIN,AXSTIMOV AL,20HOUT 20H,ALPOP AXIRET;========================================================== ;INPUT: none;OUTPUT: none;FUNCTION: display the whole snake body; and the sugar at the beginning;========================================================== DISPLAY PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH SIMOV AX,0600H;CLSMOV BH,0MOV CX,0MOV DX,1E4FHINT 10HMOV BX,LENDISPLAY_SNAKE:MOV AX,0C0AHMOV BH,0MOV CX,SNAKE[SI]SHL CX,1 ;CX=8*CXSHL CX,1SHL CX,1MOV I, PS ;every point is of size PSXPS DISPLAY_SNAKE_ROW:MOV DX,SNAKE[SI+2]SHL DX,1 ;DX=8*DXSHL DX,1SHL DX,1MOV J, PSDISPLAY_SNAKE_COLUMN:INT 10HINC DXDEC JJNZ DISPLAY_SNAKE_COLUMNINC CXDEC IJNZ DISPLAY_SNAKE_ROWADD SI,4DEC BXJNZ DISPLAY_SNAKEDISPLAY_SUGAR:MOV AX,0C0EHMOV BH,0MOV CX,SUGAR[0]SHL CX,1 ;CX=8*CXSHL CX,1SHL CX,1MOV I, PS ;every point is of size PSXPS DISPLAY_SUGAR_ROW:MOV DX,SUGAR[2]SHL DX,1 ;DX=8*DXSHL DX,1SHL DX,1DISPLAY_SUGAR_COLUMN:INT 10HINC DXDEC JJNZ DISPLAY_SUGAR_COLUMNINC CXDEC IJNZ DISPLAY_SUGAR_ROWPOP SIPOP DXPOP CXPOP BXPOP AXRETDISPLAY ENDP;========================================================== ;INPUT: none;OUTPUT: none;FUNCTION: display the head and erase the tail,; and if sugar was eaten, redraw it;========================================================== REFRESH PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH SICMP WORD PTR WIN,0JZ REFRESH_STARTJMP REFRESH_RETREFRESH_START:XOR SI,SICMP BYTE PTR RE_ADD,0JNZ REFRESH_BXMOV BX,2JMP REFRESH_SNAKEREFRESH_BX:MOV BX,1CALL PLACEREFRESH_SUGAR:MOV AX,0C0EHMOV BH,0MOV CX,SUGAR[0]SHL CX,1 ;CX=8*CX SHL CX,1SHL CX,1MOV I, PSREFRESH_SUGAR_ROW:MOV DX,SUGAR[2]SHL DX,1 ;DX=8*DX SHL DX,1SHL DX,1MOV J, PSREFRESH_SUGAR_COLUMN:INT 10HINC DXDEC JJNZ REFRESH_SUGAR_COLUMNINC CXDEC IJNZ REFRESH_SUGAR_ROWREFRESH_SNAKE:MOV AX,RE_CLR[SI]MOV BH,0MOV CX,RE_END[SI]SHL CX,1 ;CX=8*CX SHL CX,1SHL CX,1MOV I, PSREFRESH_SNAKE_ROW:MOV DX,RE_END[SI+2]SHL DX,1 ;DX=8*DX SHL DX,1SHL DX,1MOV J, PSREFRESH_SNAKE_COLUMN:INT 10HINC DXDEC JJNZ REFRESH_SNAKE_COLUMNINC CXDEC IJNZ REFRESH_SNAKE_ROWADD SI,4DEC BXJNZ REFRESH_SNAKEREFRESH_RET:POP SIPOP DXPOP CXPOP BXPOP AXRETREFRESH ENDP;========================================================== ;INPUT: none;OUTPUT: none;FUNCTION: move a unit distance depending on ORIENT;========================================================== MOVE PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH SICMP WORD PTR WIN,0JZ MOVE_BEGINJMP MOVE_RETMOVE_BEGIN:MOV AX,ORIENTCMP AX,0JZ MOVE_LCMP AX,1JZ MOVE_RCMP AX,2JZ MOVE_UJMP MOVE_DMOVE_L:MOV AX,SNAKE[0]DEC AXMOV HEAD_X,AXMOV AX,SNAKE[2]MOV HEAD_Y,AXJMP MOVE_XLMOVE_R:MOV AX,SNAKE[0]INC AXMOV HEAD_X,AXMOV AX,SNAKE[2]MOV HEAD_Y,AXJMP MOVE_XLMOVE_U:MOV AX,SNAKE[2]DEC AXMOV HEAD_Y,AXMOV AX,SNAKE[0]MOV HEAD_X,AXJMP MOVE_YLMOVE_D:MOV AX,SNAKE[2]INC AXMOV HEAD_Y,AXMOV AX,SNAKE[0]MOV HEAD_X,AXJMP MOVE_YLMOVE_XL:MOV AX,HEAD_XCMP AX,0JNL MOVE_XGMOV AX,WIDMOV HEAD_X,AX;MOV WIN,1;lose if touch the left border MOVE_XG:CMP AX,WIDJNG MOVE_EATMOV AX,0MOV HEAD_X,AX;MOV WIN,1;lose if touch the right border MOVE_YL:MOV AX,HEAD_YCMP AX,0JNL MOVE_YGMOV AX,HEIMOV HEAD_Y,AX;MOV WIN,1;lose if touch the top border MOVE_YG:CMP AX,HEIJNG MOVE_EATMOV AX,0MOV HEAD_Y,AX;MOV WIN,1;lose if touch the bottom borderMOVE_EAT:MOV AX,HEAD_XCMP AX,SUGAR[0]JNZ MOVE_BUMPMOV AX,HEAD_YCMP AX,SUGAR[2]JNZ MOVE_BUMPINC LENINC TOTALMOV BYTE PTR RE_ADD,80HCMP WORD PTR TOTAL,30JG MOVE_WINJMP MOVE_STARTMOVE_WIN:MOV WIN,2 ;win the gameMOVE_BUMP:MOV BX,LENDEC BXXOR SI,SIMOV DX,HEAD_XMOV AX,HEAD_YMOVE_CHECK_X:CMP DX,SNAKE[SI]JNZ MOVE_CHECK_DIFFCMP AX,SNAKE[SI+2]JZ MOVE_LOSEMOVE_CHECK_DIFF:ADD SI,4DEC BXJNZ MOVE_CHECK_XJMP MOVE_STARTMOVE_LOSE:MOV WIN,1 ;lose the gameMOVE_START:MOV SI,LENDEC SIMOV CL,2SHL SI,CLMOV AX,SNAKE[SI]MOV RE_END[4],AXMOV AX,SNAKE[SI+2]MOV RE_END[6],AXMOV CX,LENDEC CXMOVE_BODY:MOV AX,SNAKE[SI-4]MOV SNAKE[SI],AXMOV AX,SNAKE[SI-2]MOV SNAKE[SI+2],AXSUB SI,4LOOP MOVE_BODYMOVE_HEAD:MOV AX,HEAD_XMOV SNAKE[0],AXMOV RE_END[0],AXMOV AX,HEAD_YMOV SNAKE[2],AXMOV RE_END[2],AXMOVE_RET:POP SIPOP DXPOP CXPOP BXPOP AXRETMOVE ENDP;========================================================== ;INPUT: none;OUTPUT; AX=0FFFFH means ESC, AX=0 means others;FUNCTION: check if any key pressed and change the ORIENT ;========================================================== CHECKKEY PROC NEARCMP WORD PTR WIN,0JZ CHECKKEY_STARTJMP CHECKKEY_FINISHCHECKKEY_START:MOV AH,0BH ;check if any keyINT 21HCMP AL,0JZ CHECKKEY_AX_0MOV AH,00H ;get the keyINT 16H ;AL <- ASCII, AH <- scan codeCMP AL,1BHJZ CHECKKEY_AX_1CMP AH,4BHJZ CHECKKEY_LCMP AH,4DHJZ CHECKKEY_RCMP AH,48HJZ CHECKKEY_UCMP AH,50HJZ CHECKKEY_DJMP CHECKKEY_AX_0CHECKKEY_L:CMP ORIENT,2JL CHECKKEY_AX_0MOV ORIENT1,0JMP CHECKKEY_AX_0CHECKKEY_R:CMP ORIENT,2JL CHECKKEY_AX_0MOV ORIENT1,1JMP CHECKKEY_AX_0CHECKKEY_U:CMP ORIENT,1JG CHECKKEY_AX_0MOV ORIENT1,2JMP CHECKKEY_AX_0CHECKKEY_D:CMP ORIENT,1JG CHECKKEY_AX_0MOV ORIENT1,3CHECKKEY_AX_0:XOR AX,AXJMP CHECKKEY_FINISHCHECKKEY_AX_1:MOV AX,0FFFFHCHECKKEY_FINISH:RETCHECKKEY ENDP;========================================================== ;INPUT: CX=delay time in milliseconds;OUTPUT: none;FUNCTION: delay for a period of time;========================================================== SMALL_DELAY PROC NEARPUSH AXPUSH CXPUSH DXMOV DX,MY8253_MMOV AL,37H ;counter 0, mode 3OUT DX,ALMOV DX,MY8253_0MOV AL,00H ;n=1000OUT DX,ALMOV AL,10HOUT DX,ALMOV DX,MY8253_MMOV AL,70H ;counter 1, mode 0OUT DX,ALMOV AX,CXMOV DX,MY8253_1OUT DX,ALMOV AL,AHOUT DX,ALSMALL_DELAY_CHECK:MOV CX,0FFFHSMALL_DELAY_CX:LOOP SMALL_DELAY_CXMOV DX,LS244IN AL,DXTEST AL,01HJZ SMALL_DELAY_CHECK ;if LS244_1A1 low, check againPOP DXPOP CXPOP AXRETSMALL_DELAY ENDP;========================================================== ;INPUT: none;OUTPUT: none;FUNCTION: delay for a period of time,; and display the 7SEG during that time,;========================================================== DELAY PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH SICALL GETSPEEDMOV AX,TOTALMOV DL,10DIV DLXOR BH,BHMOV BL,ALMOV QUO,BXMOV BL,AHMOV REM,BXDELAY_7SEG:MOV BX,SPEED ;DELAY SPEEDX10 msDELAY_LOOP_BX:MOV DX,MY8255_AMOV AL,0OUT DX,ALMOV DX,MY8255_C ;high bitIN AL,DXAND AL,0FCHOR AL,2OUT DX,ALMOV DX,MY8255_AMOV SI,QUOMOV AL,LED[SI]XOR AL,RE_ADD ;PA7=1 if RE_ADD is 80h OUT DX,ALMOV CX,5CALL SMALL_DELAYMOV DX,MY8255_AMOV AL,0OUT DX,ALMOV DX,MY8255_C ;low bitIN AL,DXAND AL,0FCHOR AL,1OUT DX,ALMOV DX,MY8255_AMOV SI,REMMOV AL,LED[SI]XOR AL,RE_ADD ;PA7=1 if RE_ADD is 80h OUT DX,ALMOV CX,5CALL SMALL_DELAYDEC BXJNZ DELAY_LOOP_BXMOV BYTE PTR RE_ADD,0POP SIPOP DXPOP CXPOP BXPOP AXRETDELAY ENDP;========================================================== ;INPUT: none;OUTPUT: none;FUNCTION: find random position to place a new sugar;========================================================== PLACE PROC NEARPUSH AXPUSH BXPUSH DXPUSH SIPLACE_RANDOM:MOV AH,2CH ;get the system timeINT 21H ;CX <- h:m, DX <- s:1/100sMOV AL,DHMUL DLMOV DL,100DIV DL ;AL <- QUO, AH <- REMPLACE_CHECK_HEI:CMP AL,HEIJG PLACE_HEIPLACE_CHECK_WID:CMP AH,WIDJG PLACE_WIDJMP PLACE_CHECKPLACE_HEI:SUB AL,HEIJMP PLACE_CHECK_HEIPLACE_WID:SUB AH,WIDJMP PLACE_CHECK_WIDPLACE_CHECK:MOV DL,AH ;DX <- AHXOR AH,AH ;AX <- ALXOR DH,DHMOV BX,LENXOR SI,SIPLACE_CHECK_X:CMP DX,SNAKE[SI]JNZ PLACE_CHECK_DIFFCMP AX,SNAKE[SI+2] ;if sugar is at snake body,JZ PLACE_RANDOM ;find a new positionPLACE_CHECK_DIFF:ADD SI,4DEC BXJNZ PLACE_CHECK_XPLACE_SUGAR:MOV SUGAR[0],DXMOV SUGAR[2],AXPOP SIPOP DXPOP BXPOP AXRETPLACE ENDP;========================================================== ;INPUT: none;OUTPUT: none;FUNCTION: get the speed;========================================================== GETSPEED PROC NEARPUSH AXPUSH CXPUSH DXPUSH SIMOV DX,ADC0809OUT DX,AL ;start convertMOV CX,0FFFFHGETSPEED_DELAY:LOOP GETSPEED_DELAYIN AL,DX ;82H <= AL <= 0FFH (ADC)XOR AH,AHMOV DL,25DIV DL ;5 <= AL <= 10XOR AH,AHSUB AL,4 ;1 <= AL <= 6 (time)CMP AL,1JL GETSPEED_MINJMP GETSPEED_SAVEGETSPEED_MIN:MOV AL,1GETSPEED_SAVE:MOV SPEED,AXMOV SI,6SUB SI,AX ;0 <= SI <= 5 (speed)MOV AL,LIGHT[SI]MOV DX,MY8255_COUT DX,ALPOP SIPOP DXPOP CXPOP AXRETGETSPEED ENDP;========================================================== ;INPUT: none;OUTPUT: none;FUNCTION: roll a string in the dot matrix;========================================================== GAMEEND PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH SIPUSH DICMP WORD PTR WIN,2JZ GAMEEND_BX_WINJMP GAMEEND_BX_LOSEGAMEEND_BX_WIN:LEA BX,YOUWINMOV SOUNDA,OFFSET SOUNDWJMP GAMEEND_ROLL_STARTGAMEEND_BX_LOSE:LEA BX,YOULOSEMOV SOUNDA,OFFSET SOUNDLGAMEEND_ROLL_START:MOV DX,MY8255_AMOV AL,80HOUT DX,ALMOV CX,2 ;roll 2 timesMOV J, 0 ;0-sound on, 1-sound off GAMEEND_ROLL_DOT:XOR DI,DIGAMEEND_DOT:MOV AX,DIMOV DL,3DIV DLXOR AH,AHMOV SI,AXCMP SI,SOUND_NJZ GAMEEND_SET_JJMP GAMEEND_SOUNDGAMEEND_SET_J:MOV J,1MOV DX,MY8255_A ;8253 gate2=0XOR AL,ALOUT DX,ALGAMEEND_SOUND:CMP J,1JZ GAMEEND_DOT_DISPSHL SI,1MOV DX,MY8253_MMOV AL,0B6HOUT DX,ALPUSH BXMOV BX,SOUNDAMOV AX,[BX][SI]POP BXMOV DX,MY8253_2OUT DX,ALMOV AL,AHOUT DX,ALGAMEEND_DOT_DISP:MOV I, 3GAMEEND_COLUMN_I:MOV AH,80H ;AH=column numberMOV SI,DIGAMEEND_COLUMN:MOV DX,DOT_COLXOR AL,ALOUT DX,ALMOV DX,DOT_ROWMOV AL,[BX][SI]OUT DX,ALMOV DX,DOT_COLMOV AL,AHOUT DX,ALPUSH CXMOV CX,0FFFFHGAMEEND_LOOP_CX:LOOP GAMEEND_LOOP_CXPOP CXINC SISHR AH,1JNC GAMEEND_COLUMNDEC IJNZ GAMEEND_COLUMN_IINC DICMP DI,DOT_NJNG GAMEEND_DOTLOOP GAMEEND_ROLL_DOTPOP DIPOP SIPOP DXPOP CXPOP BXPOP AXRETGAMEEND ENDP;========================================================== ;INPUT: none;OUTPUT: none;FUNCTION: just delay;========================================================== DELAY_FOR_TEST PROC NEARPUSH BXPUSH CXMOV CX,02fH;04FFHDELAY_FOR_TEST_LOOP_CX:MOV BX,0FFFFHDELAY_FOR_TEST_LOOP_BX:DEC BXJNZ DELAY_FOR_TEST_LOOP_BXLOOP DELAY_FOR_TEST_LOOP_CXPOP CXPOP BXRETDELAY_FOR_TEST ENDPCODE ENDSEND START。