在数据段偏移地址BUFFER开始处顺序存放了100个无符号16位数,现要求编写程序将这100个数据从大到小排序

在数据段偏移地址BUFFER开始处顺序存放了100个无符号16位数,现要求编写程序将这100个数据从大到小排序,第1张

以下是用冒泡排序对5个8位数进行的排序:

dseg segment

array db 0feh,86h,95h,21h,90h

count equ $-array

dseg ends

cseg segment

assume ds:dseg,cs:cseg

start: mov ax,dseg

mov ds,ax

mov cx,count

loop1: mov di,cx ;第一重循环的次数

; mov si,cx

mov al,array[di-1]

mov si,di ;第二重循环的次数

loop2: cmp al,array[si-2]

jge next

xchg array[si-2],al

mov array[di-1],al

next: dec si

cmp si,2

jb next1

jmp loop2

next1: dec di

cmp di,2

jb done

dec cx

jmp loop1

done: mov ah,4ch

int 21h

cseg ends

end start

pcr中镁离子用什么稀释

1 pcr中mg离子的作用

镁离子浓度一般用量15-20 mmol/L,Taq DNA聚合酶活性需要Mg 2+。

Mg 2+浓度过低,会显著降低酶活性。Mg 2+浓度过高又使酶催化非特异性扩增增强。Mg 2+浓度还会影响引物的退火、模板与PCR产物的解链温度,从而影响扩增片段的产率。Takara的mg离子的浓度一般是25mM的,20ul体系我们一般加12ul的MgCl2,效果挺好的

2 pcr mgcl2

标准的PCR *** 作程序是将各种所需反应成分分别加入PCR反应管中,然后根据具体的实验要求,设置一定的循环参数,进行循环扩增。具体如下:

(1) 向PCR反应管中依次加入

DNA模板 50~300ng (约为102~105拷贝DNA)

引物(3'→5',5'→3')各 2μl 10μmol/L (终浓度为04μmol/L)

dNTP 2μl 5mmol/L (终浓度为02μmol/L)

10×PCR缓冲液 5μl 1/10体积 (终浓度为1×)

MgCl2 3μl 25mmol/L (终浓度为15mmol/L)

Taq DNA聚合酶 05μl (终浓度约1~5U/μl)

ddH2O 补到终体积为50μl,混匀后,离心15 s使反应成分沉于管底。

(2) 加入矿物油20~30μl(2~3滴),以避免反应液蒸发(有热盖的PCR仪可省此步骤),然后将反应管置于95℃(变性)5min。

(3) PCR的循环程序一般为:94℃~96℃变性30s, 50℃~55℃退火30~60s,72℃延伸(1kb/1~2min),循环25~30次。末次循环结束后,将反应管置于72℃温育5min,以确保充分延伸。

3 pcr中mg2+作用

1化学本质都是蛋白质,

2合成位置一般都在核糖体内

3作用:

解旋酶:就是作用DNA的,一般用在PCR技术中来打开一些DNA的二级结构例如一些发卡结构,有利用DNA的复制

DNA聚合酶:在PCR过程中,以DNA或cDNA为模板,以引物,dNTP,Mg2+等试剂为原料复制DNA所用到的一种不可或缺的酶

RNA聚合酶和DNA聚合酶一样,只是他是用来复制RNA的

逆转录酶:以RNA为模板,把RNA转变为单链的cDNA以利于后续的DNA克隆以及文库构建

限制酶:就是通常所说的限制性内切酶,不同酶的作用位点不一样切断DNA,一般用于分子克隆与载体构建等基因工程技术

DNA边接酶:就是将限制性内切酶切断的DNA片断又重新连接成一条DNA连接的DNA片断一定是同一个限制性内切酶切割产生同样粘端的片段,或者是不同酶切割产生平端的片段,但是这样的连接效率一般较低

4这些酶一般通过克隆,表达获得存在不同生物体内

4 pcr中加mg是为什么

PCR反应需要加镁离子,并且镁离子浓度的总量应该比dNTPs的浓度高,常用15mmol/L。 镁离子是加在PCR反应的缓冲液中的,成分是最复杂的,除水外一般包括四个有效成分:

1、缓冲体系,一般使用HEPES或MOPS缓冲体系;

2、一价阳离子,一般采用钾离子,但在特殊情况下也可使用铵根离子;

3、二价阳离子,即镁离子,根据反应体系确定,除特殊情况外不需调整;

4、辅助成分,常见的有DMSO、甘油等,主要用来保持酶的活性和帮助DNA解除缠绕结构。 缓冲液的目的是提供合适的酸碱度与某些离子,而PCR反应五要素是:引物(PCR引物为DNA片段,细胞内DNA复制的引物为一段RNA链)、酶、dNTP、模板和缓冲液(其中需要Mg2+)。

5 在一般的pcr反应中,mg2+浓度为

以25ul的pcr体系为例,一般用浓度是25μmol/L的dNTP 2ul, 10μmol/L的引物1ul,25 mmol/L Mg2+ 2ul,模版一般1ul,2000u 的酶0。5ul。

