文档库 最新最全的文档下载
当前位置:文档库 › MIT JOS Lab1 实验报告

MIT JOS Lab1 实验报告

MIT JOS Lab1 实验报告
MIT JOS Lab1 实验报告

JOS Lab1实验报告

Exercise 1.Familiarize yourself with the assembly language materials available on the6.828reference page.You don't have to read them now, but you'll almost certainly want to refer to some of this material when reading and writing x86assembly.

We do recommend reading the section"The Syntax"in Brennan's Guide to Inline Assembly.It gives a good(and quite brief)description of the AT&T assembly syntax we'll be using with the GNU assembler in JOS.

https://www.wendangku.net/doc/fb17247702.html,e GDB's si(Step Instruction)command to trace into the ROM BIOS for a few more instructions,and try to guess what it might be doing. You might want to look at Phil Storrs I/O Ports Description,as well as other materials on the6.828reference materials page.No need to figure out all the details-just the general idea of what the BIOS is doing first.

Exercise3.Take a look at the lab tools guide,especially the section on GDB commands.Even if you're familiar with GDB,this includes some esoteric GDB commands that are useful for OS work.

Set a breakpoint at address0x7c00,which is where the boot sector will be loaded.Continue execution until that breakpoint.Trace through the code in boot/boot.S,using the source code and the disassembly file obj/boot/boot.asm to keep track of where you are.Also use the x/i command in GDB to disassemble sequences of instructions in the boot loader,and compare the original boot loader source code with both the disassembly in obj/boot/boot.asm and GDB.

Trace into bootmain()in boot/main.c,and then into readsect().Identify the exact assembly instructions that correspond to each of the statements in readsect().Trace through the rest of readsect()and back out into bootmain(),and identify the begin and end of the forloop that reads the remaining sectors of the kernel from the disk.Find out what code will run when the loop is finished,set a breakpoint there,and continue to that breakpoint.Then step through the remainder of the boot loader.

At what point does the processor start executing32-bit code?What exactly causes the switch from16-to32-bit mode?

我们知道当BIOS找到一个可引导软盘或硬盘后,BIOS将512字节的引导扇区加载到内存的0x7c00到0x7dff物理地址中。bios在0x7c00地址空间处加载bootloader,此时CR0标志位0改为1,处理器由16位模式转换到32保护模式。

What is the last instruction of the boot loader executed,and what is the

first instruction of the kernel it just loaded?

我们知道boot loader最后是要加载内核kernel。在main.c中我们可以找到如下语句:

所以说,boot loader最后执行的是:加载elf格式的内核镜像,并调用elf的入口。

对于kernel最先加载什么的问题,我们可以用objdump-x obj/kern/kernel命令(该命令下面将作出一些概念及介绍),发现kernel开始执行的地址在0x10000c,

在该地址空间设置断点可看到kernel执行的第一条语句。

Where is the first instruction of the kernel?

这个问题在上一问我们应该就知道了,Kernel第一条指令在0x10000c上,我们可以在entry.s中找到。

How does the boot loader decide how many sectors it must read in order

to fetch the entire kernel from disk?Where does it find this information?这里我们需要大概了解一些objdump命令的概念与使用方法。通俗的说,这个命令可以给我们一个可阅读的格式来了解二进制文件可能带有的附加信息。

-h显示目标文件各个section的头部摘要信息。

-f显示objfile中每个文件的整体头部摘要信息。

-x显示所有可用的头信息,包括符号表、重定位入口。-x等价于-a-f-h-r-t同时指定。这里我们用objump-x obj/kern/kernel命令,可以看到所有Sections和Program Headers.

Exercise4.Read about programming with pointers in C.The best reference for the C language is The C Programming Language by Brian Kernighan and Dennis Ritchie(known as'K&R').We recommend that students purchase this book(here is an Amazon Link)or find one of MIT's7copies.

Read 5.1(Pointers and Addresses)through 5.5(Character Pointers and Functions)in K&R.Then download the code for pointers.c,run it,and make sure you understand where all of the printed values come from.In particular,make sure you understand where the pointer addresses in lines 1and6come from,how all the values in lines2through4get there,and why the values printed in line5are seemingly corrupted.

There are other references on pointers in C,though not as strongly recommended.A tutorial by Ted Jensen that cites K&R heavily is available in the course readings.

Warning:Unless you are already thoroughly versed in C,do not skip or even skim this reading exercise.If you do not really understand pointers in C,you will suffer untold pain and misery in subsequent labs,and then eventually come to understand them the hard way.Trust us;you don't want to find out what"the hard way"is.

练习4主要是让我们复习C语言。

#include

#include

void f(void)

{

int a[4];

int*b=malloc(16);//分配长度为16bytes字节的内存块

int*c;

int i;

printf("1:a=%p,b=%p,c=%p\n",a,b,c);

//分配的空间是随机的,输出地址就是随机的地址

for(i=0;i<4;i++)//for循环只循环后面的一句

a[i]=100+i;//a[0]=100,a[1]=101,a[2]=102,a[3]=103

c=a;//数组名代表数组的首地址,因此c=&a[0]等同于c=a(&为取地址)

c[0]=200;//c[0]=a[0]=200

printf("2:a[0]=%d,a[1]=%d,a[2]=%d,a[3]=%d\n",a[0],a[1],a[2],a[3]);

//a[0]=200,a[1]=101,a[2]=102,a[3]=103

c[1]=300;//a[1]=300

*(c+2)=301;//*(c+2)等同于c[2]=301所以a[2]=301

3[c]=302;//等同于c[3]?

printf("3:a[0]=%d,a[1]=%d,a[2]=%d,a[3]=%d\n",a[0],a[1],a[2],a[3]);

//a[0]=200,a[1]=300,a[2]=301,

c=c+1;//C+1的地址给了C(C和C+1在一个地址)

*c=400;//此时C地址上的值为C+1地址上的值

//该代码意思是将400赋给C+1地址上的值,故c[1]=400=a[1]

printf("4:a[0]=%d,a[1]=%d,a[2]=%d,a[3]=%d\n",a[0],a[1],a[2],a[3]);

//a[0]=200,a[1]=400,a[2]=301

c=(int*)((char*)c+1);//强制类型转换

*c=500;

printf("5:a[0]=%d,a[1]=%d,a[2]=%d,a[3]=%d\n",

a[0],a[1],a[2],a[3]);

b=(int*)a+1;

c=(int*)((char*)a+1);

printf("6:a=%p,b=%p,c=%p\n",a,b,c);

}

int main(int ac,char**av)

{

f();

return0;

}

Exercise5.Trace through the first few instructions of the boot loader again and identify the first instruction that would"break"or otherwise do the wrong thing if you were to get the boot loader's link address wrong. Then change the link address in boot/Makefrag to something wrong,run make

clean,recompile the lab with make,and trace into the boot loader again to see what happens.Don't forget to change the link address back and make clean again afterward!

练习5要求我们把地址链接修改成错误的,然后看看这时候boot loader出错的第一条指令是什么。

我将boot/Makefrag中的地址链接改为:

在重新编译运行的时候提示错误:

而我们在boot.s中可以找到这段代码:

所以我们可以得知错误是在将处理器转成32位时发生的。

Exercise6.We can examine memory using GDB's x command.The GDB manual has full details,but for now,it is enough to know that the command x/N x ADDR prints N words of memory at ADDR.(Note that both'x's in the command are lowercase.)Warning:The size of a word is not a universal standard.

In GNU assembly,a word is two bytes(the'w'in xorw,which stands for word,means2bytes).

Reset the machine(exit QEMU/GDB and start them again).Examine the8words of memory at0x00100000at the point the BIOS enters the boot loader,and then again at the point the boot loader enters the kernel.Why are they different?What is there at the second breakpoint?(You do not really need to use QEMU to answer this question.Just think.)

