简要叙述转基因抗虫烟草的培育过程

简要叙述转基因抗虫烟草的培育过程,第1张

应用农杆菌介导法的烟草转基因实验

一、实验目的

烟草是遗传转化的模式植物,已经建立了一套完善的转化再生体系。本实验以烟草为实验材料,使同学们了解根癌农杆菌介导法的基本原理和一般步骤,掌握遗传转化的基本 *** 作技术。

二、实验用具及药品

烟草叶片,LBA4404质粒载体,摇床,培养皿(带滤纸),移液q,镊子,手术刀,无菌水

三、实验方法

根癌农杆菌介导转化的方法已经比较成熟,易于在植物细胞和组织培养实验室进行。具体 *** 作程序如下:

(1)根癌农杆菌质粒的保存:构建好的根癌农杆菌质粒接种在YEP固体培养基上,YEP固体培养基的成分为每100mL含NaCl 0.5g,酵母1 g,水解酪蛋白1g,琼脂1.5g,pH值7.0,在冰箱中冷藏,一个月换一次培养基,保证菌种正常生长。

(2)配制YEP液体培养基:成分同上,只是不添加琼脂,分装于试管中,每试管加入5mL左右的液体培养基,包好后高压灭菌,放置于冰箱中待用。

(3)摇菌:用灭菌后的牙签或者火柴棍等挑出一些菌液,一起放入上述YEP液体培养基中,然后置于振荡器上摇菌16—17h(180r/min),直至溶液变浑浊,即有大量菌丝长出。

(4)用消毒后的0.5mm打孔器从叶片上切出叶盘,然后将叶盘投入农杆菌悬液中培养5min

(5)用滤纸吸干多余的菌液,叶片放在MS+6-BA 1.0 mg/L十IAA 0.1 mg/L培养基上共培养2d,随后转至附加卡那霉素100mg/L,羧苄青霉素500 mg/L的培养基上筛选培养,(25±1)℃,16h光周期。

(6)2周后分化出卡那霉素抗性芽(应为绿色),从基部将芽切下,转至含100mg/L卡那霉素和500 mg/L羧苄青霉素的MS+0.1 mg/LIAA上生根培养,生根后的植株移入温室内栽培。

四、预期结果

愈伤组织:一周后在脱分化培养基上长出淡黄色、松散的愈伤组织。

幼芽:愈伤组织转入分化培养基两周后分化出卡那霉素抗性芽。

生根:芽转入生根培养基后可以生根。

五、作业要求

诱导出烟草愈伤组织并能够再生植株。每小组交出两三株再生并生根的烟草转基因植株。

本程序由国外的Vulture大哥编写,并公布了源码,这个是他95年的一个作品。真的很佩服他!太强了。好好学习啊!!!!

编译方法: 1 tasm 3d.asm

2 tlink 3d.obj

3 exe2bin 3d.exe 3d.com

Assembler Program By Vulture.

3D-system example. Use the following formulas to rotate a point:

Rotate around x-axis

YT = Y * COS(xang) - Z * SIN(xang) / 256

ZT = Y * SIN(xang) Z * COS(xang) / 256

Y = YT

Z = ZT

Rotate around y-axis

XT = X * COS(yang) - Z * SIN(yang) / 256

ZT = X * SIN(yang) Z * COS(yang) / 256

X = XT

Z = ZT

Rotate around z-axis

XT = X * COS(zang) - Y * SIN(zang) / 256

YT = X * SIN(zang) Y * COS(zang) / 256

X = XT

Y = YT

Divide by 256 coz we have multiplyd our sin values with 256 too.

This example isn’t too fast right now but it’ll work just fine.

Current Date: 6-9-95 Vulture

IDEAL Ideal mode

P386 Allow 80386 instructions

JUMPS Tasm handles out of range jumps (rulez!:))

SEGMENT CODE Code segment starts

ASSUME cs:code,ds:code Let cs and ds point to code segment

ORG 100h Make a .COM file

