第03章 消毒灭菌与病原微生物实验室生物安全_第1页
第03章 消毒灭菌与病原微生物实验室生物安全_第2页
第03章 消毒灭菌与病原微生物实验室生物安全_第3页
第03章 消毒灭菌与病原微生物实验室生物安全_第4页
第03章 消毒灭菌与病原微生物实验室生物安全_第5页
已阅读5页,还剩118页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Y EQU 2005HMOV AX, 2002Hl MOV BL, 36Hl MOV BX,Y注意:注意: MOV 2A00H, AX ; 错误!错误!操作码操作码低低8位位高高8位位立即寻址指令在立即寻址指令在存储器中的存放存储器中的存放形式如下:形式如下:l 1616位的操作数必须使用位的操作数必须使用1616位的寄存器,位的寄存器,8 8位的操作数位的操作数必须使用必须使用8 8位的寄存器。位的寄存器。l源操作数与目的操作数字长要相同源操作数与目的操作数字长要相同l寄存器寻址与段地址无关寄存器寻址与段地址无关l操作数就在寄存器中,不需要动用总线、访问内存,操作数就在寄存器中,不需要动用总

2、线、访问内存,因此可取得较高的执行速度。因此可取得较高的执行速度。l 例:例: MOV AX, BXMOV AX, BX MOV AX, 1234H MOV AX, 1234H MOV AH, BH MOV AH, BH错误例:错误例: MOV AX, BLMOV AX, BL ; ; 字长不同字长不同 MOV ES: AX, DXMOV ES: AX, DX ; ; 寄存器与段无关寄存器与段无关l 默认的段寄存器为默认的段寄存器为DSDS,但也可以显式地指定其他段寄但也可以显式地指定其他段寄存器存器称为段超越前缀称为段超越前缀l 偏移地址也可用偏移地址也可用变量名变量名来表示,如来表示,如A

3、DDRADDR为一个字变量为一个字变量名名l 例:例: MOV AX, 1000HMOV AX, 1000H MOV DX, ES: 1000H MOV DX, ES: 1000H MOV SI, ADDR MOV SI, ADDR (1)1) (1) (1) (1)(1) (1)8320083200HAHALAX+ DATA 0200操作码操作码代码段数据段.YYXXDS 8000BX 2000 DI 1000(1)(1)l直接寻址方式;直接寻址方式;lEA=0618HEA=0618H,lPA=12000H+0618HPA=12000H+0618H =12618H =12618H;l将数据段

4、的实际地址为将数据段的实际地址为12618H12618H和和12619H12619H两单元中的两单元中的字内容取出送字内容取出送AXAX。l间接寻址方式;间接寻址方式;lEA=05A6HEA=05A6H,lPA=12000H+05A6HPA=12000H+05A6H =125A6H =125A6H;l将数据段的实际地址为将数据段的实际地址为125A6H125A6H和和125A7H125A7H两单元中的两单元中的字内容取出送字内容取出送AXAX。l间接寻址方式;间接寻址方式;lEA=40A0HEA=40A0H,lPA=50000H+40A0HPA=50000H+40A0H =540A0H =54

5、0A0H;l将堆栈段的实际地址为将堆栈段的实际地址为540A0H540A0H和和540A1H540A1H两单元中的两单元中的字内容取出送字内容取出送AXAX。l变址寻址方式;变址寻址方式;lEA=3000HEA=3000H,lPA=12000H+3000HPA=12000H+3000H =15000H =15000H;l将数据段的实际地址为将数据段的实际地址为15000H15000H和和15001H15001H两单元中的两单元中的字内容取出送字内容取出送AXAX。l基址加变址寻址方式;基址加变址寻址方式;lEA=05A6H+3000H=35A6H;EA=05A6H+3000H=35A6H;lP

6、A=12000H+35A6HPA=12000H+35A6H =155A6H =155A6H;l将数据段的实际地址为将数据段的实际地址为155A6H155A6H和和155A7H155A7H两单元中的两单元中的字内容取出送字内容取出送AXAX。l相对基址加变址寻址方式;相对基址加变址寻址方式;lEA=40A0H+2000H+618H=76B8H;EA=40A0H+2000H+618H=76B8H;lPA=50000H+76B8HPA=50000H+76B8H =576B8H =576B8H;l将数据段的实际地址为将数据段的实际地址为576B8H576B8H和和576B9H576B9H两单元中的字两