buffer一般选用10x,就是稀释10倍使用,每25ul体系加10xbuffer 2。5ul。u是酶活力单位。ng就是10-9 g ;1000x μmol/L= mmol/L换算是x=1000 mx=1000000ux=1000000000nx x可以是g,l,mol等国际计量单位。

6 Mg离子的作用

化学方程式:Mg(OH)2 + 2NH4Cl == MgCl2 + 2NH3H2O离子方程式:Mg(OH)2 + 2NH4+ == Mg2+ + 2NH3H2O

7 pcr扩增mg离子浓度

因为镁离子是TapDNA酶不可或缺的辅助因子,镁离子对于稳定核苷酸和稳定扩增体系,提高tapDNA聚合酶的活性十分重要。镁离子浓度过低使酶活力降低,过高使酶催化非特异性扩增。

镁离子是由镁原子失去最外层的两个电子得到的,书写为Mg²+。

8 mg对pcr的影响

PCR实验中的Mg2+是指镁离子,一般在反应缓冲液中均含有镁离子,镁离子与聚合酶结合降低聚合反应的活化能,可以调节镁离子浓度获得最理想的反应条件。垍头条莱

9 mgcl2在pcr中的作用

Mgcl2的作用主要是促进核酸骨架的形成,影响聚合酶的4活性。Mgcl2浓度过高会降低扩增特异性,浓度过低影响扩增产量。

DATASEG SEGMENT ;定义数据段

BUFFER DB 64DUP()

DATASEG ENDS

CODE SEGMENT ;代码

ASSUME CS: CODE, DS: DATASEG

START: MOV AX,DATASEG

MOV DS, AX

MOV CX, 64

MOV BX,BUFFER

LL: MOV DX,0020H

LLA: IN AL, DX ;查询状态位 设备忙 则等待继续查询

TEST AL,10000000B

JNZ LLA

MOV AL,[BX] ;向外设输出一个字节的数据

MOV DX, 0008H

OUT DX, AL

INC BX ;修改指针

LOOP LL ;循环计数器减1,不等于零,继续循环

CODE ENDS

END

提供你一个算法

1 要建立一个数据段:

在数据段定义100个有符号数,数据类复型为的字节;在定义一个最大数的变量MAX,为其保留一个字节的存储空间。

2 在代码段中

设计一个循环程序就可以解决,循环次数=99,设计一个寄存器做指针,指向数据段中100个有符号数的首地址,制把第一个数先送给最大数变量MAX(做初值),修改指针,指向下一个数。百

在循环体中,利用度比较指令,比较最大数变量中的内容与指针所指的数的大小,将大数保存在

最大数变量中。修改指针。

循环次数减1,不等于0,继续循环比较,直到结束为止。

你可以这样,定义一个变量,比如说time=0,在循环里面每次循环time++,循环的判断条件就是while(time<200)就行了

这里有延时函数的介绍

/ 函数类型:void (无返回值)

函数接口:delay(int)

例如在程序中取得n秒的延时,只要在代码中加入 delay(n) 即可。注:n 为 int 类型。

/

/ 调用时请务必#include <timeh> 头文件 /

函数代码如下:

void delay(int seconds)

{

clock_t start = clock();

clock_t lay = (clock_t)seconds CLOCKS_PER_SEC;

while ((clock()-start) < lay) ;

}

可以函数里面设定每一秒执行一次

 Java使得复杂应用的开发变得相对简单 毫无疑问 它的这种易用性对Java的大范围流行功不可没 然而 这种易用性实际上是一把双刃剑 一个设计良好的Java程序 性能表现往往不如一个同样设计良好的C++程序 在Java程序中 性能问题的大部分原因并不在于Java语言 而是在于程序本身 养成好的代码编写习惯非常重要 比如正确地 巧妙地运用java lang String类和java util Vector类 它能够显著地提高程序的性能 下面我们就来具体地分析一下这方面的问题

在java中 使用最频繁 同时也是滥用最多的一个类或许就是java lang String 它也是导致代码性能低下最主要的原因之一 请考虑下面这个例子

String s = Testing String ;String s = Concatenation Performance ;String s = s + + s ;

几乎所有的Java程序员都知道上面的代码效率不高 那么 我们应该怎么办呢?也许可以试试下面这种代码

StringBuffer s = new StringBuffer();s append( Testing String );s append( );s append( Concatenation Performance );String s = s toString();

这些代码会比第一个代码片段效率更高吗?答案是否定的 这里的代码实际上正是编译器编译第一个代码片段之后的结果 既然与使用多个独立的String对象相比 StringBuffer并没有使代码有任何效率上的提高 那为什么有那么多Java书籍批评第一种方法 推荐使用第二种方法?

第二个代码片段用到了StringBuffer类(编译器在第一个片段中也将使用StringBuffer类) 我们来分析一下StringBuffer类的默认构造函数 下面是它的代码

public StringBuffer() { this( ); }