START: Main program

mov ax,0013h Init vga

int 10h

mov ax,cs

mov ds,ax ds points to codesegment

mov ax,0a000h

mov es,ax es points to vga [Page]

lea si,[Palette] Set palette

mov dx,3c8h

xor al,al

out dx,al

mov dx,3c9h

mov cx,189*3

repz outsb

=== Set some variables ===

mov [DeltaX],1 Initial speed of rotation

mov [DeltaY],1 Change this and watch what

mov [DeltaZ],1 happens. It’s fun!

mov [Xoff],256

mov [Yoff],256 Used for calculating vga-pos

mov [Zoff],300 Distance from viewer

MainLoop:

call MainProgram Yep... do it all... -)

in al,60h Scan keyboard

cmp al,1 Test on ESCAPE

jne MainLoop Continue if not keypressed

=== Quit to DOS ===

mov ax,0003h Back to textmode

int 10h

lea dx,[Credits]

mov ah,9

int 21h

mov ax,4c00h Return control to DOS

int 21h Call DOS interrupt

=== Sub-routines ===

PROC WaitVrt Waits for vertical retrace to reduce \"snow\"

mov dx,3dah

Vrt:

in al,dx

test al,8

jnz Vrt Wait until Verticle Retrace starts

NoVrt:

in al,dx

test al,8

jz NoVrt Wait until Verticle Retrace ends

ret Return to main program

ENDP WaitVrt

PROC UpdateAngles

Calculates new x,y,z angles

to rotate around

mov ax,[XAngle] Load current angles

mov bx,[YAngle]

mov cx,[ZAngle]

add ax,[DeltaX] Add velocity

and ax,11111111b Range from 0..255

mov [XAngle],ax Update X

add bx,[DeltaY] Add velocity

and bx,11111111b Range from 0..255

mov [YAngle],bx Update Y

add cx,[DeltaZ] Add velocity

and cx,11111111b Range from 0..255

mov [ZAngle],cx Update Z

ret

ENDP UpdateAngles

PROC GetSinCos

Needed : bx=angle (0..255)

Returns: ax=Sin bx=Cos

push bx Save angle (use as pointer)

shl bx,1 Grab a word so bx=bx*2 [Page]

mov ax,[SinCos bx] Get sine

pop bx Restore pointer into bx

push ax Save sine on stack

add bx,64 Add 64 to get cosine

and bx,11111111b Range from 0..255

shl bx,1 *2 coz it’s a word

mov ax,[SinCos bx] Get cosine

mov bx,ax Save it bx=Cos

pop ax Restore ax=Sin

ret

ENDP GetSinCos

PROC SetRotation

Set sine &cosine of x,y,z

mov bx,[XAngle] Grab angle

call GetSinCos Get the sine&cosine

mov [Xsin],ax Save sin

mov [Xcos],bx Save cos

mov bx,[Yangle]

call GetSinCos

mov [Ysin],ax

mov [Ycos],bx

mov bx,[Zangle]

call GetSinCos

mov [Zsin],ax

mov [Zcos],bx

ret

ENDP SetRotation

PROC RotatePoint Rotates the point around x,y,z

Gets original x,y,z values

This can be done elsewhere

movsx ax,[Cube si] si = X (movsx coz of byte)

mov [X],ax

movsx ax,[Cube si 1] si 1 = Y

mov [Y],ax

movsx ax,[Cube si 2] si 2 = Z

mov [Z],ax

Rotate around x-axis

YT = Y * COS(xang) - Z * SIN(xang) / 256

ZT = Y * SIN(xang) Z * COS(xang) / 256

Y = YT

Z = ZT

mov ax,[Y]

mov bx,[XCos]

imul bx ax = Y * Cos(xang)

mov bp,ax

mov ax,[Z]

mov bx,[XSin]

imul bx ax = Z * Sin(xang)

sub bp,ax bp = Y * Cos(xang) - Z * Sin(xang)