我们由练习的介绍可知x/Nx ADDR(N为数字,ADDR为地址)可输出在该地址及以后的N个内存单元的内容。Bios进入boot loader的地址就是0x7c00。Boot loader进入kernel的地址是0x10000c。所以我们需要在这两个地址设置断点。而地址的内容由空变为非空,是因为Boot loader将kernel载入到了0x100000以及后面的地址上。

https://www.wendangku.net/doc/fb17247702.html,e QEMU and GDB to trace into the JOS kernel and stop at the movl%eax,%cr0.Examine memory at0x00100000and at0xf0100000.Now, single step over that instruction using the stepi GDB command.Again, examine memory at0x00100000and at0xf0100000.Make sure you understand

what just happened.

What is the first instruction after the new mapping is established that would fail to work properly if the mapping weren't in place?Comment out the movl%eax,%cr0in kern/entry.S,trace into it,and see if you were right.

首先我们在kernel.asm中找到了这段代码:

我们知道,当CR0_PG标志位改变之后,(高位的)虚拟地址被(页表)转换为物理地址。

然后我们在gdb中在该内存空间处设置断点,执行,由于此时Paging还没有被启用,所以检查要求的两个地址内容时,高地址(0xf0100000)并不存在。然后我们执行stepi指令,此时Paging已经启用,entry_pgdir将0xf0000000到0xf0400000范围内虚拟地址转换成了0x00000000到0x00400000范围的物理地址。所以再次检查地址内容时候发现地址0xf0100000的内容和0x00100000的内容相同。

内存分页(Paging)是一种用来管理内存的技术。它的功用主要在于让电脑主内存,可以使用储存在次级内存中的资料。操作系统将次级内存中的资料,分割成固定大小的区块,这被称为分页(pages)。应用分页技术在内存区段上的最大好处,是它允许储存资料的实体位址,可以是不连续的。

Exercise8.We have omitted a small fragment of code-the code necessary to print octal numbers using patterns of the form"%o".Find and fill in this code fragment.

我参照printfmt.c中16进制的代码编写了8进制的代码:

然后我们重新运行qemu。

我们可以看到在运行qemu时,输出十进制数6828=八进制的15254。

Be able to answer the following questions:

1.Explain the interface between printf.c and console.c.Specifically, what function does console.c export?How is this function used by printf.c?

Console.c的功能是实现I/O设备的输入输出。Printf.c通过调用cputchar函数来和Console.c进行交互。

2.Explain the following from console.c:

实现功能如果一屏写满,则向上滚动一行

3.For the following questions you might wish to consult the notes for Lecture2.These notes cover GCC's calling convention on the x86.

Trace the execution of the following code step-by-step:

int x=1,y=3,z=4;

cprintf("x%d,y%x,z%d\n",x,y,z);

In the call to cprintf(),to what does fmt point?To what does ap point?

List(in order of execution)each call to cons_putc,va_arg,and vcprintf.For cons_putc,list its

argument as well.For va_arg,list what ap points to before and after the call.For vcprintf list the values

of its two arguments.

4.Run the following code.

unsigned int i=0x00646c72;

cprintf("H%x Wo%s",57616,&i);

我们在这里把3,4一起完成,如下图:

我们主要分析一下为什么输出“He110World”。

cprintf("H%x Wo%s",57616,&i);中%x代表以无符号16进制整数的形式输出。

十进制数57616用16进制数来表示便是e110,所以He110即得。

无符号整形数在这里则表示了一个字符串“rld”。这又是怎么得来的?

如下图所示,由于无符号整形数是占4个字节,而低位数字是存在低地址处。若将这四个字节看做一个字符串,则每个字节代表的就是一个字符的ASCⅡ码,那么对于无符号整形0x00646c72,通过查表,低位的0x72代表的是字符‘r’,而最高位的0x00代表就是空字符,即标识字符串的结束。于是字符串与“Wo”组成了“World”,所以最终在屏幕上输出了“He110 World”。

5.In the following code,what is going to be printed after'y='?(note:the answer is not a specific value.)Why does this happen?

cprintf("x=%d y=%d",3);

输出如图:

经过多次测试我们发现,y=之后的值是随机的,原因大概是由于我们只有一个参数"3",由于我们没有给出第二个参数,于是函数随机去取这个参数,故输出值是随机的。

Exercise9.Determine where the kernel initializes its stack,and exactly where in memory its stack is located.How does the kernel reserve space for its stack?And at which"end"of this reserved area is the stack pointer initialized to point to?

这个练习时让我们去猜测kernel是在哪里初始化栈的。

我们可以在entry.s中找到:

所以KSTSIZE=8*PGSIZE=32KB

KSTACKTOP为栈底指针,它指向初始化后栈的高地址位置。(栈是由高向低生长的,栈顶在低地址空间)

Exercise10.To become familiar with the C calling conventions on the x86, find the address of the test_backtrace function in obj/kern/kernel.asm, set a breakpoint there,and examine what happens each time it gets called after the kernel starts.How many32-bit words does each recursive nesting level of test_backtrace push on the stack,and what are those words? Note that,for this exercise to work properly,you should be using the patched version of QEMU available on the tools page or on Athena.Otherwise, you'll have to manually translate all breakpoint and memory addresses to linear addresses.

我们在kernel.asm中可以看到:

test_backtrace(int x)

{

f0100040:55push%ebp

//栈底指针ebp入栈,将4bytes内容压入栈中。

(扩展基址指针寄存器(extended base pointer)其内存放一个指针,该指针指向系统栈最上面一个栈帧的底部。)

f0100041:89e5mov%esp,%ebp

//栈顶指针esp指向栈底指针ebp

f0100043:53push%ebx

//基底寄存器ebx入栈,将4bytes内容压入栈中。

(AX:累积器,BX:基底寄存器,CX:计数寄存器,DX:资料寄存器)

EAX、ECX、EDX、EBX:为ax,bx,cx,dx的32位延伸)

f0100044:83ec14sub$0x14,%esp

//将栈顶指针esp向低地址移动0x14个空间,即20个bytes。这个操作在堆栈中留出局部变量的空间,即将栈扩大了20bytes。Intel的格式:sub esp,0x14;

f0100047:8b5d08mov0x8(%ebp),%ebx

cprintf("entering test_backtrace%d\n",x);

f010004a:895c2404mov%ebx,0x4(%esp)

f010004e:c70424a01910f0movl$0xf01019a0,(%esp)

f0100055:e8cc080000call f0100926

if(x>0)

f010005a:85db test%ebx,%ebx

f010005c:7e0d jle f010006b

test_backtrace(x-1);

f010005e:8d43ff lea-0x1(%ebx),%eax

f0100061:890424mov%eax,(%esp)

f0100064:e8d7ff ff ff call f0100040

f0100069:eb1c jmp f0100087

//下面我们分析上面三条指令。首先我们要知道CS:IP存储的是代码的地址,这个地址指向即将执行的代码。那么CS:IP在什么时候指向即将执行的代码呢?

mov%eax,(%esp)指令被读取之前,CS:IP是指向它本身的,读取之后,IP的值自动增加,增加量是指令mov%eax,(%esp)的长度,所以IP值自动增加后,CS:IP指向下一条指令即:call f0100040。IP值自动增加之后,才执行本条指令(call f0100040 )。

故读取指令call f0100040后,CS:IP是指向jmp f0100087 这条指令的。下面具体说说call指令的执行过程:读取call指令后CS:IP已经指向了jmp指令,可是我们现在不执行它,我们要跳转去执行f0100040上的push%ebp指令。于是call命令就先把当前CS:IP值先存起来,放进栈中,到用的时候,再取出来(这里"取出来"可以理解为,恢复CS:IP的值,接着没有执行的往下继续执行)。那这存起来的CS:IP其实就是指向下一条jmp指令。所以这里的call指令相当把IP的值入栈,再跳转去执行f0100040空间的指令。

所以在进行call调用时,将%eip入栈,会将4bytes的内容压入栈中。

else

mon_backtrace(0,0,0);

