一、实验目的
烟草是遗传转化的模式植物,已经建立了一套完善的转化再生体系。本实验以烟草为实验材料,使同学们了解根癌农杆菌介导法的基本原理和一般步骤,掌握遗传转化的基本 *** 作技术。
二、实验用具及药品
烟草叶片,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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)