【范文】-第二学期《计算机系统平台》实验指导书
- 格式:docx
- 大小:45.44 KB
- 文档页数:12
北京服装学院商学院实验报告实验名称:计算机系统实验学生姓名:班级学号:指导教师:刘辉实验日期: 20-09-13至20-09-21一、实验名称计算机操作系统安装、系统优化及系统安全实验二、实验目的1.熟悉计算机的体系结构2.学习计算机操作系统的安装和系统的优化3. 学习安全处理、系统备份以及简单组网技术三、实验内容1.计算机的体系结构认识2. 操作系统安装和系统优化3. 系统安全处理和系统备份4. 简单组网技术及实践四、实验环境硬件:北校区计算机系统实验室计算机软件:Windows XP 、Ghost等软件五、实验过程和结果实验一、计算机的体系结构认识一. 计算机的基本组成部件及作用答:《1》.显示器————————输出设备:显示电脑的工作过程《2》鼠标,键盘————————输入设备:向电脑输入有用的命令,让它去为我们工作《3》主机(机箱)————主要部分①CPU——————中央处理器,是电脑运算和控制的核心,电脑处理数据的能力和速度主要取决于CPU②主板——————决定你这台电脑性能的重要零件之一③南桥北桥——————连接各个部件,使他们能工作④内存——————存放当前待处理的信息和常用信息的半导体芯片⑤电源——————提供电⑥显卡——————将主机的输出信息转换成字符、图形和颜色等信息,传送到显示器上显示。
⑦声卡——————可以把来自话筒、收录音机、激光唱机等设备的语音、音乐等声音变成数字信号交给电脑处理,并以文件形式存盘,还可以把数字信号还原成为真实的声音输出⑧网卡——————又叫网络适配器是用来连接到网络的,它只是一个信号收发的设备⑨硬盘———————外存储器之一,用来储存各种音视频资料⑩软盘——————移动的外储存器(现在基本已经淘汰)⑪光驱——————读写光碟内容的机器⑫散热器(风扇)——————给机箱内部件散热(主要是CPU)二. 计算机的组成结构图实验二、操作系统的安装、常用软件的安装及系统优化一. 安装操作系统的流程①启动计算机:进行BIOS的设置②将计算机重启——F12,然后选择IDE CD-Rom Device。
计算机操作系统实验指导linux版,操作系统实验指导书(linux版).doc操作系统实验指导书(linux版)《操作系统》实验指导书实验学时:16适⽤专业:计算机科学与技术实验⼀:进程和线程的创建1. 在linux下编写⼀个应⽤程序,命名为an_ch2_1b。
这个程序不断地输出如下⾏:Those output come from child,[系统时间]另外写⼀个应⽤程序,命名为an_ch2_1a。
这个程序创建⼀个⼦进程,执⾏an_ch2_1b。
这个程序不断地输出如下⾏:Those output come from child,[系统时间]观察程序运⾏的结果,并对你看到的现象进⾏解释。
2。
在linux环境下编写⼀个控制台应⽤程序,程序中有⼀个共享的整型变量shared_var,初始值为0;创建⼀个线程并使其⽴即与主线程并发执⾏。
新创建的线程与主线程均不断地循环,并输出shared_var 的值。
主线程在循环中不断地对shared_var 进⾏加1操作,即每次循环shared_var 被加1;⽽新创建的线程则不断地对shared_var 进⾏减1 操作,即每次循环shared_var 被减1。
观察程序运⾏的结果,并对你看到的现象进⾏解释。
3。
提交源代码以及实验报告。
实验⼆:进程和线程同步和互斥1。
⽣产者消费者问题(信号量)参考教材中的⽣产者消费者算法,创建5个进程,其中两个进程为⽣产者进程,3个进程为消费者进程。
⼀个⽣产者进程试图不断地在⼀个缓冲中写⼊⼤写字母,另⼀个⽣产者进程试图不断地在缓冲中写⼊⼩写字母。
3个消费者不断地从缓冲中读取⼀个字符并输出。
为了使得程序的输出易于看到结果,仿照阅读材料中的实例程序,分别在⽣产者和消费者进程的合适的位置加⼊⼀些随机睡眠时间。
可选的实验:在上⾯实验的基础上实现部分消费者有选择地消费某些产品。
例如⼀个消费者只消费⼩写字符,⼀个消费者只消费⼤写字母,⽽另⼀个消费者则⽆选择地消费任何产品。
Linux 实验指导书Linux操作系统是一个向用户开放源码的免费的类UNIX操作系统。
它为在校学生学习操作系统课程提供了一个看得见摸得着的范例。
对于学生正确理解,掌握操作系统的基本知识具有重要意义。
鉴于此,本操作系统课程涉及的实验均在linux环境下进行。
安装linux系统的免费网址:ftp://ftp://ftp://要求:熟悉Linux的操作和开发环境首先介绍几个关于Linux系统的系统调用函数说明、参考值及定义1、fork()创建一个新进程。
int fork()其中返回值int联值意义如下:0:创建子进程,从子进程返回的id值大于0:从父进程返回的子进程id值-1:创建失败其源代码:#include <sys/types.h>#include <unistd.h>#include <stdio.h>#include <stdlib.h>#include <sys/stat.h>#include <fcntl.h>#include <errno.h>#include <string.h>extern int errno;int main(){char buf[100];pid_t cld_pid;int fd;int status;if ((fd=open("temp",O_CREA T|O_TRUNC | O_RDWR,S_IRWXU)) == -1){printf("open error %d",errno);exit(1);}strcpy(buf,"This is parent process write\n");if ((cld_pid=fork()) == 0){ /* 这里是子进程执行的代码*/strcpy(buf,"This is child process write\n");printf("This is child process\n");printf("My PID(child) is %d\n",getpid()); /*打印出本进程的ID*/printf("My parent PID is %d\n",getppid()); /*打印出父进程的ID*/write(fd,buf,strlen(buf));close(fd);exit(0);}else{ /* 这里是父进程执行的代码*/printf("This is parent process\n");printf("My PID(parent) is %d\n",getpid()); /*打印出本进程的ID */printf("My child PID is %d\n",cld_pid); /*打印出子进程的ID*/write(fd,buf,strlen(buf));close(fd);}wait(&status);}2、lockf(files,function,size)用作锁定文件的某些段或者整个文件,本函数适用的头文件为#include <unistd.h>参数定义:int lockf(files,function,size)int files,function;long size;其中:files是文件描述符:function是锁定和解锁;1表示锁定,0表示解锁。
宁夏师范学院——数学与计算机科学学院《操作系统》实验指导《OPERATING SYSTEM》2013.08前言计算机操作系统是计算机科学与技术专业的主要专业基础课程,其实践性、应用性很强。
实践教学环节是必不可少的一个重要环节。
计算机操作系统的实验目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握操作系统的基本原理,加深对操作系统基本方法的理解,加深对课堂知识的理解,为学生综合运用所学知识,在Linux环境下调用一些常用的函数编写功能较简单的程序来实现操作系统的基本方法、并在实践应用方面打下一定基础。
要求学生在实验指导教师的帮助下自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个实验解决一类问题。
要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,并且能够进行简单分析和判断;能够熟练使用Linux用户界面;掌握操作系统中进程的概念和控制方法;了解进程的并发,进程之间的通信方式,了解虚拟存储管理的基本思想。
同时培养学生进行分析问题、解决问题的能力;培养学生完成实验分析、实验方法、实验操作与测试、实验过程的观察、理解和归纳能力。
为了收到良好的实验效果,编写了这本实验指导书。
在指导书中,每一个实验均按照该课程实验大纲的要求编写,力求紧扣理论知识点、突出设计方法、明确设计思路,通过多种形式完成实验任务,最终引导学生有目的、有方向地完成实验任务,得出实验结果。
任课教师在实验前对实验任务进行一定的分析和讲解,要求学生按照每一个实验的具体要求提前完成准备工作,如:查找资料、设计程序、完成程序、写出预习报告等,做到有准备地上机。
进行实验时,指导教师应检查学生的预习情况,并对调试过程给予积极指导。
实验完毕后,学生应根据实验数据及结果,完成实验报告,由学习委员统一收齐后交指导教师审阅评定。
目录操作系统实验大纲 (1)第一部分实验环境及所用系统函数介绍 (3)1.1 Linux操作系统简介 (3)1.2 Linux的使用 (3)第二部分实验内容 (7)实验一熟悉LINUX基本命令及编程环境 (7)实验二进程管理 (10)实验三进程调度 (14)实验四进程间通信 (19)实验五存储管理实验 (22)操作系统实验大纲一、教学目的和要求操作系统课程是一门理论性很强的专业课,操作系统实验是该课程的辅助课程。
《计算机系统基础》指导书Introduction to Computer Systems实验1 数据的表示实验序号:1 实验名称:数据的表示适用专业:计算机科学与技术学时数:2学时1、实验目的熟悉数值数据在计算机内部的表示方式,掌握相关的处理语句。
2、实验内容1.“-2 < 2”和“-2 < 2u”的结果一样吗?为什么?请编写程序验证。
2.运行下图中的程序代码,并对程序输出结果进行分析。
3.运行下列代码,并对输出结果进行分析。
#include <stdio.h>void main(){union NUM{int a;char b[4];} num;num.a = 0x12345678;printf("0x%X\n", num.b[2]);}4.请说明下列赋值语句执行后,各个变量对应的机器数和真值各是多少?编写一段程序代码并进行编译,观察默认情况下,编译器是否报warning。
如果有warning 信息的话,分析为何会出现这种warning信息。
int a = 2147483648;int b = -2147483648;int c = 2147483649;unsigned short d = 65539;short e = -32790;5.编译运行以下程序,并至少重复运行3次。
void main(){double x=23.001, y=24.001, z=1.0;for (int i=0; i<10; i++) {if ((y-x)==z)printf("equal\n");elseprintf("not equal\n");x += z;y += z;printf("%d, %f , %f\n”, i, x, y);}}要求:(1)给出每次运行的结果截图。
(2)每次运行过程中,是否每一次循环中的判等结果都一致?为什么?(3)每次运行过程中,每一次循环输出的i、x和y的结果分别是什么?为什么?3、实验步骤1. 进入linux系统,在shell终端的提示符后输入gedit,编写C语言源程序。
操作系统实验指导书计算机科学与软件学院实验一进程控制与描述一、实验目的通过对Windows 2000编程,进一步熟悉操作系统的基本概念,较好地理解Windows 2000的结构。
通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解Windows 2000进程的“一生”。
二、实验环境硬件环境:计算机一台,局域网环境;软件环境:Windows 2000 Professional、Linux Redhat 9.0操作系统平台,Visual C++ 6.0专业版或企业版。
三、实验内容和步骤第一部分:Windows 2000 Professional下的GUI应用程序,使用Visual C++编译器创建一个GUI应用程序,代码中包括了WinMain()方法,该方法GUI类型的应用程序的标准入口点。
在“开始”菜单中单击“程序”-“附件”-“记事本”命令,将程序键入记事本中,并把代码保存为1-1.cpp。
程序1-1 Windows 2000的GUI应用程序// msgbox项目# include <windows.h> // 标准的include// 告诉连接器与包括MessageBox API函数的user32库进行连接# pragma comment(lib, “user32.lib” )// 这是一个可以弹出信息框然后退出的筒单的应用程序int APIENTRY WinMain(HINSTANCE /* hInstance */ ,HINSTANCE /* hPrevInstance */ ,LPSTR /* lpCmdLine */ ,int /* nCmdShow */ ){:: MessageBox(NULL, // 没有父窗口“Hello, Windows 2000” , // 消息框中的文本“Greetings”, // 消息框标题MB_OK) ; // 其中只有一个OK按钮// 返回0以便通知系统不进入消息循环return(0) ;}也可以利用任何其他文本编辑器键入程序代码,如果这样,例如使用WORD来键入和编辑程序,则应该注意什么问题?________________________________________________________________________________________________________________________________________ 在“命令提示符”窗口运行CL.EXE,产生1-1.EXE文件:C:\> CL 1-1.cpp在程序1-1的GUI应用程序中,首先需要Windows.h头文件,以便获得传送给WinMain() 和MessageBox() API函数的数据类型定义。
《计算机操作系统》实验指导书-2021《计算机操作系统》实验指导书实验类别:课内实验实验课程名称:计算机操作系统实验室名称:计算机科学与技术专业实验室实验课程编号: N02140113 总学时: 8 学分: 4.5 适用专业:软件工程先修课程:计算机导论及操作、计算机硬件实验一进程同步控制1、开发语言及实现平台或实验环境 C++/JAVATurbo C / Microsoft Visual Studio 6.0 / Microsoft Visual Studio .NET 20212、实验目的(1)加强对进程概念的理解,尤其是对进程的同步与互斥机制的理解。
(2)分析进程竞争资源的现象,学习解决进程互斥与同步的方法。
3、实验要求(1)理解利用进程控制机制;(2)理解利用信号量进行进程同步控制原理;(3)使用某种编程语言进行模拟实现生产者-消费者进程。
4、实验原理(注意:这个仅是个例子,仅供参考)生产者-消费者问题描述的是:有一群生产者进程在生产产品,并将这些产品提供给消费者进程去消费。
为使生产者进程与消费者进程能够并发执行,在两者之间设置了一个具有n个缓冲区的缓冲池,生产者进程将它所生产的产品放入一个缓冲区中;消费者进程可以从一个缓冲区中取走产品去消费。
尽管所有的生产者和消费者进程都是以异步方式运行的,但它们之间必须保持同步,即不允许消费者进程到一个空缓冲区去取产品;也不允许生产者进程向一个已经装满产品的缓冲区中投放产品。
这是一个同步与互斥共存的问题。
生产者―消费者问题是一个同步问题。
即生产者和消费者之间满足如下条件: (1)消费者想接收数据时,有界缓冲区中至少有一个单元是满的。
(2) 生产者想发送数据时,有界缓冲区中至少有一个单元是空的。
故设置两个信号量:(1) empty:说明空缓冲区的数目,初值为有界缓冲区的大小N。
(2) full:说明已用缓冲区的数目,初值为0。
由于有界缓冲区是临界资源,因此,各生产者进程和各消费者进程之间必须互斥执行。
一、实验目的通过本次计算机系统实习,使学生了解计算机系统的基本组成和工作原理,掌握计算机系统调试和性能分析的基本方法,提高学生的实际操作能力和计算机系统维护能力。
二、实验内容1. 计算机系统组成及工作原理(1)计算机硬件系统:了解计算机硬件系统的基本组成,包括CPU、内存、硬盘、显卡、网卡等主要部件的功能和作用。
(2)计算机软件系统:了解计算机软件系统的基本组成,包括操作系统、应用程序、系统工具等。
(3)计算机工作原理:了解计算机的基本工作原理,包括数据输入、处理、存储和输出等过程。
2. 计算机系统调试(1)系统启动:了解计算机系统启动过程,包括BIOS自检、引导加载程序、操作系统启动等。
(2)系统故障排除:学习如何使用故障排除工具和技巧,对计算机系统进行故障诊断和修复。
(3)系统优化:了解如何对计算机系统进行优化,提高系统性能。
3. 计算机系统性能分析(1)性能指标:了解计算机系统性能的主要指标,如CPU、内存、硬盘、显卡等。
(2)性能分析工具:学习使用性能分析工具,如任务管理器、资源监视器等。
(3)性能优化:了解如何根据性能分析结果对计算机系统进行优化。
三、实验步骤1. 熟悉实验环境:了解实验计算机的硬件配置、操作系统版本等基本信息。
2. 熟悉实验工具:掌握实验过程中所需使用的软件和工具,如故障排除工具、性能分析工具等。
3. 实验一:计算机系统组成及工作原理(1)观察计算机硬件组成,了解各部件的功能和作用。
(2)查看计算机系统启动过程,了解BIOS自检、引导加载程序、操作系统启动等环节。
4. 实验二:计算机系统调试(1)使用故障排除工具,对计算机系统进行故障诊断和修复。
(2)根据系统启动日志,分析系统故障原因,并尝试修复。
5. 实验三:计算机系统性能分析(1)使用性能分析工具,对计算机系统进行性能分析。
(2)根据性能分析结果,对计算机系统进行优化。
四、实验结果与分析1. 实验一:通过观察计算机硬件组成和系统启动过程,掌握了计算机系统的基本组成和工作原理。
操书作系统实验指导实验目录实验一动态优先权进程调度 (3)实验二作业调度 (9)实验三动态分区首次适应分配算法模拟 (18)实验四请求分页存储管理页面淘汰模拟 (24)实验五磁盘调度算法模拟 (31)实验一动态优先权进程调度一、实验目的与要求:1.掌握进程调度中的优先权调度算法过程;2.掌握进程调度中时间片轮转调度算法的过程;3.加深掌握程序在Visual C++6.0环境下的编译、调试和运行。
二、实验内容:编写程序,用C语言来实现对N个进程采用动态优先权算法的进程调度。
每个进程使用进程pcb结构来描述。
优先数改变原则:进程在就绪队列中多呆一个时间片,优先数增加1;进程每运行一个时间片,优先数减3。
三、实验器材:微机+windows操作系统+VC++6.0四、实验步骤:#include <iostream>#include <iomanip>#include <algorithm>#include "define.h"using namespace std;PCB READY_QUEUE; // 就绪队列PCB BLOCK_QUEUE; // 阻塞队列bool compare_priority(const PCB& p1, const PCB& p2){return p1.PRIORITY > p2.PRIORITY;}bool compare_id(const PCB& p1, const PCB& p2){return p1.ID < p2.ID;}// inital PCB dataPCB produces[5]={{0,9,0,3,2,3,READY,NULL},{1,38,0,3,-1,0,READY,NULL},{2,30,0,6,-1,0,READY,NULL},{3,29,0,3,-1,0,READY,NULL},{4,0,0,4,-1,0,READY,NULL}};// inital queue( ready queue , block queue );void inital_queue(){READY_QUEUE.NEXT = NULL;BLOCK_QUEUE.NEXT = NULL;PCB * r = &READY_QUEUE;PCB * b = &BLOCK_QUEUE;// sort order by PRIORITY (DEC)sort(produces, &produces[4], compare_priority);for(int i=0; i<5; i++){if(produces[i].ALLTIME == 0){produces[i].STATE = FINISH;continue;}if(produces[i].STATE == BLOCK && produces[i].BLOCKTIME == 0){// block -> readyr->NEXT = &produces[i];produces[i].STATE = READY;r = r->NEXT;}else if(produces[i].STATE == BLOCK && produces[i].BLOCKTIME != 0) {// block -> blcokb->NEXT = &produces[i];produces[i].STATE = BLOCK;b = b->NEXT;}else if(produces[i].STATE == READY && produces[i].STARTBLOCK == 0) {// ready -> blockb->NEXT = &produces[i];produces[i].STATE = BLOCK;b = b->NEXT;}else if(produces[i].STATE == READY && produces[i].STARTBLOCK != 0) {// ready -> readyr->NEXT = &produces[i];produces[i].STATE = READY;r = r->NEXT;}}}void run(){PCB * r = READY_QUEUE.NEXT; // r point to the ready queue first pcb PCB * b = BLOCK_QUEUE.NEXT; // b point to the block queue first pcb PCB * running_pcb = r;r = r->NEXT;cout<<"--------------正在执行的进程--------------" << endl;cout << "running produce's ID = " << running_pcb->ID << endl;// update datarunning_pcb->ALLTIME--;running_pcb->CPUTIME++;running_pcb->PRIORITY -= 3;running_pcb->STARTBLOCK--;while(r){r->PRIORITY++;r = r->NEXT;}while(b){b->BLOCKTIME--;b = b->NEXT;}}void print_pcb(){cout<<"---------------就绪,阻塞队列-------------" << endl;PCB * r = READY_QUEUE.NEXT;cout << "READY_QUEUE -> ";while(r!=NULL){cout << "ID" << r->ID << " -> ";r = r->NEXT;}cout << " NULL " << endl;PCB * b = BLOCK_QUEUE.NEXT;cout << "BLOCK_QUEUE -> ";while(b!=NULL){cout << "ID" << b->ID << " -> ";b = b->NEXT;}cout << " NULL " << endl;PCB temp[5];memcpy(temp, produces, 5*sizeof(PCB));ort(temp, &temp[4], compare_id);cout <<"----------------所有进程信息--------------" << endl;cout << setw(11) << "ID"<< setw(11) << "PRIORITY"<< setw(11) << "CPUTIME"<< setw(11) << "ALLTIME"<< setw(11) << "STARTBLOCK"<< setw(11) << "BLOCKTIME"<< setw(11) << "STATE" << endl;for(int i=0; i<5; i++){cout << setw(11) << temp[i].ID ;cout << setw(11) << temp[i].PRIORITY ; cout << setw(11) << temp[i].CPUTIME ; cout << setw(11) << temp[i].ALLTIME ; cout << setw(11) << temp[i].STARTBLOCK ; cout << setw(11) << temp[i].BLOCKTIME ; if(temp[i].STATE==READY)cout << setw(11) << "READY" ;else if(temp[i].STATE==BLOCK)cout << setw(11) << "BLOCK" ;else if(temp[i].STATE==FINISH)cout << setw(11) << "FINISH" ;cout << endl;}}int main(){inital_queue();while(READY_QUEUE.NEXT!=NULL){run();inital_queue();print_pcb();system("pause");}cout << "finish all produces" << endl; return 0;}//头文件#ifndef DEFINE_H#define DEFINE_H// STATE#define READY 1#define BLOCK 2#define RUN 3#define FINISH 4// struct declarationstruct PCB{int ID;int PRIORITY;int CPUTIME;int ALLTIME;int STARTBLOCK;int BLOCKTIME;int STATE;PCB * NEXT;};void print_pcb();void inital_queue();void run();#endif五、实验结果:本次实验输入了5个进程,到达时间均为0。
2013-2014第二学期《计算机系统平台》实验指导书实验2 监控程序与汇编程序设计一、实验目的利用教学计算机的指令系统和所提供的汇编语言功能,学习监控程序使用和完成汇编语言程序设计的教学实验,初步掌握汇编程序设计和调试技术,并为学习计算机整机系统和各个部件的组成与功能打下一定的基础。
二、实验内容1. 熟悉教学实验机TEC-2008的组成结构和使用方法1)打开教学实验机的盖子,观察面板上的组成结构,找到运算器、存储器、控制器所在位置。
2)将教学实验机通过串口线连接到实验室的PC上,熟悉RESET和START键的使用,使得实验机与PC能够正常通讯。
3)进入教学计算机的PC仿真终端,练习采用PC作为教学机的终端完成数据的输入及显示。
4)启动并运行Tec2ksim模拟软件,启动监控程序,并练习录入示例程序及运行程序,观察结果,熟练TEC-2000模拟器的使用方法。
2. 输入并运行实验指导书中给出的程序例子,并理解程序的含义(210页~212页)3. 完成如下汇编程序设计题目用教学机的指令系统,设计一个程序,实现从键盘读入无符号的十六进制整型数据,到计算机内转换成16位二进制数并保存在一个寄存器中,再把这个字中的每一个二进制位的值输出到计算机的显示器屏幕上。
要求有适当的检查各种操作错误的能力,例如,输入的必须是4位十六进制的数字符,就是’0’-‘9’和’A’-‘F’;内部转换结果必须是正确的;输出的必定是16个二进制位的值,不能有丢失的情况出现。
整个程序约60-80行汇编语句。
示例如下:>g 20002F4B0010111101001011>g 20001A280001101000101000问题分解:1) 从键盘输入一个4位的十进制的数据,要求程序能够只接收‘0’~‘9’和’A’-‘F’范围内的键盘输入,如果正确则将字符显示在屏幕上,如果输入其他字符则没反应。
直到输入四位数字之后,程序自动退出。
例如:敲’0’后,屏幕显示0;敲‘x’,屏幕没变化;继续敲‘C’‘3’‘7’,屏幕显示‘0C37’,然后结束。
2) 设计程序,将某个寄存器的值以16个二进制位的形式显示在屏幕上。
例如,当前想要显示的寄存器的内容为“2F7B”,那么,运行你设计的程序之后,屏幕上输出“0010111101111011”3)在1)的基础上,将输入的4位十六进制数字字符转换为其对应的值保存在某寄存器中。
(提示,如输入2F4B后,保存到寄存器R1中,此时查看R1中的值应为2F4B)三、实验要求1. 观察实验内容中每个步骤操作的结果,并全程记录。
2. 完成实验报告的撰写,包括:实验目的、实验内容及步骤、实验结果、心得体会等部分。
四、实验指导1.教学计算机的实际组成和运行教学计算机由完整的硬件(运算器, 控制器, 存储器, 输入/ 输出接口和PC机仿真终端) 和软件(监控程序, PC机仿真终端程序, 交叉汇编程序) 两个子系统组成。
教学机与PC机通过各自的串行接口相互连接在一起。
教学机是主机,在本身的监控程序控制下运行自己的机器码程序,PC机以仿真终端方式作为教学机的输入输出设备,是通过运行PC机上的一个名字为/doc/cb96ae3e561252d380eb6ed6.html 仿真终端软件实现的。
为此,在系统加电之前,首先把连接两台计算机串行接口的通讯线接上,加电后在PC机上运行PCEC 程序,几次回车后就进入仿真终端状态;教学机正确设置功能开关的状态并加电,按RESET按钮后再按START 按钮,PC机屏幕上将出现教学机版权信息和监控命令提示符>,至此完成了系统启动过程,接下来可以使用监控命令运行教学计算机。
2.监控程序提供的操作命令TEC-2008教学计算机的操作与使用方法,主要指通过由监控程序提供的监控命令控制教学计算机的运行功能。
教学计算机处于正常运行状态时,它通过串行接口和PC机仿真终端相连接,通过常用的A、D 等监控命令可以进行联机操作。
这些监控命令,实现类似于PC机DOS 系统下的Debug程序的功能,包括A、U、G、T、P、R、D、E共8条命令,其格式为一个英文字母(大小写随意)表示的命令名、一个空格(可有可无)跟命令参数,下面分别介绍。
(1)单条汇编命令A格式:A [adr]这里的[adr] 表示此处的地址参数adr为任选项,由4位十六进制的数组成(下同),无此参数时,系统将取默认值。
功能:完成单条指令的汇编操作,把产生出来的教学计算机的执行代码放入对应的内存单元中。
命令名后的地址将是头一条汇编语句的执行码的内存单元地址。
每条语句汇编完成之后,系统将相应修改地址值,以便正确处理下条汇编语句。
在应该输入汇编语句位置不给出汇编语句而直接回车,则结束A命令的运行过程。
(2)反汇编命令U格式:U [adr]功能:每次从指定的(或默认的)地址反汇编15条指令,并将结果显示在终端屏幕上。
反汇编完成之后,已将该命令的默认地址修改好。
接下来键入不带参数的U命令时,将接着从上一次反汇编的最后一条语句之后继续反汇编。
(3)执行程序命令G格式:G [adr]功能:从指定的(或默认的)地址连续地运行一个用户程序。
为了使程序执行后能返回监控程序,要求每个用户程序的最后一条指令一定为RET指令。
(4)、(5)单指令执行程序命令T和P格式:T [adr] 或P [adr]功能:从指定的(或PC中的当前地址)开始,单条指令方式执行用户程序。
通常情况下,每按一次T 或P将执行一条指令。
它们的区别是,T 总是执行单条指令,但执行P命令时,则把每一个CALL语句连同被调用的子程序一次执行完成。
每次执行后均显示所有通用寄存器及状态寄存器的内容,并反汇编出下一条将要执行的指令。
(6)显示/修改寄存器内容命令R格式:R [寄存器名]功能:不带参数时,是显示全部寄存器及状态寄存器的值,并反汇编当前PC所指的一条指令,其中状态的显示格式为:“F=8位二进制数”,其各位的值分别对应于C、Z、V、S,P1、P0、0、0的值。
带参数时,如R R0表示要通过输入新值来修改相应寄存器R0的内容。
(7)显示存储器内容命令D格式:D [adr]功能:从指定(或默认的)地址开始显示内存128个存储字的内容。
连续的D命令,保证显示内容前后正确的连续关系,即每次执行D命令,会将默认的地址值加上128。
(8)修改存储器内容命令E格式:E [adr]功能:从指定(或默认的)地址逐字修改每个内存单元的内容,要求用户打入一个新的值,相应内存单元的内容将被修改。
接下来若打入空格键,可以开始修改下一个字,如打入的是回车键,则会结束E命令的执行过程。
使用上述8条命令,就可以完成所期望的操作。
用A命令键入教学计算机的一段汇编源程序,主要是向累加器送入数据和执行运算。
A 2000(回车);程序的起始地址选为16进制的2000(即内存RAM 区2000: M V R D R0,AA ;的起始地址),这里的数据均为16进制表示方式2002: M V R D R1,552004: A DD R0,R12005: A ND R0,R12006: R ET ;程序的最后一个语句,必须为RET指令2007:(直接敲回车键,结束A命令的输入程序的操作过程)用G命令运行前面刚输入的程序。
G 2000(回车)程序运行结束后,可以看到程序的运行结果,屏幕显示各寄存器的值,其中R0和R1的值均为55,说明程序运行正确。
当然也可以用P或T命令,逐条地执行这段程序中的指令,每执行一条指令就停下来,以便查看每一条指令的运行结果。
T 2000(回车)(结果从略,自己到实验中去看)T (回车)(结果从略,自己到实验中去看)继续打入T命令,直到程序结束(不能用P、T命令运行程序的最后那条指令RET)。
可以用R命令显示和修改有关寄存器的值,例如:R 不带参数则显示所有通用寄存器的值,状态字的值,下一条待执行指令的内容;带寄存器名参数时,是修改寄存器内容,例如,R R3 命令,回车后首先显示R3的原有内容,打入新值则完成替换。
可以用U命令对刚输入并运行过的程序进行反汇编。
U 2000(回车)(结果从略,自己到实验中去看)可以用D命令看从内存2000单元开始的这片存储区域中的内容。
D 2000(回车);(结果从略,自己到实验中去看)还可以用E命令向内存储器2100单元开始的一片存储区域键入一些数据,之后再用D命令查看:示例程序:例1:设计一个程序,在屏幕上输出显示一个字符‘6’。
A 2000 ; 地址从16进制的2000(内存RAM区的起始地址)开始2000: MVRD R0,0036 ; 把字符‘6’的ASCII码送入R02002: OUT 80 ; 在屏幕上显示字符‘6’,80为串行接口地址2003: RET ;每个用户程序都必须用RET指令结束2004:(按回车键即结束源程序的输入过程)例2:设计一个程序,用次数控制在终端屏幕上输出‘0’到‘9’十个数字符。
A 2020MVRD R2,000A ;送入输出字符的个数MVRD R0,0030 ;‘0’字符的ASCII码(2024) OUT 80 ;输出保存在R0低位字节的字符DEC R2 ;输出字符个数减1JRZ 202E ;判全部字符输出完否,已完,则结束程序PUSH R0 ;未完,保存R0 的值到堆栈中(2028) IN 81 ;读入串行接口的工作状态SHR R0 ;读入的状态字的最低位移入标志位C 中JRNC 2028 ;前一个字符输出完成否?未完则循环等待POP R0 ;已完成,从堆栈恢复R0 的值INC R0 ;得到下一个要输出的字符JR 2024 ;转去输出字符(202E) RET例3:从键盘上键入多个属于‘0’到‘9’的数字符并在屏幕上显示,遇非数字符结束程序。
A 2040MVRD R2,0030 ;用于判数字符的下界值MVRD R3,0039 ;用于判数字符的上界值(2044) IN 81 ;判键盘上是否按了一个键SHR R0 ;即串行口是否有了输入的字符SHR R0JRNC 2044 ;尚没有输入则循环测试IN 80 ;把输入字符读到R0低位字节MVRD R1, 00FFAND R0, R1 ;将R0的高位字节清0CMP R0,R2 ;判输入的字符<字符‘0’否JRNC 2053 ;是,则转到程序结束处CMP R3,R0 ;判输入的字符>字符‘9’否JRNC 2053 ;是,则转到程序结束处OUT 80 ;输出刚输入的数字符JMPA 2044 ;转去程序前边2044 处等待输入下一个字符(2053) RET3.指令与系统级模拟软件这套软件系统用来模拟和仿真教学计算机的运行过程,仿真程序可在PC上运行,所以可以在自己的计算机上完成硬件模拟实验,同时,由于PC比教学计算机具备更完备的输出设备,可直观输出全部寄存器、标志位,甚至是存储单元的内容,方便大家掌握程序运行的全部结果和状态。