f010006b:c7442408000000movl$0x0,0x8(%esp)

f0100072:00

f0100073:c7442404000000movl$0x0,0x4(%esp)

f010007a:00

f010007b:c7042400000000movl$0x0,(%esp)

f0100082:e808070000call f010078f

cprintf("leaving test_backtrace%d\n",x);

f0100087:895c2404mov%ebx,0x4(%esp)

f010008b:c70424bc1910f0movl$0xf01019bc,(%esp)

f0100092:e88f080000call f0100926

}

f0100097:83c414add$0x14,%esp

f010009a:5b pop%ebx

f010009b:5d pop%ebp

f010009c:c3ret

所以每次调用共有4+4+20+4=32bytes的内容入栈。

Exercise11.Implement the backtrace function as specified https://www.wendangku.net/doc/fb17247702.html,e the

same format as in the example,since otherwise the grading script will be confused.When you think you have it working right,run make grade to see if its output conforms to what our grading script expects,and fix it if it doesn't.After you have handed in your Lab1code,you are welcome to change the output format of the backtrace function any way you like.首先我们要知道,eip存储当前执行指令的下一条指令在内存中的偏移地址,esp存储指向栈顶的指针,而ebp则是存储指向当前函数需要使用的参数的指针。在程序中,如果需要调用一个函数,首先会将函数需要的参数进栈,然后将eip中的一个字进栈,也就是下一条指令在内存中的位置,这样在函数调用结束后便可以通过堆栈中的eip值返回调用函数的程序。而在一进入调用函数的时候,第一件事便是将ebp进栈,然后将当前的esp的值赋给ebp,这样此时ebp便指向了堆栈中存储ebp、eip和函数参数的地方,所以ebp通常都是指向当前函数所需要的参数,相当于每个函数都有自己的一个ebp,所以当一个函数在内部调用另一个函数的时候,被调用函数执行时的ebp的值指向调用它的函数的ebp值存放的位置。

void test_backtrace(int x)

{

cprintf("entering test_backtrace%d\n",x);

if(x>0)

test_backtrace(x-1);

else

mon_backtrace(0,0,0);

cprintf("leaving test_backtrace%d\n",x);

}

函数运用了递归的调用,test_backtrace函数自己不断的调用自己,其中

嵌套的层次是由参数x决定的,最终在嵌套的最里层的函数调用了mon_backtrace函数

int mon_backtrace(int argc,char**argv,struct Trapframe*tf)

{

uint32_t bp,ip,arg1,arg2,arg3,i;

bp=read_ebp();//读取ebp值

ip=*((uint32_t*)bp+1);//从ebp指向的堆栈位置读取函数调用返回地址

arg1=*((uint32_t*)bp+2);

arg2=*((uint32_t*)bp+3);

arg3=*((uint32_t*)bp+4);//从ebp指向的堆栈位置读取函数的参数

do{

cprintf("ebp%x eip%x args%x%x%x\n",bp,ip,arg1,arg2,arg3);//按实验要求打印信息

bp=*(uint32_t*)bp;//读取外层函数的ebp

if(bp!=0){

ip=*((uint32_t*)bp+1);

arg1=*((uint32_t*)bp+2);

arg2=*((uint32_t*)bp+3);

arg3=*((uint32_t*)bp+4);

}

}while(bp!=0);//循环到最外层的程序位置

return0;

}

Exercise12.

下面是Eipdebuginfo结构体的定义:

struct Eipdebuginfo{

const char*eip_file;//Source code filename for EIP

int eip_line;//Source code linenumber for EIP

const char*eip_fn_name;//Name of function containing EIP int eip_fn_namelen;//Length of function name

uintptr_t eip_fn_addr;//Address of start of function

int eip_fn_narg;//Number of function arguments

};

int debuginfo_eip(uintptr_t eip,struct Eipdebuginfo*info);

我们在kdebug里完成以下代码:

stab_binsearch(stabs,&lline,&rline,N_SLINE,addr);

if(lline>rline)

return-1;

info->eip_line=stabs[lline].n_desc;

修改在练习11中的mon_backtrace函数:

Struct Eipdebuginfo结构体类型名info结构体变量名

感觉:ebp=(uint32_t*)ebp[0]等同于ebp=*(uint32_t*)ebp; //读取外层函数的ebp

%08x:整数的16进制的输出,&info为取info变量的地址

eip_file,eip_line,eip_fn_namelen,eip_fn_name

最后运行make grade检查完成情况,得分如下:

至此lab1结束。

医疗报告生物医学仪器实验报告

数据采集综合性训练 目录 一、科研训练目的以及内容3 二、科研训练设备3 三、采集系统构成3 四、驱动程序说明5 五、程序框架6 六、代码关键算法说明7 七、实验总结及讨论8 八、专题资料总结11 参考文献17 指导教师:邹远文 材料科学与工程学院 生物医学工程专业 0843015044 王夕雨 一、科研训练目的及内容

1、科研训练目的 数据采集是仪器设计中的关键环节,涉及计算机语言、微机原理、操作系统、数字电路、嵌入式系统、数字信号处理等多门课程的内容;同时要求具备计算机编程、设备器件组装等实际操作能力。通过此项训练,能将多门课程的内容融合,加深学生对课程内容的理解,提升学生实际运用课程知识的能力; 同时为学生进入科研训练和毕业论文阶段,打下工程运用的基础。 2、科研训练内容 1、USB和BIOPAC的AD/DA、数字IO的编程(VC++)和使用 2、练习采集数据存储与管理 3、练习示波器和信号发生器 二、科研训练设备 1、计算机 2、USB数据采集卡和BIOPAC数据采集器 3、示波器和信号发生器 三、采集系统的构成 本次数据采集系统主要是USB数据采集与电脑和示波器数据采集,信号发生器用FG-275/FG-273A。 图1数据采集卡 图2信号发生器 图3示波器 USB数据采集系统的构成如下图1所示。[1]

图4、USB数据采集系统 示波器数据采集系统的构成如图5。泰克TDS3000C系列示波器拥有高达500MHz的带宽,在紧凑的电池供电的设计中提供了经济的性能,这一流行的产品系列现在配有USB主机端口和PC连接软件,同时提供了熟悉的操作和简单的导航功能,您可以用更少的时间学习和重新学习怎样使用示波器,用更多的时间完成手头的任务。[2] 图5、示波器数据采集系统 FG-275/FG-273A函数信号发生器。[3] FG-273A/-275函数信号发生器规格 方波特性: 对称性:±3%或更小(100Hz时) 上升及下降时间:最大100ns(最大输出) 正弦波特性: 失真:1%或更小(100KHz时) 三角波特性: 线性:1%或更小(100KHz时) 电源要求:100/120/220/240VAC,50/60Hz,约20VA 尺寸:240(宽)×64(高)×190(长)mm 重量:1.8kg 特点: ·扫描/函数/脉冲信号产生

证券模拟交易综合实验报告

证券模拟交易综合实验 报告 Company number:【WTUT-WT88Y-W8BBGB-BWYTT-19998】

证券模拟交易综合实验报告 学院: 班级: 学号: 姓名: 目录 一、实验目的 (2) 二、实验内容与要求 (2) 三、实验过程 (2) 基本面分析和技术分析 (2) 3.1.1基本面分析 (2) 3.1.2技术分析 (4) 对弘高创意公司的基本面分析 (6) 3.2.1公司基本分析 (6) 3.2.2公司财务分析 (11) 对弘高创意公司的技术分析 (15) 3.3.1 K线分析 (15) 3.3.2相对强弱指标RSI分析 (16) 3.3.3随机指标KDJ分析 (16) 3.3.4趋向指标DMI分析 (17) 3.3.5平滑异同移动平均线MACD分析………………………………………… 18 3.3.6变动速率ROC分析 (19)