7、单元中的字内容取出送内容取出送AXAX。设(AX)=1020H,(SP)=0040H,则如图所示低地址存储区(SS段)执行前(AX)=1020H(SP)存储区(SS段)进栈方向执行后2010(AL)(AH)PUSH AX指令执行示意图指令执行示意图(SP)-2(SP)高地址低地址高地址(SP)- -1(SP)=003EHPOP BX 的执行示意图如下图所示低地址存储区(SS段)出栈方向执行前2010POP BX指令执行示意图指令执行示意图(SP)存储区(SS段)执行后(BX)=1020(SP)BX20高地址低地址高地址 XCHG AL,BL; XCHG BX,CX;XCHG BX,BP+SI

8、1.1.建立代码转换表(最大容量为建立代码转换表(最大容量为256256字节),将该表定位到字节),将该表定位到 内存中某个逻辑段的一片连续地址中,内存中某个逻辑段的一片连续地址中,4079.1202.40030H+040030H+50156存储器存储器若指令执行之前若指令执行之前(SI)=0030H,(SI)=0030H,则指令执行之后则指令执行之后, ,(BX)=103AH(BX)=103AH注意与指令注意与指令功能上的区别功能上的区别n该指令通常用来设置偏移地址初值,以便从此地址开始存取该指令通常用来设置偏移地址初值,以便从此地址开始存取多个数据。多个数据。1D3D5D7D6D4D2D0

9、DOF DF IF TFAHFLAG1D3D5D7D6D4D2D0DOF DF IF TF SF ZFAFPFCFAHFLAG56H2CHBEH47HD1D2ACHF8H9EH30H被加数加数数据段 多字节加法多字节加法示意图示意图 .注:本指令不影响注:本指令不影响CFCF标志。标志。 进行乘法时:进行乘法时:8 8位位* *8 8位位1616位乘积位乘积 16 16位位* *1616位位3232位乘积位乘积若若ALAL的的低低4 4位位9 9AFAF=1=1 则则( (AL)AL)(AL)+6(AL)+6,AF1AF1 若若ALAL的的高高4 4位位9 9CFCF=1=1 则则( (AL)

10、AL)(AL)+60H(AL)+60H,CF1CF1这个1代表了16,而实际上仅应为10,即多进了6。 AHAL源串一般存放在数据段,偏移地址由源串一般存放在数据段,偏移地址由SI指定。允许段重指定。允许段重设。设。目标串必须在附加段,偏移地址由目标串必须在附加段,偏移地址由DI指定指定指令自动修改地址指针,修改方向由指令自动修改地址指针,修改方向由DF决定。决定。DF=0 增地址方向;增地址方向;DF=1 减地址方向减地址方向数据块长度值由数据块长度值由CX指定指定可增加自动重复前缀以实现自动修改可增加自动重复前缀以实现自动修改CX内容内容重复前缀重复前缀REP 无条件重复无条件重复REPE

11、 相等重复相等重复REPZ 为零重复为零重复REPNE 不相等重复不相等重复REPNZ 不为零重复不为零重复条件重复条件重复CX0且且ZF=1CX0且且ZF=0CX0 重复重复 指令前面常加重复前缀指令前面常加重复前缀REPREP。 通常在通常在CMPSCMPS指令前加重复前缀指令前加重复前缀REPE/REPZREPE/REPZ,用来寻找两个用来寻找两个串中的第一个不相同数据。串中的第一个不相同数据。CMPSB: (DS):(SI) - (ES):(DI) CMPSW: (DS):(SI+1)(SI) - (ES):(DI+1)(DI) 搜索的实质是将搜索的实质是将AXAX或或ALAL中的关键

12、字减去由中的关键字减去由DIDI所指向所指向的目标串中的一个元素的目标串中的一个元素, ,不传送结果不传送结果, ,只根据结果置标志只根据结果置标志位,然后修改位,然后修改DIDI的内容指向下一个元素。通常,在的内容指向下一个元素。通常,在SCASSCAS前加重复前缀前加重复前缀REPNE/REPNZREPNE/REPNZ,用来从目标串中寻找关键字,用来从目标串中寻找关键字, ,操作一直进行到操作一直进行到ZF=1(ZF=1(查到了某关键字查到了某关键字) )或或CX=0(CX=0(终未查找终未查找到到) )为止。为止。 若前缀为若前缀为REPZ,则表示比较结果相等且,则表示比较结果相等且(Z

13、F=1)且串未且串未结束结束(CX0),则继续比较。则继续比较。 若前缀为若前缀为REPNZ,则表示比较结果不相等,则表示比较结果不相等(ZF=0)且串且串未结束未结束(CX0)就继续比较。就继续比较。 对字节:对字节:(AL)(ES):(DI) DI 对字:对字: (AX)(ES):(DI1)(DI) DI转移指令转移指令循环控制循环控制过程调用过程调用中断控制中断控制CS :IPCS :IP改变改变CS :IPCS :IP通过修改指令的通过修改指令的偏移地址偏移地址或或段地址及偏移段地址及偏移地址地址实现程序的转移实现程序的转移目标地址目标地址与与JMP在在同一代码段同一代码段与与JMP不