默认构造函数预设了 个字符的缓存容量 现在我们再来看看StringBuffer类的append()方法

public synchronized StringBuffer append(String str) {if (str == null) {  str = String valueOf(str); } int len = str length(); int newcount = count + len; if (newcount > value length) expandCapacity(newcount); str getChars( len value count); count = newcount; return this;}

append()方法首先计算字符串追加完成后的总长度 如果这个总长度大于StringBuffer的存储能力 append()方法调用私有的expandCapacity()方法 expandCapacity()方法在每次被调用时使StringBuffer存储能力加倍 并把现有的字符数组内容复制到新的存储空间

在第二个代码片段中(以及在第一个代码片段的编译结果中) 由于字符串追加 *** 作的最后结果是 Testing String Concatenation Performance 它有 个字符 StringBuffer的存储能力必须扩展两次 从而导致了两次代价昂贵的复制 *** 作 因此 我们至少有一点可以做得比编译器更好 这就是分配一个初始存储容量大于或者等于 个字符的StringBuffer 如下所示

StringBuffer s = new StringBuffer( );s append( Testing String );s append( );s append( Concatenation Performance );String s = s toString();

再考虑下面这个例子

String s = ;int sum = ;for(int I= ; I< ; I++) {  sum += I;  s = s + + +I ; }s = s + = + sum;

分析一下为何前面的代码比下面的代码效率低

StringBuffer = new StringBuffer();int sum = ; for(int I= ; I< ; I++){  sum + = I;  append(I) append( + ); }String s = append( = ) append(sum) toString();

原因就在于每个s = s + + + I *** 作都要创建并拆除一个StringBuffer对象以及一个String 对象 这完全是一种浪费 而在第二个例子中我们避免了这种情况

我们再来看看另外一个常用的Java类——java util Vector 简单地说 一个Vector就是一个java lang Object实例的数组 Vector与数组相似 它的元素可以通过整数形式的索引访问 但是 Vector类型的对象在创建之后 对象的大小能够根据元素的增加或者删除而扩展 缩小 请考虑下面这个向Vector加入元素的例子

Object obj = new Object();Vector v = new Vector( );for(int I= ; I< ; I++) { v add( obj); }

除非有绝对充足的理由要求每次都把新元素插入到Vector的前面 否则上面的代码对性能不利 在默认构造函数中 Vector的初始存储能力是 个元素 如果新元素加入时存储能力不足 则以后存储能力每次加倍 Vector类就象StringBuffer类一样 每次扩展存储能力时 所有现有的元素都要复制到新的存储空间之中 下面的代码片段要比前面的例子快几个数量级

Object obj = new Object();Vector v = new Vector( );for(int I= ; I< ; I++) { v add(obj); }

同样的规则也适用于Vector类的remove()方法 由于Vector中各个元素之间不能含有 空隙 删除除最后一个元素之外的任意其他元素都导致被删除元素之后的元素向前移动 也就是说 从Vector删除最后一个元素要比删除第一个元素 开销 低好几倍

假设要从前面的Vector删除所有元素 我们可以使用这种代码

for(int I= ; I< ; I++){ v remove( ); }

但是 与下面的代码相比 前面的代码要慢几个数量级

for(int I= ; I< ; I++){ v remove(v size() ); }

从Vector类型的对象v删除所有元素的最好方法是

v removeAllElements();

假设Vector类型的对象v包含字符串 Hello 考虑下面的代码 它要从这个Vector中删除 Hello 字符串

String s = Hello ; int i = v indexOf(s); if(I != ) v remove(s);

这些代码看起来没什么错误 但它同样对性能不利 在这段代码中 indexOf()方法对v进行顺序搜索寻找字符串 Hello remove(s)方法也要进行同样的顺序搜索 改进之后的版本是

String s = Hello ; int i = v indexOf(s); if(I != ) v remove(i);

这个版本中我们直接在remove()方法中给出待删除元素的精确索引位置 从而避免了第二次搜索 一个更好的版本是

String s = Hello ; v remove(s);

最后 我们再来看一个有关Vector类的代码片段

for(int I= ; I<v size(); I+=){}如果v包含 个元素 这个代码片段将调用v size()方法 次 虽然size方法是一个简单的方法 但它仍旧需要一次方法调用的开销 至少JVM需要为它配置以及清除堆栈环境 在这里 for循环内部的代码不会以任何方式修改Vector类型对象v的大小 因此上面的代码最好改写成下面这种形式

int size = v size(); for(int I= ; I<size; I++){}

lishixinzhi/Article/program/Java/gj/201311/27752

以上就是关于在数据段偏移地址BUFFER开始处顺序存放了100个无符号16位数,现要求编写程序将这100个数据从大到小排序全部的内容,包括:在数据段偏移地址BUFFER开始处顺序存放了100个无符号16位数,现要求编写程序将这100个数据从大到小排序、pcr中镁离子用什么稀释、编写8086/8088 CPU 汇编程序 已知buffer单元开始存放一组无符号字节数据,数据长度等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10088525.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存