四、模拟心得 (20) 参考文献 (21) 证券交易综合实验报告 一、实验目的: 通过本实验应熟悉一般股票行情动态分析系统的功能构成,掌握基本的鼠标和键盘操作,理解系统中的相关行情术语、符号、图形的含义。同时通过股票模拟交易熟悉股票的交易流程和交易规则,能够阅读公司资料进行并初步的基本分析。 二、实验内容与要求: 内容: (1)进入行情分析系统和交易系统,掌握其主要功能的键盘以及鼠标操作方法。 (2)阅读大盘和个股动态行情图,验证主要行情术语和指标的含义 (3)通过模拟交易验证股票交易的流程和交易规则。 (4)掌握阅读上市公司资料的一般方法 要求: 实验结束后写出实验报告,报告内容包括实验目的、实验步骤和实验结果(或结论) 三、实验过程: 基本面分析和技术分析 首先是了解了证券投资分析,其中包含基本面分析和技术分析。 基本面分析 基本面分析又称基本分析,是以证券的内在价值为依据,着重于对影响证券价格及其走势的各项因素的分析,以此决定投资购买何种证券及何时购买。基本面分析又分为宏观基本面分析和微观基本面分析。 宏观基本面分析包含以下因素: (1)自然、政治因素:地震、台风、战争等的影响。 (2)经济因素: ①国内生产总值:持续、稳定、高速的GDP增长,对证券市场最有利。宏观调控下的GDP减速增长对证券市场暂时不利。GDP停滞或下降,证券市场可能大跌。

清华大学操作系统课程lab2实验报告

物理内存管理实验报告 练习0:合并lab1和lab2 书上提示使用“diff/merge”工具来合并lab1和lab2的代码,可是没有找到这款工具,但是被推荐使用meld工具,也能很方便地将不同目录的文件异同比较出来,可以一一手动合并,删除,增加代码,避免了不必要的错误。 这部分主要合并的文件有kdebug.c、trap.c。 练习1:实现firstfit连续物理内存分配算法。 完成合并代码的工作之后,make qemu执行lab2,结果出现错误提示:

提示default_pmm.c的第283行出现错误,打开文件看,发现这句话出现在函数static void default_check(void) 中,这是一个检查函数,并且提示不要修改。 当然,为了调试工作,在检查函数中加一些代码还是可以的。例如通过cprintf输出一些调试信息,除此之外,还发现check函数中使用大量assert函数,大概作用是当参数条件不为1的时候就弹出debug minitor。也可以用来调试作用。 起初,我仔细看了basic_check函数,它的作用只是做了一些简单的分配释放的操作,并且也没出错,后面看了default_check函数之后也没找到问题所在。再然后是重点分析default_alloc_pages和default_free_pages函数,结合list_add函数看了许久才发现它的空闲块插入顺序有问题:每次插入都是从free_list的头部插入,事实上,应该保持free_list 的顺序,地址小的空闲块应该放在前面,地址大的空闲块应该放在后面,以便firstfit算法的从头快速查找。 找到问题后大致明白了这个exercise的目标:这个练习主要就是完善 default_alloc_pages和default_free_pages。 关键变量: #define free_list (free_area.free_list)//空闲块的链表,但是不指向具体页 #define nr_free (free_area.nr_free)//空闲块的个数 关键函数: list_init(&free_list);//初始化空闲块链表 SetPageProperty(base); ClearPageProperty(base); 关键宏: le2page(le, page_link);//由链表指针得到对应页的地址 (一)Alloc pages:用firstfit算法寻找空闲块 list_entry_t *le = &free_list; while ((le = list_next(le)) != &free_list) { struct Page *p = le2page(le, page_link);

医疗仪器设计实验报告

电子科技大学生命科学与技术学院标准实验报告 (实验)课程名称医学仪器设计 2014-2015-第1学期 电子科技大学教务处制表

电子科技大学 实验报告 学生姓名:周志洋、易杰瑞、常明、张明 学号:2011092010017、201109101019、2011091010011、2011091030016 指导教师:廖小丽 实验地点:沙河校区 实验时间:2014年12月30日 一、实验室名称:主楼西420 二、实验名称:液晶显示实验 三、实验学时:2学时 1.1 液晶显示器概述 1. 概述 日常生活中,人们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通用器件,如计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。 2.主要优势 1、显示质量高。 由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT),那样需要不断刷新亮点。 2、数字式接口。 3、体质小、重量轻。 4、功耗低。 5、辐射小。(可通过屏蔽电路解决) 1.2 LCD液晶显示器原理 1、液晶显示原理 液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,控制特定的显示区域就可以得到特定的图形。 2、液晶显示器的分类 按颜色区分:黑白显示、彩色显示。

按显示方式区分:段式、字符式、点阵式等。 按驱动方式区分:静态(Static)驱动、单纯矩阵(simple Matrix)驱动、主动矩阵(Active Matrix)驱动。 3、液晶显示器各种图形的显示原理 1)线段显示 点阵图形式液晶由M*N个显示单元组成,假设LCD显示 屏有64行,每行有128列,每8列对应1Byte(字节)的8位, 即每行有16Byte,共16*8=128个点组成,屏上64*16个显示单 元与显示RAM区1024Byte相对应,每一字节的内容与显示 屏上的亮暗相对应。 2)字符显示 每个字符都是由6*8或8*8点阵组成,既要找到和显示屏 相对应的显示RAM区的8Byte,还要使每字节的不同位置为 1,其他的为0,为1点亮,为0不亮。由此组成某个字符。 内部带字符发生器的控制器的液晶显示器,让控制器工作在文本方式,找出显示RAM对应的地址,设立光标,送上某字符对应的代码即可。 3)汉字的显示 一般采用图形的方式,首先提取汉字的点阵码,每个汉字占32Byte,找出显示RAM对应的地址,设立光标,送上要显示的汉字的第一个字节,光标位置加1,送第二个字节······直到32Byte显示完,就可以在LCD上得到一个完整的汉字。 1.3 点阵式液晶显示器 点阵式液晶显示器简介 相对字符型液晶显示器,功能更多,步进可以显示字符数字还可以显示各种图形、曲线及汉字,并且可以实现屏幕上下左右滚动、动画、反转、闪烁等功能,用途十分广泛。 按显示点阵数分类:128W*64H、132W*32H、192W*64H、320W*240H等 12864LCD 128×64点阵液晶显示屏有三种控制器,分别是KS0107(KS0108)、T6963C和ST7920,三种控制器主要区别是:KS0107(KS0108)不带任何字库、T6963C带ASCII码,ST7920带国标二级字库(8千多个汉字)。 模块主要硬件构成

技术分析实验报告

证券投资模拟 技术分析实验(实训)课程报告 实验(实训)时间: 2016 年5 月27 日指导教师评分: 姓名XX 班级、学号XX 组别XX 实验课程证券投资模拟实验项目证券投资技术分析 实验名称:证券投资技术分析(同花顺) 实验目的:熟悉同花顺炒股软件的盘面分析;掌握K线的基本理论及含义;掌握集中主要切线的画法及应用;掌握主要形态的识别、画法及理论;掌握主要指标的盘面分析及相关理论。了解扩展证券投资扩展理论及方法。 实验内容: 1、同花顺盘面解读与分析 2、切线的画法与分析 3、形态的画法与分析 4、指标分析 实验原理: 1、市场行为包含一切信息:基本面、政治因素、心理因素等等因素都要 最终通过买卖反映在价格中,也就是价格变化反映供求关系,供求关系 决定价格变化。 2、价格沿趋势波动:对于已经形成的趋势来讲,通常是沿现存趋势继续 演变。 3、历史会重演 实验(实训)案例分析——以中信证券(600030)为例