14、在不在同一代码段同一代码段原则上可实现在整个内存空间的转移原则上可实现在整个内存空间的转移指令中直接给指令中直接给出目标地址出目标地址由指令中的寄存器由指令中的寄存器或存储器操作数指或存储器操作数指出目标地址出目标地址段内直接转移段内直接转移:直接寻址:直接寻址段内间接转移段内间接转移:间接寻址:间接寻址近地址标号近地址标号JMPLabel代代码码段段位移量位移量下一条要执行指令的下一条要执行指令的偏移地址偏移地址=当前当前IP+位移量位移量用标号表达用标号表达代码段代码段代码段代码段JMP代代码码段段数数据据段段BX=1200XXHXXHIP指令码指令码用寄存器或存储器操作用寄存器或存储器操

15、作数表达转移地址数表达转移地址代码段代码段代码段代码段 实际编程时,汇编程序会根据目标地址的距离,实际编程时,汇编程序会根据目标地址的距离,自动处理自动处理成短转移、近转移或远转移成短转移、近转移或远转移 程序员可用操作符程序员可用操作符near near ptrptr 或或far far ptrptr 强制强制指令中直接给指令中直接给出目标地址出目标地址由指令中的由指令中的32位存位存储器操作数指出目储器操作数指出目标地址标地址段间直接转移段间直接转移:直接寻址:直接寻址段间间接转移段间间接转移:间接寻址:间接寻址远地址标号远地址标号JMPLabel代代码码段段1Label与与JMP之间之间

16、的位移量的位移量代代码码段段2XXHXXHXXHXXHIPCSXXHXXHXXHXXHBXIPCSJMP指令码指令码代代码码段段1代代码码段段2数数据据段段JxxJxx label label ;条件满足,发生转移:条件满足,发生转移:IPIPIPIP8 8位位移量位位移量 ;条件不满足,顺序执行;条件不满足,顺序执行无符号数条件转移指令(执行A-B操作)结果:结果:AX保存较大的保存较大的无符号数无符号数有符号数条件转移指令(执行A-B操作)结果:结果:AX保存较大的保存较大的有符号数有符号数LOOP LOOPZ LOOPNZJCXZJCXZ JCXZ 目标标号:目标标号:当当CXCX0 0

17、时,进行转移时,进行转移 如果在进入如果在进入LOOPLOOP指令时,指令时,CXCX寄存器已经为寄存器已经为0 0,则则LOOPLOOP指令执行的是最大限度次数指令执行的是最大限度次数(65 536(65 536次次) )的循环。有时候这是程序员故意设计的,有时的循环。有时候这是程序员故意设计的,有时候却是不慎发生的,特别是当候却是不慎发生的,特别是当CXCX的内容是来自的内容是来自某一变量或某一计算结果时。某一变量或某一计算结果时。 如果希望在进入如果希望在进入LOOPLOOP指令时,当指令时,当CXCX0 0,则则不进行循环,那就可以在不进行循环,那就可以在LOOPLOOP指令前再增加一指令前再增加一条条JCXZJCXZ指令。指令。段内直接调用段内直接调用段内间接调用段内间接调用段间直接调用段间直接调用段间间接调用段间间接调用断点恢复断点恢复近过程名近过程名断点断点入口入口地址地址直接调用,直接调用,TIME是一个近过程名是一个近过程名间接调用,事先已将过程入间接调用,事先已将过程入口的偏移地址置入口的偏移地址置入BX中。中。远过程名远过程名调用的段地址为调用的段地址为2000H,偏移地址为,偏移地址为5600H。执行该指令后,调用程序将转移到物理地址执行该指令后,调用程序将转移到物理地址为为25600H的过程入口去继续执行。的过程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论