计算机硬件技术系统认识实验

计算机硬件技术系统认识实验
计算机硬件技术系统认识实验

清华大学微机原理实验

学院:电气信息学院专业:电子信息工程

微机原理实验

学院:电气信息学院专业:电子信息工程

homework1

《计算机系统基础》Homework HW1:数据的表示 实验目的:熟悉数值数据在计算机内部的表示方式,掌握相关的处理语句。 实验报告要求: 1.说明你做实验的过程(重要步骤用屏幕截图表示)。 2.提交源程序。 3.分析或回答问题。 完成下列实验,提交实验报告: 1.下述两个结构所占存储空间多大?结构中各分量所在位置相对于结构起始位置的偏移 量是什么?要求编写程序以验证你的答案。若使用#pragma pack(2)语句,则结果又如何? struct test1 { char x2[3]; short x3[2]; int x1; long long x4; }; struct test2 { char x2[3]; short x3[2]; int x1; long long x4; }__attribute__((aligned(8))); 2.“-2 < 2”和“-2 < 2u”的结果一样吗?为什么? 3.运行下图中的程序代码,并对程序输出结果进行分析。

4.运行下列代码,并对输出结果进行分析。 #include void main() { union NUM { int a; char b[4]; } num; num.a = 0x12345678; printf("0x%X\n", num.b[2]); } 5.请说明下列赋值语句执行后,各个变量对应的机器数和真值各是多少?编写一段程序代 码并进行编译,观察默认情况下,编译器是否报warning。如果有warning信息的话,分析为何会出现这种warning信息。 int a = 2147483648; int b = -2147483648; int c = 2147483649; unsigned short d = 65539; short e = -32790; 6.完成书上第二章习题中第40题,提交代码,并在程序中以十六进制形式打印变量u的 机器数。 7.编译运行以下程序,并至少重复运行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"); else printf("not equal\n"); x += z; y += z; printf("%d, %f , %f\n”, i, x, y); } } 要求: (1)给出每次运行的结果截图。 (2)每次运行过程中,是否每一次循环中的判等结果都一致?为什么? (3)每次运行过程中,每一次循环输出的i、x和y的结果分别是什么?为什么?

认识计算机硬件

认识计算机硬件 教学目标】. 知识目标了解计算机硬件设备的功能及特点。 2 .技能目标能够正确指认计算机硬件设备和区分常见的输入、输出设备。 3 .情感目标通过分组学习的方式,培养学生的合作意识、研究探索精神, 树立将来为祖国的科技发展做出贡献的信心。 教学重点】计算机硬件设备的组成及各部件的名称与实物的对应 教学难点】了解计算机硬件的功能及特点 授课时间】一课时 教学方法】讲解法、图片展示法、实物操作法、任务驱动法 教学过程】 、课程导入 通过前面的学习,我们已经了解了计算机的基本工作原理和基本结构,知道了微型计算机是由硬件系统和软件系统组成的。计算机的硬件和软件相辅相成,缺一不可。下面就请大家和我一起去初步了解计算机的硬件系统。 二、新课讲授那么,什么是硬件呢?明确:通常,人们把能看得见摸得着的电子物理配件称为硬件。 提问:你所知道的计算机硬件都有哪些呢?(鼓励回答接下来让我们一起来看一看这些硬件都有什么功能。(教师讲解) 图片为根据冯诺依曼原理绘制的计算机基本结构图。根据图的描述, 计算机要想完成一个任务,首先要我们将原始数据和编好的程序放入到计算机中

去,那么这些程序和数据是如何进入计算机的呢?对,通过输入设备。常见的输入设备有键盘、鼠标、扫描仪、摄像头、数码相机等。 1)键盘 键盘是最常用的输入设备,用来输入字符和数字。 2)鼠标 鼠标是必备的输入设备之一,主要功能是进行光标定位或用来完成某种特定的输入。目前常用的鼠 标是机械式鼠标、光电式鼠标和光机式鼠标。机械式鼠标结构简单,价格便宜,但准确度和灵敏度稍差。光电式鼠标速度快,准确度和灵敏度高,但需要专门的垫板。光机式鼠标结合了两者的优点,是目前最流行的一种鼠标。使用鼠标使计算机的某些操作更容易、更方便、更有趣,它对计算机的普及具有伟大的贡献。 3)扫描仪 扫描仪就是将照片、书籍上的文字和图片获取下来,以图片文件的形式保存在计算机中的一种输入设备。 4)数码相机、摄像头它们都不是计算机的常规外设,但可以拓展计算机的使用功能,人们可以根据需要选择是否需要配置。我们采集好了外界的原始数据,也敲入了忆编好的程序,那么这些数据和程序又放在什么地方呢?

操作系统实验1