上证(深圳)A股大盘分析: 个股技术分析: 分析一图一中1位置出现明显的“希望之星”图形,是一个非常好的买入信号,同时下方成交量较上一交易日有明显上升也是对买入信号的一个有力支撑。接后几日5日均线一改前面与10日均线纠缠不清的状况,一路之上,冲破10日均线的封锁,紧接着更是突破30日均线,一路上扬。 分析二图一中2位置已经出现“怀星抱月”,显示出多空双方力量正在发生转变。之后两天多空双方开始拉锯战,但从图中可以看出,卖方力量正在逐渐形成,同时我们应该看到在成交量上比之之前的大力上涨已经有了明显的放缓,5日线已经向下穿透10日线,说明后期可能出现成交量的反降。 之后第四日无论是价格还是交易量都出现反常的增长,如果被这一反常的变化所迷惑那就很可能在接下来的交易中造成损失。其实我们仔细想想不难发现出现这一变化的原因。因为这正是价格即将下降前多方力量的一次全力出击,因为成交量的异常上升有力的说明了这点。随着前段时间价格的不断上涨,多上市场已经力量不足,之前出现“怀星抱月”的时候已经显露出来,但多方力量中,特别是一些大庄家手里已经持有一定的股份,这可以从前端时间的成交

控制工程基础实验——Mat lab仿真实验报告