sar bp,8 bp = Y * Cos(xang) - Z * Sin(xang) / 256

mov [Yt],bp

mov ax,[Y]

mov bx,[XSin]

imul bx ax = Y * Sin(xang)

mov bp,ax

mov ax,[Z]

mov bx,[XCos]

imul bx ax = Z * Cos(xang)

add bp,ax bp = Y * SIN(xang) Z * COS(xang) [Page]

sar bp,8 bp = Y * SIN(xang) Z * COS(xang) / 256

mov [Zt],bp

mov ax,[Yt] Switch values

mov [Y],ax

mov ax,[Zt]

mov [Z],ax

Rotate around y-axis

XT = X * COS(yang) - Z * SIN(yang) / 256

ZT = X * SIN(yang) Z * COS(yang) / 256

X = XT

Z = ZT

mov ax,[X]

mov bx,[YCos]

imul bx ax = X * Cos(yang)

mov bp,ax

mov ax,[Z]

mov bx,[YSin]

imul bx ax = Z * Sin(yang)

sub bp,ax bp = X * Cos(yang) - Z * Sin(yang)

sar bp,8 bp = X * Cos(yang) - Z * Sin(yang) / 256

mov [Xt],bp

mov ax,[X]

mov bx,[YSin]

imul bx ax = X * Sin(yang)

mov bp,ax

mov ax,[Z]

mov bx,[YCos]

imul bx ax = Z * Cos(yang)

add bp,ax bp = X * SIN(yang) Z * COS(yang)

sar bp,8 bp = X * SIN(yang) Z * COS(yang) / 256

mov [Zt],bp

mov ax,[Xt] Switch values

mov [X],ax

mov ax,[Zt]

mov [Z],ax

Rotate around z-axis

XT = X * COS(zang) - Y * SIN(zang) / 256

YT = X * SIN(zang) Y * COS(zang) / 256

X = XT

Y = YT

mov ax,[X]

mov bx,[ZCos]

imul bx ax = X * Cos(zang)

mov bp,ax

mov ax,[Y]

mov bx,[ZSin]

imul bx ax = Y * Sin(zang)

sub bp,ax bp = X * Cos(zang) - Y * Sin(zang)

sar bp,8 bp = X * Cos(zang) - Y * Sin(zang) / 256

mov [Xt],bp

mov ax,[X]

mov bx,[ZSin]

imul bx ax = X * Sin(zang)

mov bp,ax

mov ax,[Y]

mov bx,[ZCos]

imul bx ax = Y * Cos(zang)

add bp,ax bp = X * SIN(zang) Y * COS(zang) [Page]

sar bp,8 bp = X * SIN(zang) Y * COS(zang) / 256

mov [Yt],bp

mov ax,[Xt] Switch values

mov [X],ax

mov ax,[Yt]

mov [Y],ax

ret

ENDP RotatePoint

PROC ShowPoint

Calculates screenposition and

plots the point on the screen

mov ax,[Xoff] Xoff*X / Z Zoff = screen x

mov bx,[X]

imul bx

mov bx,[Z]

add bx,[Zoff] Distance

idiv bx

add ax,[Mx] Center on screen

mov bp,ax

mov ax,[Yoff] Yoff*Y / Z Zoff = screen y

mov bx,[Y]

imul bx

mov bx,[Z]

add bx,[Zoff] Distance

idiv bx

add ax,[My] Center on screen

mov bx,320

imul bx

add ax,bp ax = (y*320) x

mov di,ax

mov ax,[Z] Get color from Z

add ax,100d (This piece of code could be improved)

mov [byte ptr es:di],al Place a dot with color al

mov [Erase si],di Save position for erase

ret

ENDP ShowPoint

PROC MainProgram

call UpdateAngles Calculate new angles

call SetRotation Find sine &cosine of those angles

xor si,si First 3d-point

mov cx,MaxPoints

ShowLoop:

call RotatePoint Rotates the point using above formulas

call ShowPoint Shows the point

add si,3 Next 3d-point