#include "stdio.h" #include #include #define getpch(type) (type*)malloc(sizeof(type)) #define NULL 0 struct pcb { /* 定义进程控制块PCB */ char name[10]; char state; int ntime; int rtime; struct pcb* link; }*ready=NULL,*p; typedef struct pcb PCB; void sort() /* 建立对进程进行优先级排列函数*/ { PCB *first, *second; int insert=0; if((ready==NULL)||((p->ntime)<(ready->ntime))) /*运行时间最短者,插入队首*/ { p->link=ready; ready=p; } else /* 进程比较运行时间优先级,插入适当的位置中*/ { first=ready; second=first->link; while(second!=NULL) { if((p->ntime)<(second->ntime)) /*若插入进程比当前进程所需运行时间短,*/ { /*插入到当前进程前面*/ p->link=second; first->link=p; second=NULL; insert=1; } else /* 插入进程运行时间最长,则插入到队尾*/ { first=first->link; second=second->link; } } if(insert==0) first->link=p; } }

微机原理与接口技术实验报告

新疆农业大学机械交通学院 实习(实验)报告纸 班级:机制072 学号: 073731234 姓名:唐伟 课程名称:微机原理及接口技术实习(实验)名称: DEBUG软件的使用 实验时间: 6.22 指导教师签字:成绩: —、实验目的 1.学习DEBUG软件的基本使用方法。 2.掌握8088/8086的寻址方式。 3.掌握数据传送、算术运算逻辑运算等类指令的基本操作。 二、实验内容与步骤 实验内容: 修改并调试以下程序,使之完成30000H开始的内存单元中存入31个先自然递增然后有自然递减的数据(00H~0F~00H)的功能。程序从CS:0100H开始存放。调试完成后程序命名为PCS.EXE并存盘。 实验步骤: (1)用A命令输入程序; (2)用反汇编U命令显示程序及目标码; 存盘程序命令为PCS1.EXE;