实验一:Mat lab 仿真实验 1.1直流电机的阶跃响应。 给直流电机一个阶跃,直流电机的传递函数如下: ) 1101)(11.0(50 )(4 +?+=-s s s G 画出阶跃响应如下: Step Response Time (sec) A m p l i t u d e 零极点分布: P ole-Zero Map Real Axis I m a g i n a r y A x i s

分析:直流电机的传递函数方框图如下: 所以传递函数可以写成: 1 /1)() (2++= s T s T T C s U s n m a m E a 式中,R L T C C JR T a E M m ==,分别为电动机的机电时间常数与电磁时间常数。一般相差不大。 而试验中的传递函数中,二者相差太大,以至于低频时: 低频时) (1 1.050 ) 1101)(11.0(50 )(4+≈ +?+= -s s s s G 所以对阶跃的响应近似为: )1(50)(1.00t e t x --=

1.2 直流电机的速度闭环控制 如图1-2,用测速发电机检测直流电机转速,用控制器Gc(s)控制加到电机电枢上的电压。 1.2.1 假设G c(s)=100,用matlab 画出控制系统开环Bode 图,计算增益剪切频率、相位裕量、相位剪切频率、增益裕量。 M a g n i t u d e (d B )10 10 10 10 10 10 10 10 P h a s e (d e g ) Bode Diagram Frequency (rad/sec) 幅值裕量Gm =11.1214 相位裕量Pm = 48.1370

无源医疗器械检测实验报告1-9

日期指导教师胡秀枋成绩 同组同学姓名 《无源医疗器械检测》实验报告一 物理部分 班级 姓名 学号 实验一、一次性注射针刚度检测 实验设备名称与型号 一、实验目的: 二、实验材料方法 供试品名称型号: 操作步骤:

测试人员: 记录人员: 四、操作问答题: 1.一次性使用输液、输血、注射器具的检测标准是什么? 2.说出三个注射针针管测试产品中产品标记的意义。 3.本次注射针针管的刚度检测仪器名称和测试方法。 4.说出注射针针管的刚度检测各项实验数据意义和检测结果判定方法。 实验二、一次性注射器滑动性能检测 实验设备名称与型号 一、实验目的: 二、实验材料方法 供试品名称型号: 操作步骤:

测试人员: 记录人员: 四、操作问答题: 1.本次一次性注射针滑动性能检测仪器名称和测试方法。 2.说出一次性注射针滑动性能检测各项实验数据意义和检测结果判定和计 算方法。 3.如何进行一次性注射针滑动性能检测中行程的设定? 实验三、一次性注射器器身密合性(正压)检测 实验设备名称与型号 一、实验目的: 二、实验材料方法 供试品名称型号: 操作步骤:

测试人员: 记录人员: 四、操作问答题: 1.本次一次性注射器器身密合性(正压)检测仪器名称和测试方法。 2.说出一次性注射器器身密合性(正压)检测各项实验数据意义和检测结果 判定方法。 实验四、基于电阻法原理微粒检测 实验设备名称与型号 一、实验目的: 二、实验材料方法 供试品名称型号:

操作步骤: 三、实验数据记录:输液器型号 测试人员: 记录人员: 四、操作问答题: 1.本次基于电阻法原理微粒检测仪器名称和测试方法。 2.说出基于电阻法原理微粒检测各项实验数据意义和检测结果判定方法。

期货基本分析实验报告

实验(实训)课程实习报告 实验(实训)时间: 2013 年11 月25 日指导教师评分: 姓名XX 班级、学号XX 指导老师XX 实验课程期货模拟交易实训实验项目对沪铝期货基本分析 实验名称:对沪铝1312期货的基本分析 实验目的: 通过对上市铝期货进行基本分析,了解市场供求关系对铝的价格影。分析各种影响铝的供求关系的因素,以及它们的影响方式,预测未来一段时间内铝的价格走势。 实验内容:1、分析铝的供求关系 2、影响铝的供求关系的因素 3、铝在未来的价格走势 实验流程: 1、品种选择:沪铝1312 2、分析铝目前的供求关系 3、分析影响铝的供求关系的影响因素以及对各种因素的影响方式分析 4、预测未来铝的价格走势 实验原理: 国内市场上铝的供求关系影响着铝的价格,大体上看,影响铝的供求关系的因 素如下: (一)影响需求的因素:1、商品价格;2、消费者收入;3、消费者偏好;4、相关商品价格变化;5、消费者预期。 (二)影响供给的因素:1、商品价格;2、生产成本;3、生产技术水平;4‘相关商品价格;5、生产者预期。 (三)基本分析指标: 1、需求量指标:国内消费量、出口量、年末库存需求量。 2、供给量指标:前期库存量、当期生产量、当期进口量。

3、经济指标:GDP、GNP、利率、汇率、货币供应量、可支配收入、(人 均)国民收入、CPI等。 实验分析: 随着经济的发展,我国的工业制造业也在稳步的发展,对铝的需求也在逐年增加,中国2013年铝消费量料增加8%-9%,高于2012年的7%-8%的预期增幅。铝作为一种世界上应用广泛的金属,它的价格决定着它的用途和用量,很多的因素影响着铝的供求关系,当铝的需求增加时,价格上升,当铝的供给增加时,价格下降。 铝的需求主要受到商品价格、消费者收入、消费者偏好、相关商品价格、和消费者预期的影响。比如当消费者的收入增加时,购房、装修等行为增加了对铝的消费,导致需求增加,从而价格上升。其次,若是铝的价格上升,人们对铝的消费兴趣就会大减,或少买,或选择铝的替代品。近几年来,由于中日钓鱼岛问题和南海问题的恶化,中央出台政策,将民企加入到国防制造业上来。这些原因也一定程度上增加对铝的消费,使其价格上升。铝的供给主要受到商品价格、生产成本、生产技术水平、相关商品价格、生产者预期等因素的影响。生产技术越先进,生产成本就越低。因而在同一生产条件下,技术先进可以降低成本生产出更多的铝产品。其次,从氧化铝供应量来看,今年7月份中国氧化铝产量达到383.32万吨,较去年同期增长10.62%,增速较6月份加快4个百分点左右。而7月份氧化铝进口为2.34万吨,较去年同期下降49.15%,但是较6月份环比大增157.09%。7月份中国氧化铝出口1.62万吨,7月份氧化铝总供应达到400万吨,按照1吨电解铝消耗1.93吨的氧化铝计算,8月份理论电解铝产出可以达到210.7万吨。由此可以看出,铝的供给量在逐年增加。2013年虽然有色企业的生产经营格局变化不大,但从第三季度开始企业利润降幅开始收窄,出现了稳中向好的发展态势,但这种稳中向好的基础还不够稳固,有色金属价格的回升还依然乏力,所以第四季度行业运行不会有太大变化, 总体来讲,2013年我国铝工业运行呈现出以下四个特点:第一、氧化铝进口大幅减少,铝土矿进口显着增加;第二、电解铝产量增速放慢,消费量稳中有升;第三、加工材生产保持较快增长,出口水平保持稳定;第四、再生铝产业升级曲折,积极进展。因此,在未来一段时间里,我国的铝的价格上升走势依然乏力,即在未来,铝的价格上涨,但是上涨的幅度较小。

操作系统lab2实验报告

HUNAN UNIVERSITY 操作系统实验报告

目录 一、内容 (3) 二、目的 (3) 三、实验设计思想和练习题 (3) 练习0:填写已有实验 (3) 练习1:实现 first-fit 连续物理内存分配算法(需要编程) (3) 练习2:实现寻找虚拟地址对应的页表项(需要编程) (8) 练习3:释放某虚地址所在的页并取消对应二级页表项的映射(需要编程) (11) 运行结果 (13) 四、实验体会 (13)

一、内容 本次实验包含三个部分。首先了解如何发现系统中的物理内存;然后了解如何建立对物理内存的初步管理,即了解连续物理内存管理;最后了解页表相关的操作,即如何建立页表来实现虚拟内存到物理内存之间的映射,对段页式内存管理机制有一个比较全面的了解。 二、目的 1.理解基于段页式内存地址的转换机制; 2.理解页表的建立和使用方法; 3.理解物理内存的管理方法。 三、实验设计思想和练习题 练习0:填写已有实验 使用eclipse中的diff/merge工具将实验1的代码填入本实验中代码中有“LAB1”的注释相应部分。 练习1:实现 first-fit 连续物理内存分配算法(需要编程) 在实现first fit 内存分配算法的回收函数时,要考虑地址连续的空闲块之间的合并操作。提示:在建立空闲页块链表时,需要按照空闲页块起始地址来排序,形成一个有序的链表。可能会修改default_pmm.c 中的default_init,default_init_memmap,default_alloc_pages, default_free_pages等相关函数。请仔细查看和理解default_pmm.c中的注释。 请在实验报告中简要说明你的设计实现过程。请回答如下问题: 你的first fit算法是否有进一步的改进空间。 解答: 分析思路: (1)数据结构: A.每个物理页利用一个Page结构体表示,查看kern/mm/memlayout.h包括:

药物分析实验报告

实验四苯甲酸钠的含量测定 一、目的 掌握双相滴定法测定苯甲酸钠含量的原理和操作 二、操作 取本品1.5g,精密称定,置分液漏斗中,加水约25mL,乙醚50mL与甲基橙指示液2滴,用盐酸滴定液(0.5mol/L)滴定,随滴随振摇,至水层显持续橙红色,分取水层,置具塞锥形瓶中,乙醚层用水5mL洗涤,洗涤液并入锥形瓶中,加乙醚20mL,继续用盐酸滴定液(0.5mol/L)滴定,随滴随振摇,至水层显持续橙红色,即得,每1mL的盐酸滴定液(0.5mol/L)相当于72.06mg的C7H5O2Na。 本品按干燥品计算,含C7H5O2Na不得少于99.0% 三、说明 1.苯甲酸钠为有机酸的碱金属盐,显碱性,可用盐酸标准液滴定。 COONa +HCl COOH +NaCl 在水溶液中滴定时,由于碱性较弱(Pk b=9.80)突跃不明显,故加入与水不相溶混的溶剂乙醚提除反应生成物苯甲酸,使反应定量完成,同时也避免了苯甲酸在瓶中析出影响终点的观察。 2.滴定时应充分振摇,使生成的苯甲酸转入乙醚层。 3.在振摇和分取水层时,应避免样品的损失,滴定前,应用乙醚检查分液漏斗是否严密。 四、思考题 1.乙醚为什么要分两次加入?第一次滴定至水层显持续橙红色时,是否已达终点?为什么? 2.分取水层后乙醚层用5mL水洗涤的目的是什么? 实验五阿司匹林片的分析 一、目的 1.掌握片剂分析的特点及赋形剂的干扰与排除方法。 2.掌握阿司匹林片鉴别、检查、含量测定的原理及方法。 二、操作 [鉴别] 1.取本品的细粉适量(约相当于阿司匹林0.1g),加水10mL煮沸,放冷,加三氯化铁试液1滴,即显紫堇色。 2.取本品的细粉(约相当于阿司匹林0.5g),加碳酸钠试液10mL,振摇后,放置5分钟,滤过,滤液煮沸2分钟,放冷,加过量的稀硫酸,即析出白色沉淀,并发生醋酸的臭气。 [检查]

滴定分析基本操作实验报告

酸碱中和滴定实验报告 时间: 组别:第组指导教师:组长:组员: 一、实验目的:用已知浓度溶液(标准溶液)【本实验盐酸为标准溶液】测定未知溶液(待测溶液)浓度【本实验氢氧化钠为待测溶液】 二、实验原理:c(标)×V(标) = c(待)×V(待)【假设反应计量数之比为1:1】 三、实验仪器和药品 酸式滴定管、碱式滴定管、锥形瓶、铁架台、滴定管夹、0.1000mol/L盐酸(标准液)、未知浓度的NaOH溶液(待测液)、酚酞(变色范围8~10)、甲基橙(3.1~4.4) 四、实验步骤 (一)滴定前的准备阶段 1、检漏:检查滴定管是否漏水 2、洗涤:先用蒸馏水洗涤滴定管,再用待装液润洗2~3次 3、量取:用碱式滴定管量出一定体积的未知浓度的NaOH溶液,注入锥形瓶中,并往 锥形瓶中滴加几滴酚酞,现象为。用酸式滴定管量取标准液盐酸,使液面恰好在01 (二)滴定阶段 1、把锥形瓶放在酸式滴定管的下面,将滴定管中溶液逐滴滴入锥形瓶中,滴定时,右手不断旋摇锥形瓶,左手控制滴定管活塞,眼睛注视锥形瓶内溶液颜色的变化,直到滴入一滴盐酸后溶液变为无色且半分钟内不恢复原色。此时,氢氧化钠恰好完全被盐酸中和,达到滴定终点。记录滴定后液面刻度V2。 2、把锥形瓶内的溶液倒入废液缸,用蒸馏水把锥形瓶洗干净,将上述操作重复2~3次。(三)数据处理 注意:取两次测定数值的平均值,计算待测液的物质的量浓度 (四)误差分析 1、来自滴定管产生的误差: ①滴定管用蒸馏水洗后,未用标准液润洗②滴定管未用待测液润洗 ③盛标准液的滴定管滴定前有气泡,滴定后无气泡 ④盛标准液的滴定管滴定前无气泡,滴定后有气泡 ⑤盛待测液的滴定管滴定前有气泡,滴定后无气泡 2、来自锥形瓶中产生的误差 锥形瓶用蒸馏水洗后又用待测液润洗 3、读数带来的误差 如:标准液读数时①先俯视后仰视②先仰视后俯视

lab1汇编语言与DOS系统实验报告

汇编语言与DOS系统实验报告 一、实验目的 1、掌握x86体系段式内存组织方式,了解如何用程序指令访问不同的内存空 间 2、了解DOS系统的基本操作 3、掌握汇编语言的编译和调试方法 二、实验条件 1、DOS操作系统平台 三、实验原理 1、x86实模式下内存采用分段的组织方式,将20位的地址空间分为16位的 段地址和16位的偏移地址,表示为“段地址:偏移地址”的形式,实际物理地址=段地址×16+偏移地址。 2、DOS系统基本操作命令: (1)cd命令进入磁盘或文件夹 (2)dir命令列出目录下的文件 (3)makedir创建目录 (4)del删除文件 (5)copy复制文件 (6)rename文件重命名 3、汇编语言编译命令: (1)edit命令编辑程序

(2)masm生成目标文件 (3)link链接生成可执行文件 (4)输入文件名运行程序 4、程序调试方法 使用debug命令调试程序,常用的调试参数有: (1)-u反汇编生成程序的汇编代码 (2)-d查看内存地址的内容 (3)-p/t单步调试 (4)-g设置断点 (5)-e修改指定地址内容 四、实验内容 1、写出A+B problem的汇编代码,使用编译命令生成可执行文件并使用 debug加载可执行程序。实验代码如下: DATA SEGMENT ADDER1 DB 35H ADDER2 DB 48H SUM DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA

MOV DS,AX MOV AL,ADDER1 ADD AL,ADDER2 MOV SUM,AL MOV AX,4C00H INT 21H CODE ENDS END START 首先将源文件使用masm命令和link命令生成可执行文件,使用debug命令调试程序,使用-u参数显示汇编代码,g命令设置断点到MOV SUM,AL指令处,此时使用d ds:0000即可在内存中显示两个加数以及两个数的和的数值,可以使用-e命令修改参数。 2、增加变量N,实现N个数字的加法运算,实验中N设置为4,实验代码 如下: DATA SEGMENT ADDER1 DB 35H ADDER2 DB 48H ADDER3 DB 20H ADDER4 DB 30H SUM DB ? DATA ENDS

生物医学工程大实验报告

心电检测实验 实验目的 1.复习放大器,滤波器等相关知识, 了解心电测量的原理,并学习用生理信号采集系统记录人体心电图。 2.要求掌握心电测量电路的硬件实现方法,锻炼电路板的焊接与调试能力. 3.学习正常心电图中各波的命名与波形,了解其生理意义。 实验器材 信号发生器,电源,示波器,电机夹,导线若干,电路板一块 实验原理 1.心脏的基本构造和心电图(ECG) 心脏处于人体的循环系统的中心,主要由心肌构成,心肌是可兴奋组织,它的收缩和舒张是人体血液循环的动力;心肌将心脏分隔成左,右心房和心室四个心腔,腔间有瓣膜控制血液在房室间的流动,通过动脉血管将氧和酶等各种营养物质供给全身组织,并将静脉回流带来的组织代谢废物运走。 心脏是自律性器官,有特殊起博心肌细胞和神经传导树支(束),包括窦房结,结间束,房室结,房室束,左右束支;在起博心肌细胞(窦房结内)的自律作用下,通过房、室、神经束的传导使心肌收缩和舒张完成心脏的博动;另外,参于循环系统调节的有:交感神经,兴奋时通过肾上腺素使心率加快,而副交感神经兴奋时使心率变慢,还

有化学性的体液因素也可影响心脏的博动。 神经细胞元的放电过程已得到实验认证,心脏特殊起博心肌细胞博动和神经传导树支(束)的传导过程都是神经细胞元放电和传导的过程,因此,可通过在人体体表层安放灵敏度很高的电极接受这些微弱的心脏电活动,称为ECG(electrocardiogram)---心电图,早在1903年就发现心电图及基本测量方法;心电图机检查人体的ECG,判断心脏活动正常与否仍是医院目前首选的检查手段。 标准ECG及参数如下: 典型心电图波形 目前ECG的测量技术已很成熟,标准ECG都打印在栅格纸上,标明X方向每格0.04秒,Y方向每格0.1mv.一般来说,P波表征心脏收缩期开始;QRS复合波是心室收缩的结果,指示心室收缩期开始;T波是心室舒张的结果,将延续到下一个P波止. ECG测量基本导联三角形(肢体):

股票基本面分析实验报告

《证券投资理论与实务》实验报告 实验项目名称: ST大荒股票基本分析 学生姓名:许清霞专业: 13金融学专升本学号: 实验地点: C347 实验日期: 2014 年 10 月 26 日 一、实验目的 学习利用网上的相应资讯和股票行情软件,对股票市场的未来走势进行宏观分析。 二、实验内容 1. 知道K线图的构成并会看K线图 2. 运用所学的知识去进行模拟炒股 三、实验原理、方法和手段 利用K线图进行分析 五、实验条件 1.系统软件:Windows 7? 2.工具:同花顺证券投资专用软件 六、实验步骤 我选的股票是*ST大荒,股票代码 600598, 1998 年 11 月 27 日,黑龙江垦区审时度势、果断决策,将优势资源进行战略性重组,组成了黑龙江北大荒农业股份有限公司(以下简称公司)。公司经国家经贸委批准,由具有 60 年发展历史的中国 500 强企业,北大荒农垦集团总公司(以下简称集团公司)作为独家发起人,注册资本为万元。 2006 年 5 月 16 日,中国证券报“2005年度上市公司百强评选结果”揭晓,“北大荒”列“2005 年百强主榜单”第 90 名。2006年5月29 日,“北大荒”入选中证 100 指数样本股,北大荒股份在资本市场上的形象进一步提升。“2008 年中国蓝筹种植企业十强”荣誉称号。特别是 2009 年,公司在沪深两市 1573 家上市公司中脱颖而出,荣获“2009 中国上市公司最佳董事会”排序第 21 名的殊荣,如今势头也强劲。 下面我就来分析一下我选这只股票的原因:? (一)、基本面分析 1、本年度业绩回顾

净利润82232 营业总收入 营业收入 营业总成本 营业成本 营业利润 投资收益 其中:联营企业和合 营企业的投资收益 资产减值损失1163 管理费用 销售费用 财务费用 营业外收入 营业外支出 营业税金及附加 利润总额 所得税 综合收益总额 归属于母公司股东的 综合收益总额82232 归属于少数股东的综 合收益总额 2、行业对比 2014-09-30 2014-6-30 3、财务分析摘要 科目\时间2014-09-30 2014-06-30 2014-03-31 2013-12-31 2013-09-30 2013-06-30 基本每股收益 净利润82232

Lab1_体系结构实验报告

2012年3月1日 一、实验目的和要求 1.understand the principles of ALU and master methods of ALU design 2.understand the principles of ALU controller and master methods of ALU controller design 3.understand the principles of register file and master methods of register file design so the task is first, design a ALU with ALU controller then, design a register file 二、实验内容和原理 2.1 ALU with ALU controller We input the operand r, s; both are 32 bit integer, and aluc is the control code that defines the operation. So we just make the code block, totally as ALU block, ALUC block, display block.

Figure 1 the input and output diagram Figure 2 ALU operations Figure 3 the truth table of operation cod e

Figure 4 principle of ALU 2.2 register file The process is similar to the 2.1, when we get the principle of register file , it can be easily coding. Figure 5 the input and output

病理生理实验报告

实验一组织晶体渗透压改变在水肿发生中 的作用(水肿) 实验目的:通过实验了解组织晶体渗透压的改变在水肿发生中的意义,加深对水肿发生机理的理解。 实验动物:蟾蜍2只,要求体重、大小相仿。 器材与药品: 200克电子天平1台,盛水玻璃缸2个,2m1注射器连4号针头2支,脱脂棉球、纱布块适量。%氯化钠液和20%氯化钠液各10ml。 实验方法: 1. 取蟾蜍2只分别称重,注意观察背部外形。 2. 向一只蟾蜍背部淋巴囊内注入0.65%氯化钠液(即蛙生理盐水)2 m1,向另一只蟾蜍背部淋巴囊内注入20%氯化钠液2ml(蟾蜍皮下淋巴囊分布见图2-1),然后分别放入装有水的玻璃缸内。 3.1小时后由水中取出蟾蜍,擦掉体表浮水后分别称重,同时仔细观察背部外形改变。 4. 解剖蟾蜍:由椎骨孔破坏神经系统。重点观察背部淋巴囊的变化。解剖观察其它脏器和解剖结构。 实验结果:将观测到的各种实验结果记入下表内 注前体重注前背部外 形注后体重注后背部外 形 注%氯化钠正常平坦正常平坦注20%氯化正常平坦变肥

钠 结果分析:实验中这两只蟾蜍分别注射了不同浓度的氯化钠溶液,组织晶体渗透压升高,两只都有一定的吸水能力,注射低浓度氯化钠溶液的青蛙吸水较少,体重只有轻微的增长,体型无明显变化;注射高浓度氯化钠溶液的青蛙吸水较多,体重有大幅度的增长,体型出现明显变化。结果表明晶体在体内的浓度越高,吸水性越强。 心得:

实验二缺氧 实验目的:通过复制外呼吸性缺氧、血液性缺氧及组织中毒性缺氧的动物模型。 实验动物:成年小白鼠4只. 器材与药品: 1.外呼吸性缺氧:带有橡皮塞的250毫升广口瓶1只(见图3—1),搪瓷盘1只、镊子、剪子各2把,100g电子天平1台。钠石灰10g,凡士林1瓶。 2.血液性缺氧:带有管道瓶塞的250m1广口瓶和三角烧瓶各2只,酒精灯1盏,三角架3个,充满一氧化碳的皮球胆1只,弹簧夹4个,lml注射器1支。甲酸、浓硫酸各300ml,2%亚硝酸钠溶液10ml 3.组织中毒性缺氧:1 m1注射器1支。%氰化钾溶液。 实验方法: 一、外呼吸性缺氧 1.取小白鼠重只称重后放入广口瓶内,瓶内预先加入钠石灰5g。观察动物一般状况,如呼吸频率、呼吸状态,皮肤、粘膜色彩、精神状态等。 2.旋紧瓶塞,用弹簧夹夹闭通气胶管,防止漏气。记录时间,观察上述各项指标的变化,直至动物死亡。待本次实验内容全部完成之后,一起剖检动物,对比观察血液颜色的改变和其它变化(以下皆同)。 二、血液性缺氧 (一)一氧化碳中毒

证券实验报告

证券投资实验报告 班级:商学院09级会计二班 姓名:丁希 学号:20094024036

实验一股票投资分析和交易软件的安装与使用 一、实验时间 2012年5月16日,星期三,13:00—14:40 二、实验地点 商学院五楼机房 三、实验目标与要求 1、以国泰安(GTA)、东方财富和民族证券网站提供的分析软件为安装对象掌握股票投资分析和交易软件的安装; 2、看懂股市行情; 3、看懂分时图、K线图; 4、通过K线图浏览中国股市的历年走势; 5、了解证券分析软件的其它功能。 课时安排:机房上机2学时。 四、实验内容 步骤:①安装民族证券网上直通车。②了解各种股市行情术语。③浏览中国股市的历年走势。④继续使用软件,了解各种功能。 心得:了解股市基本知识是进行证券投资的基础,打好基础才有可能做技术分析。 分时图是指大盘和个股的动态实时(即时)分时走势图,其在实战研判中的地位极其重要,是即时把握多空力量转化即市场变化直接的根本所在。 从K线图中,既可看到股价(或大市)的趋势,也同时可以了解到每日市况的波动情形。K线图可以细分为:5分钟K线图,15分钟K线图,30分钟K 线图,60分钟K线图,日K线图,周K线图,月K线图,甚至45天K线图。K线图中的柱体有阳线和阴线之分。一般用红色柱体表示阳线,绿色柱体表示阴线。分析要结合K线图线势型态和K线图指标。 实战中的K线分析,必须与即时分时图分析相结合,才能真实可靠的读懂市场的语言,洞悉盘面股价变化的奥妙。K线形态分析中的形态颈线图形,以及波浪角度动量等分析的方法原则,也同样适合即时动态分时走势图分析。 股票分析软件实质是通过对股市行情数据的统计,按照一定的分析模型和交易模型汇总成一系列的报表,指标图形,实时资讯,让广大股民朋友更加清晰直观的从基本面、技术面分析大盘和个股,即时方便的掌握股市的动向。在普通行情软件的基本功能整加了一些特定的功能,如一些分析大盘的指标、公式,新闻资讯,预警系统,选股系统,盘后分析,信息实时发布系统,研究报告,赢富数据等。

医学实验报告模板

泸州医学院 本科学生设计性实验报告 专业年级班级 组长姓名 小组成员 课程名称 时间 实验设计方案: 篇二:标准实验报告格式(医学成像技术) 电子科技大学生命科学与技术学院 标准实验报告 (实验)课程名称《医学成像技术》 电子科技大学教务处制表 电子科技大学 实验报告 学生姓名:陈睿黾学号: 2209101028 指导教师:廖小丽实验地点:人文楼 418 实验时间:2006.6.2 一、实验室名称:医疗仪器实验室 二、实验项目名称:傅立叶变换核磁共振一维、二维成像 三、实验学时:4学时 四、实验原理: 利用样品的原子核在梯度磁场及高频电磁场的激励下产生的自发辐射信号的频率和相位 因空间位置不同而不同来进行成像。 五、实验目的: 对磁共振成像整个过程进行了解,同时对每一个参数改动后对磁共振信号及图像影响的 效果有直观的认识,了解一维、二维成像原理,进一步熟悉磁共振成像原理。 六、实验内容: 采用定标样品(三注油孔)对一维成像(空间频率编码)有所认识。对梯度场各参数对 一维成像的影响进行观察。 了解瞬间梯度场,对二维成像(空间相位编码)有所认识。了解瞬间梯度场的梯度大小 和瞬间梯度保持时间对二维成像图形的影响。 七、实验器材: gy-ctnmr-10ky核磁共振成像实验仪、计算机、注油三孔实验样品 八、实验步骤: 1.按实验要求连线。 2.开机预热。 3.将注油三孔样品放入样品池中,打开磁共振成像软件,设置共振频率:按下“参数设 置”页面再按下“自动采集”出现采集的信号图及傅立叶变换 的频谱图,调节“频率设置”中间的按钮,直至出现波形符合预期目标的图形。 4.调节匀场:分别调节电源上匀场调节电位器并同时调节软件中的xy匀场至傅立叶频 谱图中峰最尖锐最高信号最长,适当调节共振频率,使波形看上去尽量平滑。 5.设置z梯度场和一维成像:调偏z匀场调节使峰变宽变低,同时出现z轴线上投影的 一维成像信号。调节z梯度和工作频率,使得信号频谱占半个屏幕同时在中间。 6.二维磁共振成像记录:按下“成像记录及操作”,然后按下“记录”等待2分钟,记

股票基本面解析总结实验报告.doc

《证券投资理论与实务》实验报告实验项目名称:ST 大荒股票基本分析 学生姓名:许清霞专业: 13 金融学专升本学号: 实验地点:C347 实验日期: 2014 年 10 月 26 日 一、实验目的 学习利用网上的相应资讯和股票行情软件,对股票市场的未来走势进行宏观分析。 二、实验内容 1. 知道 K 线图的构成并会看K 线图 2. 运用所学的知识去进行模拟炒股 三、实验原理、方法和手段 利用 K 线图进行分析 五、实验条件 1.系统软件: Windows 7? 2.工具:同花顺证券投资专用软件 六、实验步骤 我选的股票是 *ST 大荒,股票代码600598 , 1998 年 11 月 27 日,黑龙江垦区审时度势、果断决策,将优势资源进行战略性重组,组成了黑龙江北大荒农业股份有限公司(以下简称公司)。 公司经国家经贸委批准,由具有60 年发展历史的中国500 强企业,北大荒农垦集团总公司(以下简称集团公司)作为独家发起人,注册资本为万元。 2006 年 5月16日,中国证券报“2005年度上市公司百强评选结果”揭晓,“北大荒” 列“ 2005 年百强主榜单”第90名。2006年5月29日,“北大荒”入选中证100指数样本股,北大荒股份在资本市场上的形象进一步提升。“ 2008 年中国蓝筹种植企业十强”荣誉称号。特别是2009年,公司在沪深两市1573家上市公司中脱颖而出,荣获“2009 中国上市公司最佳董事会”排序第21 名的殊荣,如今势头也强劲。 下面我就来分析一下我选这只股票的原因:? (一)、基本面分析 1、本年度业绩回顾 科目时间2014-09-30 2014-06-30 2014-03-31 2013-12-31 2013-09-30 2013-06-30

相关文档