loop ShowLoop

call WaitVrt Wait for retrace

xor si,si Starting with point 0

xor al,al Color = 0 = black

mov cx,MaxPoints

Deletion:

mov di,[Erase si] di = vgapos old point

mov [byte ptr es:di],al Delete it

add si,3 Next point

loop Deletion

ret

ENDP MainProgram

=== DATA ===

Credits DB 13,10,\"Code by Vulture / Outlaw Triad\",13,10,\"$\"

Label SinCos Word 256 values

dw 0,6,13,19,25,31,38,44,50,56 [Page]

dw 62,68,74,80,86,92,98,104,109,115

dw 121,126,132,137,142,147,152,157,162,167

dw 172,177,181,185,190,194,198,202,206,209

dw 213,216,220,223,226,229,231,234,237,239

dw 241,243,245,247,248,250,251,252,253,254

dw 255,255,256,256,256,256,256,255,255,254

dw 253,252,251,250,248,247,245,243,241,239

dw 237,234,231,229,226,223,220,216,213,209

dw 206,202,198,194,190,185,181,177,172,167

dw 162,157,152,147,142,137,132,126,121,115

dw 109,104,98,92,86,80,74,68,62,56

dw 50,44,38,31,25,19,13,6,0,-6

dw -13,-19,-25,-31,-38,-44,-50,-

56,-62,-68

dw -74,-80,-86,-92,-98,-104,-109,-115,-121,-126

dw -132,-137,-142,-147,-152,-157,-162,-167,-172,-177

dw -181,-185,-190,-194,-198,-202,-206,-209,-213,-216

dw -220,-223,-226,-229,-231,-234,-237,-239,-241,-243

dw -245,-247,-248,-250,-251,-252,-253,-254,-255,-255

dw -256,-256,-256,-256,-256,-255,-255,-254,-253,-252

dw -251,-250,-248,-247,-245,-243,-241,-239,-237,-234

dw -231,-229,-226,-223,-220,-216,-213,-209,-206,-202

dw -198,-194,-190,-185,-181,-177,-172,-167,-162,-157

dw -152,-147,-142,-137,-132,-126,-121,-115,-109,-104

dw -98,-92,-86,-80,-74,-68,-62,-56,-50,-44

dw -38,-31,-25,-19,-13,-6

Label Cube Byte The 3d points

c = -35 5x*5y*5z (=125) points

rept 5

b = -35

rept 5

a = -35

rept 5

db a,b,c

a = a 20

endm

b = b 20

endm

c = c 20

endm

Label Palette Byte The palette to use

db 0,0,0 63*3 gray-tint

d = 63

rept 63

db d,d,d

db d,d,d

db d,d,d

d = d - 1

endm

X DW ? X variable for formula

Y DW ?

Z DW ?

Xt DW ? Temporary variable for x

Yt DW ?

Zt DW ?

XAngle DW 0 Angle to rotate around x

YAngle DW 0

ZAngle DW 0

DeltaX DW ? Amound Xangle is increased each time

DeltaY DW ?

DeltaZ DW ?

Xoff DW ?

Yoff DW ?

Zoff DW ? Distance from viewer

XSin DW ? Sine and cosine of angle to rotate around

XCos DW ?

YSin DW ? [Page]

YCos DW ?

ZSin DW ?

ZCos DW ?

Mx DW 160 Middle of the screen

My DW 100

MaxPoints EQU 125 Number of 3d Points

Erase DW MaxPoints DUP (?) Array for deletion screenpoints

ENDS CODE End of codesegment

END START The definite end.... :)

You may use this code in your own productions but

give credit where credit is due. Only lamers steal

code so try to create your own 3d-engine and use

this code as an example.

Thanx must go to Arno Brouwer and Ash for releasing

example sources.

Ciao dudoz,

Vulture / Outlaw Triad


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

原文地址: https://outofmemory.cn/yw/11045120.html

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

发表评论

登录后才能评论

评论列表(0条)

保存