三、思考题 1.EXE文件程序的第一条可执行指令的IP等于多少? 答:EXE文件程序的第一条可执行指令的IP等于0010 。 2.在DEBUG环境下显示的程序和数字是什么形式?标号又是什么形式? 答: DEBUG把所有数据都作为字节序列处理。因此它可以读任何类型的文件。DEB UG可以识别两种数据: 十六进制数据和ASCⅡ码字符。它的显示格式是各个字节的十六进制值以及值在32与126之间的字节的相应ASCⅡ码字符。DEBUG总是用四位十六进制数表示地址。用两位数表示十六进制数据。不支持标号。 3.试述本次实验中你学会的DEBUG命令? 答:本次试验我学会了汇编命令(A命令)、.反汇编命令(U命令)、显示当前环境和寄存器内容(R命令、以十六进制和ASCII码形式显示内存单元内容(D命令)

总线实验

山西大学自动化与软件学院 课程实验报告 实验课程计算机系统基础 实验名称总线与寄存器实验 实验地点线上 实验时间 6.30 学生班级软件工程1808班 学生学号 201802810825 学生姓名 指导教师

一:实验要求 理解并掌握总线与寄存器 二:实验目的 1、熟悉实验软件环境; 2、掌握总线以及数据通路的概念及传输特性。 3、理解锁存器、通用寄存器及移位寄存器的组成和功能。 二、实验内容 1、根据已搭建好的8位数据通路,熟悉总线连接的方法,理解74LS244芯片的作用,理解各相关信号在数据传输过程中起的作用; 2、通过拨码开关置数,将数据传送到各寄存器,将寄存器中数据显示出来,熟悉常用的寄存器。 三、实验器件 1、D触发器(74LS74、74LS175)、三态缓冲器(74LS244)。 2、寄存器(74LS27 3、74LS374 )和移位寄存器(74LS194) 四、实验原理 (见实验指导书) 五、实验步骤 注意:实验过程中应观察总线上及芯片引脚上显示的数据的变化情况,理解数据传送的过程和寄存器存数,从寄存器读数的原理。 实验(1)拨码开关输入数据至总线 ●====1;手动操作总线DIN上的拨码开关,在总线DIN上置位数据0x55,缓冲器244阻断。比较总线DIN与BUS状态的异同。 ●=0,比较总线DIN与BUS状态的异同,记录BUS总线的数据: BUS_7BUS_6BUS_5BUS_4BUS_3BUS_2BUS_1BUS_0BUS总 线 01010101AA 实验(2)D触发器数据锁存实验 ●=0,===1;通过拨码开关改变74LS74的D端(即BUS总线的BUS_0)的状态,按照下表置位74LS74的端、端,观察并记录CLK端上升沿、下降沿跳变时刻Q端、端的状态,填观测结果于表中。 CLK D Qn Qn+1n+1 01××010 110 10××001 101

《计算机操作系统》实验指导书

《计算机操作系统》 实验指导书 (适合于计算机科学与技术专业) 湖南工业大学计算机与通信学院 二O一四年十月

前言 计算机操作系统是计算机科学与技术专业的主要专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。计算机操作系统的实验目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握操作系统的基本原理,加深对操作系统基本方法的理解,加深对课堂知识的理解,为学生综合运用所学知识,在Linux环境下调用一些常用的函数编写功能较简单的程序来实现操作系统的基本方法、并在实践应用方面打下一定基础。要求学生在实验指导教师的帮助下自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个实验解决一类问题。要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,并且能够进行简单分析和判断;能够熟练使用Linux用户界面;掌握操作系统中进程的概念和控制方法;了解进程的并发,进程之间的通信方式,了解虚拟存储管理的基本思想。同时培养学生进行分析问题、解决问题的能力;培养学生完成实验分析、实验方法、实验操作与测试、实验过程的观察、理解和归纳能力。 为了收到良好的实验效果,编写了这本实验指导书。在指导书中,每一个实验均按照该课程实验大纲的要求编写,力求紧扣理论知识点、突出设计方法、明确设计思路,通过多种形式完成实验任务,最终引导学生有目的、有方向地完成实验任务,得出实验结果。任课教师在实验前对实验任务进行一定的分析和讲解,要求学生按照每一个实验的具体要求提前完成准备工作,如:查找资料、设计程序、完成程序、写出预习报告等,做到有准备地上机。进行实验时,指导教师应检查学生的预习情况,并对调试过程给予积极指导。实验完毕后,学生应根据实验数据及结果,完成实验报告,由学习委员统一收齐后交指导教师审阅评定。 实验成绩考核: 实验成绩占计算机操作系统课程总评成绩的20%。指导教师每次实验对学生进行出勤考核,对实验效果作记录,并及时批改实验报告,综合评定每一次的实验成绩,在学期终了以平均成绩作为该生的实验成绩。有以下情形之一者,实验成绩为不及格: 1.迟到、早退、无故缺勤总共3次及以上者; 2.未按时完成实验达3次及以上者; 3.缺交实验报告2次及以上者。

微机原理与接口技术实验报告

微机原理与接口技术实验报告

2

3

实验一:数据传送 实验学时:2 实验类型:验证 实验要求:必修 一.实验目的 1.学习程序设计的基本方法和技能,掌握用汇编语言设计、编写、调试和运行程序的方法; 学习用全屏幕编辑软件QEDIT.EXE建立源程序(.ASM文件); 学习用汇编软件MASM.EXE对源文件汇编产生目标文件(.OBJ文件); 学习用连接程序LINK.EXE对目标文件产生可执行文件(.EXE文件); 学习用调试软件TD.EXE调试可执行文件; 2.掌握各种寻址方法以及简单指令的执行过程。 二.实验器材 PC机 三.实验组织运行要求 1.利用堆栈实现AX的内容与BX的内容进行交换。堆栈指针SP=2000H,AX=3000H,BX=5000H; 2.汇编、调试、观察、记录结果; ⑴用QEDIT.EXE软件输入汇编语言源程序,以.ASM格式文件存盘; ⑵用MASM对源程序进行汇编产生二进制目标文件(.OBJ文件),再用连接程序LINK产生可执行文件(.EXE文件); ⑶用调试软件TD调试、运行程序,观察、记录结果。 四.实验步骤 1.进入子目录E:>\SY86后,利用QEDIT.EXE(简称Q)送入以下汇编语言源程序,并以M1.ASM文件存盘 ⑴汇编语言程序的上机过程 ①进入\SY86子目录 E:>CD\SY86 E:\SY86> ②进入QEDIT.EXE 编辑界面 E:\SY86> Q ③输入文件名*.ASM(如M1.ASM)后,输入源程序 源程序 DATA SEGMENT PARA PUBLIC’DATA’ ;数据段定义 DB 512 DUP(0) DATA ENDS STACK SEGMENT PARA STACK’STACK’ ;堆栈段定义 DB 512 DUP( ?) 4

计算机操作系统实验四

实验三进程与线程 问题: 进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的独立单位,具有动态性、并发性、独立性、异步性和交互性。然而程序是静态的,并且进程与程序的组成不同,进程=程序+数据+PCB,进程的存在是暂时的,程序的存在是永久的;一个程序可以对应多个进程,一个进程可以包含多个程序。当操作系统引入线程的概念后,进程是操作系统独立分配资源的单位,线程成为系统调度的单位,与同一个进程中的其他线程共享程序空间。 本次实验主要的目的是: (1)理解进程的独立空间; (2)加深对进程概念的理解,明确进程和程序的区别; (3)进一步认识并发执行的实质; (4)了解红帽子(Linux)系统中进程通信的基本原理。 (5)理解线程的相关概念。 要求: 1、请查阅资料,掌握进程的概念,同时掌握进程创建和构造的相关知识和线程创建和 构造的相关知识,了解C语言程序编写的相关知识; (1)进程: 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。程序是指令、数据及其组织形式的描述,进程是程序的实体。进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内

存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。 (2)进程的创建和构造: 进程简单来说就是在操作系统中运行的程序,它是操作系统资源管理的最小单位。但是进程是一个动态的实体,它是程序的一次执行过程。进程和程序的区别在于:进程是动态的,程序是静态的,进程是运行中的程序,而程序是一些保存在硬盘上的可执行代码。新的进程通过克隆旧的程序(当前进程)而建立。fork() 和clone()(对于线程)系统调用可用来建立新的进程。 (3)线程的创建和构造: 线程也称做轻量级进程。就像进程一样,线程在程序中是独立的、并发的执行路径,每个线程有它自己的堆栈、自己的程序计数器和自己的局部变量。但是,与独立的进程相比,进程中的线程之间的独立程度要小。它们共享内存、文件句柄和其他每个进程应有的状态。 线程的出现也并不是为了取代进程,而是对进程的功能作了扩展。进程可以支持多个线程,它们看似同时执行,但相互之间并不同步。一个进程中的多个线程共享相同的内存地址空间,这就意味着它们可以访问相同的变量和对象,而且它们从同一堆中分配对象。尽管这让线程之间共享信息变得更容易,但你必须小心,确保它们不会妨碍同一进程里的其他线程。 线程与进程相似,是一段完成某个特定功能的代码,是程序中单个顺序的流控制,但与进程不同的是,同类的多个线程是共享同一块内存空间和一组系统资源的,而线程本身的数据通常只有微处理器的寄存器数据,以及一个供程序执行时使用的堆栈。所以系统在产生一个线程,或者在各个线程之间切换时,负担要比进程小得多,正因如此,线程也被称为轻型进程(light-weight process)。一个进程中可以包含多个线程。 2、理解进程的独立空间的实验内容及步骤

8086软硬件实验报告(微机原理与接口技术上机实验)

实验一实验环境熟悉与简单程序设计 实验目的 (1)掌握DEBUG调试程序的使用方法。 (2)掌握简单程序的设计方法。 实验内容 编程将BH中的数分成高半字节和低半字节两部分,把其中的高半字节放到DH中的低4位(高4位补零),把其中的低半字节放到DL中的低4位(高4位补零)。如: BH=10110010B 则运行程序后 DH=00001011B DL=00000010B 实验准备 (1)熟练掌握所学过的指令。 (2)根据实验内容,要求预先编好程序。 实验步骤 (1)利用DEBUG程序输入、调试程序。 (2)按下表要求不断地修改BH的内容,然后记录下DX的内容。 实验报告 (1)给出程序清单。 (2)详细说明程序调试过程。

程序: CODE SEGMENT START : MOV BH,00111111B MOV AL,BH MOV CL,4 SHR AL,CL MOV DH,AL MOV AL,BH AND AL,00001111B MOV DL,AL MOV CL,0 CODE ENDS END START

实验二简单程序设计 实验目的 (3)掌握DEBUG调试程序的使用方法。 (4)掌握简单程序的设计方法。 实验内容 试编写一个汇编语言程序,要求实现功能:在屏幕上显示:Hello world My name is Li Jianguo 参考程序如下:(有错) data segment out1 db 'Hello world' ax db 'My name is Li Jianguo' data ens code segment assume cs:code;ds:data lea dx,out1 mov ah,2 int 21h mov dl,0ah mov ah,2

homework2

《计算机系统基础》Homework HW2:排序程序的编辑、编译和调试 实验目的:熟悉开发环境、掌握开发和调试的基本过程以及工具。 实验要求:对实验步骤中给出的源程序进行编辑、编译、链接,调试。 实验报告: 1. 说明你做实验的过程(重要步骤用屏幕截图表示)。 2. 提交出源程序。 3. 提交可执行目标文件。 4. 分析或回答下列问题。 (1)分析同一个源程序在不同机器上生成的可执行目标代码是否相同。 提示:从多个方面(如ISA、OS 和编译器)来分析。 (2)你能在可执行目标文件中找出函数printf ()对应的机器代码段吗?能的话,请标示出来。(3)为什么源程序文件的内容和可执行目标文件的内容完全不同? 报告提交截止日期:5月24 日 实验步骤: 1、以下程序实现了排序和求和算法,程序源码如下图所示。请根据提供的图片输入源程序文件,并保存为相应的.c 和.h 文件。 bubblesort.h: bubblesort.c:

add.h: add.c: printresult.h: printresult.c:

main.c: 2、将源程序文件进行预处理、编译、汇编和链接,以生成可执行文件。 (1) 使用gcc 直接生成可执行文件 gcc -o main main.c bubblesort.c add.c printresult.c

(2) 首先生成可重定位目标文件(.o 文件),再链接成可执行文件。 首先,使用gcc –c ……命令将所有.c 文件编译成.o 文件(可以用-o 选项命名输出的可重定位目标文件),然后再用ld 命令进行链接,以生成可执行目标文件。 (用ld命令链接时要包含很多系统库,可以用gcc –v main.c来查看系统链接需要哪些库,把collect2 换成ld,生成的/tmp/ccBCU0rh.o 即为mian.c 编译出来的main.o 文件,删掉该句替换成以下命令:-o main main.o bubblesort.o add.o printresult.o -e main) ld -o main main.o bubblesort.o add.o printresult.o -e main --sysroot=/ --build-id --eh-frame-hdr -m elf_i386 --hash-style=gnu --as-needed -dynamic-linker /lib/ld-linux.so.2 -z relro /usr/lib/gcc/i686-linux-gnu/4.8/../../../i386-linux-gnu/crt1.o /usr/lib/gcc/i686-linux-gnu/4.8/../../../i386-linux-gnu/crti.o /usr/lib/gcc/i686-linux-gnu/4.8/crtbegin.o -L/usr/lib/gcc/i686-linux-gnu/4.8 -L/usr/lib/gcc/i686-linux-gnu/4.8/../../../i386-linux-gnu -L/usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib -L/lib/i386-linux-gnu -L/lib/../lib -L/usr/lib/i386-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/i686-linux-gnu/4.8/../../.. -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/i686-linux-gnu/4.8/crtend.o /usr/lib/gcc/i686-linux-gnu/4.8/../../../i386-linux-gnu/crtn.o 上述过程如下图所示: 3、使用OBJDUMP命令进行反汇编(请自行查阅OBJDUMP命令的使用方法) 例如,可使用“objdump –S”命令进行反汇编 objdump –S main.o:将main.o进行反汇编 4、使用GDB命令进行各种调试(GDB命令参见教材附录C,也可自行查阅网上相关文档) 调试之前首先用“gcc –g”命令生成调试信息,否则调试失败。 gcc -g -o main main.c bubblesort.c add.c printresult.c gdb main 要求用各种GDB命令对程序进行调试(例如用info registers 查看寄存器内容)。 5、选做(加分题) 实现readelf –h main.o的功能

计算机操作系统 实验报告

操作系统实验报告 学院:计算机与通信工程学院 专业:计算机科学与技术 班级: 学号: 姓名: 指导教师: 成绩: 2014年 1 月 1 日

实验一线程的状态和转换(5分) 1 实验目的和要求 目的:熟悉线程的状态及其转换,理解线程状态转换与线程调度的关系。 要求: (1)跟踪调试EOS线程在各种状态间的转换过程,分析EOS中线程状态及其转换的相关源代码; (2)修改EOS的源代码,为线程增加挂起状态。 2 完成的实验内容 2.1 EOS线程状态转换过程的跟踪与源代码分析 (分析EOS中线程状态及其转换的核心源代码,说明EOS定义的线程状态以及状态转换的实现方法;给出在本部分实验过程中完成的主要工作,包括调试、跟踪与思考等) 1.EOS 准备了一个控制台命令“loop ”,这个命令的命令函数是 ke/sysproc.c 文件中的ConsoleCmdLoop 函数(第797行,在此函数中使用 LoopThreadFunction 函数(第755 行)创建了一个优先级为 8 的线程(后面简称为“loop 线程”),该线程会在控制台中不停的(死循环)输出该线程的ID和执行计数,执行计数会不停的增长以表示该线程在不停的运行。loop命令执行的效果可以参见下图: 2. 线程由阻塞状态进入就绪状态 (1)在虚拟机窗口中按下一次空格键。 (2)此时EOS会在PspUnwaitThread函数中的断点处中断。在“调试”菜单中选择“快速监视”,在快速监视对话框的表达式编辑框中输入表达式“*Thread”,然后点击“重新计算”按钮,即可查看线程控制块(TCB)中的信息。其中State域的值为3(Waiting),双向链表项StateListEntry的Next和Prev指针的值都不为0,说明这个线程还处于阻塞状态,并在某个同步对象的等待队列中;StartAddr域的值为IopConsoleDispatchThread,说明这个线程就是控制台派遣线程。 (3)关闭快速监视对话框,激活“调用堆栈”窗口。根据当前的调用堆栈,可以看到是由键盘中断服务程序(KdbIsr)进入的。当按下空格键后,就会发生键盘中断,从而触发键盘中断服务程序。在该服务程序的最后中会唤醒控制台派遣线程,将键盘事件派遣到活动的控制台。 (4)在“调用堆栈”窗口中双击PspWakeThread函数对应的堆栈项。可以看到在此函数中连续调用了PspUnwaitThread函数和PspReadyThread函数,从而使处于阻塞状态的控制台派遣线程进入就绪状态。 (5)在“调用堆栈”窗口中双击PspUnwaitThread函数对应的堆栈项,先来看看此函数是如何改变线程状态的。按F10单步调试直到此函数的最后,然后再从快速监视对

微机接口实验二(实验报告)

实验二 循环和分支程序设计 学号 201316122 姓名 黄成楠 专业 通信工程 成绩 【实验目的】 (1) 熟悉上机实验流程、调试及查看实验结果。 (2) 熟悉汇编语言编程环境,DOS 调用应用; (3) 编写循环和分支程序,并调试; 【实验内容及步骤】 1、 实验要求: 从键盘输入一系列字符, 以回车符结束,编程统计其中数字字符的个数(不超过100个) 提示: 程序首先调用DOS 功能的1号功能,从键盘输入字符。为得到字符串,可以采用循环结构,连续输入。在输入的过程中通过判断是否是回车来结束输入。其中回车的ASII 码(0DH )。数字的0的ASII 码(30H )9的(39H ) 流程图: Next1函数: Next 函数:

Exit函数: 2、实验内容: DSEG SEGMENT DATA1 DB 100 DUP(?) DATA2 DB 'please input:','$' DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG, DS:DSEG START: MOV AX, DSEG MOV DS, AX MOV BX,0 LEA DX,DATA2 MOV AH,09H INT 21H NEXT2: MOV AH,1 INT 21H CMP AL,0DH JE EXIT CMP AL,30H JAE NEXT3 JMP NEXT2 NEXT3: CMP AL,39H JBE NEXT4 JMP NEXT2 NEXT4: INC BX JMP NEXT2 EXIT: MOV AX,BX MOV CL,10 DIV CL

实验报告一Linux下的C语言编程

计算机系统基础实验报告 学院信电学院专业计算机班级1401 学号140210110 姓名段登赢实验时间: 一、实验名称:Linux下的C语言编程 二、实验目的和要求: 实验目的: (1)掌握VMware虚拟机的使用及Linux操作系统的安装; (2)熟练Linux操作系统的基本使用; (3)掌握GCC编译环境的使用; 实验要求: 描述你的分析过程;说明你做实验的过程(重要步骤用屏幕截图表示);提交源程序和可执行文件。 三、实验环境(软、硬件): 硬件:个人电脑一台 软件:在虚拟机Vmware上的Ubuntu GCC编辑器:vi编辑器 四、实验内容: 要求:在GCC编译环境下用C语言编程完成下列题目。 (1)人口普查 (2)旧键盘 (3)集体照 1、常用的Linux命令总结 Tab 快捷键,自动补全 切换用户:格式su [用户名];su - root 查看目录和文件:格式ls [-a -l ] [目录和文件],其中-a是显示目录下所有的文件和目录(含隐藏文件)-l是显示目录下的文件和目录的详细信息 改变工作目录:格式cd /目录名;cd .. 返回上一目录 复制文件:格式cp [ -r ] 源文件或目录目标文件和目录,其中-r是复制目录 移动或更名:格式mv 源文件目标文件 删除文件或目录:格式rm [ -r ] 文件名或目录名,其中-r是删除目录 创建目录:格式mkdir 目录名 查看目录大小:格式du 目录名 压缩文件:格式gzip [-d] 文件名,其中-d是解压缩 打包文件:格式tar 目录或文件

解包文件:格式xvf 目录或文件 终止程序:Ctrl+c 后台运行:Ctrl+z Gcc编译:格式gcc [-o -O -c -g -w] 文件名,其中-o是确定输出自定义文件的名字,-O对程序的编译和链接进行优化,-c是不进行链接,生成.o后缀的文件,-g是产生调试工具,-w 不生成警告信息。 2. 在Linux系统中对所给的题目进行编程和分析 (1)打开虚拟机运行ubuntu (2)打开虚拟机终端(ctrl+Alt+T) (3)键入命令cd /home/duan/桌面进入到桌面 (4)键入命令mkdir shiyan,创建名字为shiyan的文件夹,更改用户权限 (5)然后cd /shiyan进入的shiyan文件夹里面 (6)键入命令touch renkou.c创建.c文件。如下图所示 (7)键入命令gcc renkou.c进行编译c程序,生成可执行文件。 (8)键入命令./a.out运行可执行文件,如下图所示。 五、实验结果及分析: 1、人口普查

微机原理与接口实验报告1

微机原理与接口实验报告计算机与信息工程学院11级通信工程20111105438 李楠 2.4 分支程序设计实验 一、实验目的 1. 掌握分支程序的结构。 2. 掌握分支程序的设计、调试方法。 二、实验设备 PC机一台,TD-PITE实验装置或TD-PITC实验装置一套。 三、实验内容 设计一数据块间的搬移程序。设计思想:程序要求把内存中一数据区(称为源数据块)传送到另一存储区(成为目的数据块)。源数据块和目的数据块在存储中可能有三种情况. 实验程序清单(例程文件名为:A4-1.ASM) SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE START: MOV CX, 0010H MOV SI, 3100H MOV DI, 3200H CMP SI, DI JA A2 ADD SI, CX ADD DI, CX DEC SI DEC DI A1: MOV AL, [SI]

MOV [DI], AL DEC SI DEC DI DEC CX JNE A1 JMP A3 A2: MOV AL, [SI] MOV [DI], AL INC SI INC DI DEC CX JNE A2 A3: MOV AX,4C00H INT 21H ;程序终止 CODE ENDS END START 四、实验步骤 1. 按流程图编写实验程序,经编译、链接无误后装入系统。 2. 用E命令在以SI为起始地址的单元中填入16个数。 3. 运行程序,待程序运行停止。 4. 通过D命令查看DI为起始地址的单元中的数据是否与SI单元中数据相同。 5. 通过改变SI、DI的值,观察在三种不同的数据块情况下程序的运行情况,并验证程序的功能。

华中科技大学计算机系统基础实验报告

课程实验报告课程名称:计算机系统基础 专业班级: 学号: 姓名: 指导教师: 报告日期:2016年5月24日 计算机科学与技术学院

目录 实验1: (2) 实验2: (9) 实验3: (23) 实验总结 (32)

实验1:数据表示 1.1 实验概述 本实验的目的是更好地熟悉和掌握计算机中整数和浮点数的二进制编码表示。 实验中,你需要解开一系列编程“难题”——使用有限类型和数量的运算操作实现一组给定功能的函数,在此过程中你将加深对数据二进制编码表示的了解。实验语言:c; 实验环境: linux 1.2 实验内容 需要完成 bits.c 中下列函数功能,具体分为三大类:位操作、补码运算和浮点数操作。 1.3 实验设计 源码如下: /* * lsbZero - set 0 to the least significant bit of x * Example: lsbZero(0x87654321) = 0x87654320 * Legal ops: ! ~ & ^ | + <<>> * Max ops: 5 * Rating: 1 */ int lsbZero(int x) { //x右移一位再左移一位实现把最低有效位置0 x = x>>1; x = x<<1; return x; } /* * byteNot - bit-inversion to byte n from word x * Bytes numbered from 0 (LSB) to 3 (MSB) * Examples: getByteNot(0x12345678,1) = 0x1234A978 * Legal ops: ! ~ & ^ | + <<>> * Max ops: 6 * Rating: 2

计算机硬件教学设计

认识计算机硬件教学设计 章丘市实验中学宋居波 一、教材分析: 认识计算机硬件是七年级上册第一单元的第二课,主要介绍计算机由哪些硬件组成,及其各个部件的功能,是对整个计算机硬件系统的介绍,它是针对初中学生的知识接受能力,对计算机的本质进行介绍,使学生充分了解计算机的组成和简单的工作原理,以便在学习后续知识时理解更为深刻,是本单元的重点内容,也是中考中重点考察的内容。本节课内容较多,知识点较为分散,也难于理解。因此,本节课合理运用教材,通过实物展示、课件演示、将知识点融于图表中便于学生理解和记忆。 二、学生分析: 本节课授课对象是初一年级学生,在这之前学生已经对计算机了有一定的了解,他们认识鼠标、键盘等硬件设备,部分学生还掌握了常用的软件操作。但学生对计算机的系统组成、计算机内部结构认识不是很清晰,经过本课学习之后,对学生进一步了解计算机主机的外观及内部组成,及了解存储设备和输入、输出设备有很大帮助。这个年龄段的学生对电脑有着很强的好奇心,并且对学习电脑有很大的兴趣。 三、教学目标: 知识与技能:识别计算机主要部件及其功能;了解计算机硬件的组成。 过程与方法:通过课件演示,让学生识别出这是什么部件(结合实物);通过对硬件的学习,了解计算机的工作原理。 情感与价值观:培养学生参与意识和研究探索的精神,从而调动学生的积极性,激发学生对计算机硬件的兴趣。 四、重点与难点 重点:计算机硬件的组成 难点:计算机工作原理 五、教学方法 任务驱动实物展示课件演示图表归纳类比方法 六、教学准备: 硬件实物展示课件多媒体教室 七、教学过程: (一)创设情景,导入新课:大家喜欢计算机吗?(学生回答:“喜欢”),那你对计算机了解多少呢?它是由什么组成的呢?课件展示计算机图片。(学生回答:显示器、键盘、鼠标、主机等)“很好,大家说的都不错,不过还不全面,刚才大家说的都是计算机的硬件,除了硬件外,计算机还需要有软件才能正常工作。” 引言导语:“今天,老师就引领大家到硬件的海洋里遨游一圈。” (二)展示实物,认识硬件,激发学生的学习兴趣。 主板:认识CPU插槽、内存插槽(拔插方法)、IDE插槽、PCI插槽、电源插槽 接口:鼠标接口、键盘接口、USB接口、串口、并口、VGA接口、音频接口 认识硬盘、软盘、优盘、光盘、内存条等。 引言导语:刚才大家从感性上认识了很多的硬件,到底什么是硬件呢?(课件展示)下面我们就来总结一下计算机到底由哪些硬件组成的呢? (三)计算机硬件的组成(课件展示:图表归纳突破重点)

计算机操作系统实验资料

操作系统实验报告 1.实验目的及要求 ①了解什么是信号。 ②熟悉LINUX系统中进程之间软中断通信的基本原理。 2.实验环境 VMware Workstation 12 Player 3.实验内容 ①编写一段程序,使用系统调用fork( )创建两个子进程,再用系统调用signal( )让父进程捕捉键盘上来的中断信号(即按ctrl+c 键),当捕捉到中断信号后,父进程用系统调用kill( )向两个子进程发出信号,子进程捕捉到信号后,分别输出下列信息后终止:Child process 1 is killed by parent! Child process 2 is killed by parent! 父进程等待两个子进程终止后,输出以下信息后终止: Parent process is killed! ②程序实例 #include #include #include

int wait_mark; void waiting(); void stop(); void main() { int p1,p2; signal(SIGINT,stop); //signal()初始位置while((p1=fork())==-1); if(p1>0) { signal(SIGINT,stop); while((p2=fork())==-1); if(p2>0) { signal(SIGINT,stop); wait_mark=1; waiting(); kill(p1,10); kill(p2,12); wait(); wait(); printf("parent process is killed!\n"); exit(0);

微机原理与接口技术软件实验报告

第一篇软件实验 实验一存储器块操作实验 一、实验目的 1. 熟悉KEIL集成调试环境和汇编程序的调试方法。 2. 掌握存储器读写方法; 3. 了解内存块的移动方法; 二、实验说明 实验1 指定某存储器的其实地址和长度,要求能将其内容赋值。通过该实验学生可以了解单片机读写存储器的方法,同时也可以了解单片机编程、调试方法。 块移动是单片机常用操作之一,多用于大量的数据复制和图像操作。例程2给出起始地址,用地址加1方法移动块,将指定源地址和长度的存储块移到指定目标为起始地址的单元中去。移动3000H起始的256个字节到4000H起始的256个字节。 三、实验内容 1. 试编程将片内RAM中的数据依次复制到片外RAM。假设源数据区的首地址为40H,目的数据区的首地址为1000H,数据块长度为10H。 流程图: 程序:

运行结果: Memory显示,片内RAM中40H开始数据为03 00 29 00 00 00 71 00 AB 00 00 00 1E 00 00 FF,说明测试数据已经成功输入片内RAM。从片外RAM中1000H位置开始记录为03 00 29 00 00 00 71 00 AB 00 00 00 1E 00 00 FF,说明片内RAM从40H开始的数据已经成功复制到片外从1000H开始的地址。 2. 两个16位无符号二进制数分别存放在片外RAM首址为2000H和2002H单元内,将它们相加,结果存入RAM 30H(低8位)、31H(高8位)。 程序(以0506H+CDEFH为例):

0506H和CDEFH已存入片外单元,运算结果D2F5已存入30H和31H中。 四、思考题 1. 如何将存储块的内容置成某固定值(例全填充为0FFH)?请用户修改程序,完成此操作。答:将源程序中的MOV A, #01H 改为MOV A,#0FFH即可。 2. 若源块地址和目标地址有重叠,该如何避免? 答:先执行一次数据转移操作将源块地址中的数据先暂存入一块地址与目标地址和源块地址均不重叠的存储区,再执行一次数据转移操作将暂存区的数据移入目标地址区域。 五、心得体会 本次实验我学会了数据块的移动和赋值。片内数据的移动和计算比较简便,涉及到片外数据的计算时要增加移动到片内的步骤。当数据需要进行保护时可以设定数据暂存区。 本实验微机原理的第一个实验,刚开始编程时有一点困难。我体会到了汇编语言的特点。与其他语言相比,它不仅要求良好的逻辑能力,而且要求编程者有较好的硬件知识。比如本次实验中,一开始我的编译一直报错,原来是将MOVX A,@DPTR指令错写成了MOV A,@DPTR。MOV指令用于内部RAM数据传送,而MOV用于外部数据传送。我体会到只有充分了解单片机的硬件结构,才能使用正确的指令,让编程正确无误的进行。这也是我今后要加强学习的重点。 实验二数值转换实验 一、实验目的

认识计算机各组成部件

日志 内容包括实习(训)内容、指导教师指导情况、心得体会等。 一、计算机的组成部分及识别 : 由运算器,控制器,存储器,输入装置和输出装置五大部件组成计算机,每一部件分别按要求执行特定的基本功能。 ⑴运算器或称算术逻辑单元(Arithmetical and Logical Unit) 运算器的主要功能是对数据进行各种运算。这些运算除了常规的加、减、乘、除等基本的算术运算之外,还包括能进行“逻辑判断”的逻辑处理能力,即“与”、“或”、“非”这样的基本逻辑运算以及数据的比较、移位等操作。 ⑵存储器(Memory unit) 存储器的主要功能是存储程序和各种数据信息,并能在计算机运行过程中高速、自动地完成程序或数据的存取。存储器是具有“记忆”功能的设备,它用具有两种稳定状态的物理器件来存储信息。这些器件也称为记忆元件。由于记忆元件只有两种稳定状态,因此在计算机中采用只有两个数码“0”和“1”的二进制来表示数据。记忆元件的两种稳定状态分别表示为“0”和“1”。日常使用的十进制数必须转换成等值的二进制数才能存入存储器中。计算机中处理的各种字符,例如英文字母、运算符号等,也要转换成二进制代码才能存储和操作。 存储器是由成千上万个“存储单元”构成的,每个存储单元存放一定位数(微机上为8位)的二进制数,每个存储单元都有唯一的编号,称为

存储单元的地址。“存储单元”是基本的存储单位,不同的存储单元是用不同的地址来区分的,就好像居民区的一条街道上的住户是用不同的门牌号码来区分一样。 计算机采用按地址访问的方式到存储器中存数据和取数据,即在计算机程序中,每当需要访问数据时,要向存储器送去一个地址指出数据的位置,同时发出一个“存放”命令(伴以待存放的数据),或者发出一个“取出”命令。这种按地址存储方式的特点是,只要知道了数据的地址就能直接存取。但也有缺点,即一个数据往往要占用多个存储单元,必须连续存取有关的存储单元才是一个完整的数据。 计算机在计算之前,程序和数据通过输入设备送入存储器,计算机开始工作之后,存储器还要为其它部件提供信息,也要保存中间结果和最终结果。因此,存储器的存数和取数的速度是计算机系统的一个非常重要的性能指标。 ⑶控制器(Control Unit) 控制器是整个计算机系统的控制中心,它指挥计算机各部分协调地工作,保证计算机按照预先规定的目标和步骤有条不紊地进行操作及处理。 控制器从存储器中逐条取出指令,分析每条指令规定的是什么操作以及所需数据的存放位置等,然后根据分析的结果向计算机其它部分发出控制信号,统一指挥整个计算机完成指令所规定的操作。因此,计算机自动

相关文档
最新文档