自动控制--第3章334335课件

上传人:无*** 文档编号:241762283 上传时间:2024-07-22 格式:PPT 页数:63 大小:2.06MB
返回 下载 相关 举报
自动控制--第3章334335课件_第1页
第1页 / 共63页
自动控制--第3章334335课件_第2页
第2页 / 共63页
自动控制--第3章334335课件_第3页
第3页 / 共63页
点击查看更多>>
资源描述
四、串操作类指令1串操作指令说明针对数据块或字符串的操作;可实现存储器到存储器的数据传送;源操作数称为源串,目标操作数称为目标串。是唯一的一类源操作数和目标操作数都在存储单元的指令。用一条指令实现对一串字符或数据的操作,可以处理长达64KB的字符串。一条带重复前缀的串操作指令的执行过程往往相当于一个循环程序的运行。2串操作指令的特点源串一般存放在DS中,偏移地址由SI指定,DS:SI,允许段重设;目标串必须在ES中,偏移地址由DI指定,ES:DI;指令自动修改地址指针,修改方向由方向标志位DF决定。DF=0 DF=1串的长度值由CX指定;可增加自动重复前缀以实现自动修改CX内容。3增地址方向;字节加增地址方向;字节加1,字加,字加2减地址方向;减地址方向;串操作指令的关键点应预先设置源串指针(DS、SI)、目标串指针(ES、DI),重复次数(CX)和操作方向(DF)。方向标志位DF=?CLD:DF=0,串操作从低地址到高地址;STD:DF=1,串操作从高地址到低地址;4重复操作前缀串操作指令前可以添加一个适当的重复操作前缀,即:指令在执行后不仅能按DF所决定的方向自动修改地址指针SI和DI的内容,还可在每完成一次操作后自动修改串长度CX的值,重复执行串指令,直至CX=0或满足指定的条件为止。5重复操作前缀无条件重复前缀REP条件重复前缀REPE 相等重复REPZ 为零重复REPNE 不相等重复REPNZ 不为零重复6CX0 ZF=1CX0 ZF=0CX0 重复重复一一般般加加在在传传送送类类指指令之前令之前一一般般加加在在比比较较类类串串指令之前指令之前串操作指令流程(以传送操作为例)7取源串地址送取源串地址送SI取目标串地址送取目标串地址送DI串长度值送串长度值送CX传送一个字节或字传送一个字节或字修改地址指针修改地址指针修改串长度值修改串长度值传送完否?传送完否?NY置方向标志置方向标志DF串操作指令串传送 MOVS串比较 CMPS串扫描 SCAS串装入 LODS串存储STOS81.1.串传送指令格式:MOVS dest,src MOVSB MOVSW当标志位DF=0时,地址递增;DF=1时,地址递减;串传送指令常与无条件重复前缀连用9串传送指令应用MOVS可实现内存单元到内存单元的数据传送,解决了MOV指令不能直接在内存单元之间传送数据的限制。常与REP联合使用,提高程序的运行速度。10串传送指令例将2000H:1200H地址开始的100个字节传送到6000H:0000H开始的内存单元中去。11REP MOVSBHLTMOV AX,2000HMOV DS,AXMOV AX,6000HMOV ES,AXMOV SI,1200HMOV DI,0000HCLDMOV CX,100每每传传送送一一个个字字节节,自自动动修修改改地地址址指指针针及及CX,直至,直至CX=02.2.串比较指令格式:CMPS dest,src CMPSB CMPSW串比较指令常与条件重复前缀连用,指令的执行不改变操作数,仅影响标志位。前缀的操作对标志位不影响。每进行一次比较后,自动修改地址指针,指向串中的下一个元素。12串比较指令应用和条件重复前缀连用,用来检查两个字符串是否相等。在程序应用中,在串比较指令的后面,需要用一条指令来判断是何种原因结束了串的比较。判断的条件:ZF的取值。REPE/REPZ,ZF=1重复;REPNE/REPNZ,ZF=0重复;JZ/JNZ;CX是否为0,不影响ZF状态。133.3.串扫描指令格式:SCAS OPRD SCASB SCASW执行与CMPS指令相似的操作,只是这里的源操作数是AX或AL;用AX或AL的值与目标串中的字节或字进行比较,比较结果不改变目标操作数,只影响标志位。14目标串目标串串扫描指令的应用常用于在一个字符串中搜索特定的关键字。把需要找的关键字放在AL或AX中,再用串扫描指令与字符串中各字符逐一比较。154 串装入指令将内存中一串数据送累加器AL或AX格式:LODS OPRD LODSB LODSW操作:对字节:对 字:16源操作数源操作数DS:SIDS:SIDS:SIDS:SIALALAXAX串装入指令LODS指令不影响标志位,一般不加重复前缀。LODS指令将DS:SI指向的源串中的字或字节取到累加器AX或AL中后,根据DF的值自动修改指针SI,以指向下一个要装入的字节或字。17串装入指令LODSB可以用来代替以下两条指令 MOV AL,SI INC SILODSW可以用来代替以下三条指令 MOV AX,SI INC SI INC SI18串装入指令应用用于将内存某个区域的数据串依次装入累加器,以便显示或输出到接口。195.5.串存储指令格式:STOS OPRD STOSB STOSW操作:对字节:AL对 字:AX20目标串目标串ES:DIES:DI之之后后根根据据DF取取值值自自动动修修改改指指 针针 DI,指指向向下下一一个个存存储储单元单元串存储指令的应用利用重复前缀REP,常用于对连续的存储单元存入相同的值;此时:将待送存的数据放入AL(字节数)或AX(字数据);确定操作方向(增地址/减地址)和区域大小(串长度值);使用串存储指令+无条件重复前缀,实现数据传送。21串存储指令例1 内存某个区域清零将内存某单元清零设计思想:22区域首地址送区域首地址送ES:DI串长度送串长度送CX置方向标志置方向标志DF0送累加器送累加器AL执行串存储指令执行串存储指令p132串存储指令例1将内存中以MEM单元为结束地址的100个字存储单元内容清零。23LEA DI,MEMMOV CX,100STDMOV AX,0REP STOSWHLT串存储指令例2例3-1224五、控制转移类指令n转移指令转移指令n循环控制循环控制n过程调用过程调用n中断控制中断控制251.1.转移指令无条件转移指令 无条件转移到目标地址,执行新的指令有条件转移指令 在具备一定条件的情况下转移到目标地址26通过修改指令的通过修改指令的偏移地址偏移地址或或段地址及偏移地址段地址及偏移地址实现程序的转移实现程序的转移(1 1)无条件转移指令格式:JMP OPRD27目标地址目标地址与与JMP在同在同一代码段一代码段与与JMP不在同不在同一代码段一代码段原则上可实现在整个内存空间的转移原则上可实现在整个内存空间的转移无条件段内转移转移的目标地址在当前代码段内,段地址不改变。即:目标地址是16位偏移地址。28指令中直接给出指令中直接给出目标地址目标地址由指令中的寄存器或由指令中的寄存器或存储器操作数指出目存储器操作数指出目标地址标地址段内直接转移段内直接转移段内间接段内间接转移转移无条件段间转移转移的目标地址不在当前代码段内。目标地址为32位,包括段地址和偏移地址。29指令中直接给出指令中直接给出目标地址目标地址由指令中的由指令中的32位存储器位存储器操作数指出目标地址操作数指出目标地址段间直接转移段间直接转移段间间接转移段间间接转移(2 2)条件转移指令在满足一定条件下,程序转移到目标地址继续执行。条件转移指令均为段内短转移,即转移 范围为:-128-+12730条件转移指令的应用几种条件转移指令的应用JC/JNC判断CF的状态。常用于比大小。JZ/JNZ判断ZF的状态。常用于循环体的结束判断。JO/JNO判断OF的状态。常用于有符号数溢出的判断。JP/JPE判断PF的状态。用于判断运算结果低8位中1的个数是否为偶数。JA/JAE/JB/JBE判断CF或CF+ZF的状态。常用于无符号数的大小比较31条件转移指令应用的几点说明条件转移指令应用中应注意的问题:对基于标志位状态来决定是否转移的条件转移指令,其前一条指令的执行必须对相应标志位产生影响;不能用SF的状态来决定两个无符号数的大小;在有符号数运算时,应考虑OF的状态,若OF=1则运算结果溢出。相应的,无符号数运算时则应考虑CF的状态。PF和AF的状态变化只受低8位运算的影响。32如:如:INC指令后不应紧跟指令后不应紧跟JNC/JC指令指令转移指令例2统计内存数据段中以TABLE为首地址的100个8位符号数中正数、负数和零元数的个数。33转移指令例(流程图)34将存放各元素个将存放各元素个数的单元清零数的单元清零取首地址取首地址设串长度设串长度取一个字节数取一个字节数正数个数加正数个数加1零元素加零元素加1为负?为负?为零?为零?负数个数加负数个数加1NYNY转移指令例 START:XOR AL,AL MOV PLUS,AL MOV MINUS,AL MOV ZERO,AL LEA SI,TABLE MOV CL,100CHECK:MOV AL,SI INC SI OR AL,AL 35 JS X1 JZ X2 INC PLUS JMP NEXT X1:INC MINUS JMP NEXT X2:INC ZERO DEC CLNEXT:JNZ CHECK HLT 转移指令例1内存以TABLE为首地址的数据段中存放了100个8位无符号数,试统计其中零元素的个数,并将个数存入ZERO单元。362.2.循环控制指令循环范围:以当前IP为中心的-128+127范围内循环。循环次数由CX寄存器指定。循环指令:37LOOP *LOOPZ/E *LOOPNZ/E无条件循环指令无条件循环指令条件循环指令条件循环指令无条件循环指令格式:LOOP LABEL循环条件:CX 0操作:DEC CX JNZ 符号地址38相等或为0时转移循环格式:LOOPZ/LOOPE OPR功能:CX(CX)1 测试(CX)0且ZF=1,转移到标号处继续循环,否则退出循环。39不相等或不为0时转移循环格式:LOOPNZ/LOOPNE OPR功能:CX(CX)1 测试(CX)0且ZF=0,转移到标号处继续循环,否则退出循环。403.3.程序程序调用和返回用于调用一个子过程;子过程由程序员预先设计 并装入内存 子过程执行结束后要返回 原调用处断点:调用指令下一条指令的地址;入口地址:子程序的第一条指令在内存中的地址;41调用程序调用程序断点断点入口入口地址地址子程序子程序过程调用和转移类指令的区别相同点:两者均是由指令给出下一条要执行指令的目标地址不同点:1.转移指令转移的目标是同一个(一类)程序模块;过程调用的目标对象是另一个独立的程序模块。2.转移指令转移到目标后将沿着新的起点继续执行下去;仅需寻找转移的目标地址3.过程调用在被调用程序执行结束后须返回到原调用处继续执行原程序。入口地址寻找断点保护42调用指令的执行过程保护断点;将调用指令的下一条指令的地址(断点)压入堆栈获取子过程的入口地址;子过程第1条指令的偏移地址执行子过程,含相应参数的保存及恢复;恢复断点,返回原程序。将断点偏移地址由堆栈弹出43过程调用段内调用段间调用44段内直接调用段内直接调用段内间接调用段内间接调用段间直接调用段间直接调用段间间接调用段间间接调用(1 1)段内调用被调用程序与调用程序在同一代码段调用前只需保护断点的偏移地址格式:CALL NEAR PROC执行过程:45近过程符号地址近过程符号地址代码代码段段1调用程序调用程序被调用程序被调用程序代码代码段段1n 将断点的偏移地址压入堆栈将断点的偏移地址压入堆栈n 根据过程名找子程序入口根据过程名找子程序入口也是子程序入口地址也是子程序入口地址段内调用例(1)CALL TIMRE(2)CALL WORD PTRSI46直接调用直接调用间接调用间接调用44H33HCALL代代码码段段数数据据段段 设:设:SI=1200H CS=6000H1200H执行第(执行第(2)条指令后:)条指令后:6000HCS=3344HIP=(2 2)段间调用子过程与原调用程序不在同一代码段先将断点的CS压栈,再压入IP。47调用前需保护断点的段基地址和偏移地址调用前需保护断点的段基地址和偏移地址段间调用例格式:CALL FAR PROC格式例:CALL FAR TIMRECALL DWORD PTRSI48XXHXXHCALL代代码码段段数数据据段段 SIXXHXXHCSIP(3 3)返回指令功能:从堆栈中弹出断点地址,返回原程序格式:RET nRET指令一般位于子程序的最后。49返回指令504.4.中断指令几个概念:中断中断源中断的类型中断指令引起CPU产生一次中断的指令51中断与过程调用:中断是随机事件或异常事件引起,调用则是事 先已在程序中安排好;响应中断请求不仅要保护断点地址,还要保护 FLAGS内容;调用指令在指令中直接给出子程序入口地址,中断指令只给出中断向量码,入口地址则在向 量码指向的内存单元中;中断服务子程序均为远过程体。52中断向量表中断向量表(1 1)中断指令格式:INT n说明:n453中断类型码中断类型码n=0 255n 4 XXHXXHXXHXXH入口的段地址入口的段地址入口的偏移地址入口的偏移地址存放中断服务子程序入口存放中断服务子程序入口地址的单元的偏移地址地址的单元的偏移地址代代码码段段数数据据段段 该单元在数据段,段地址该单元在数据段,段地址=DS 中断指令的执行过程将FLAGS压入堆栈;将INT指令的下一条指令的CS、IP压栈;由n4得到存放中断向量的地址;将中断向量(中断服务程序入口地址)送CS和IP寄存器;转入中断服务程序。54中断指令的执行过程55n4 22H11H00H67HIPCS68122HMOV代代码码段段数数据据段段 堆堆栈栈段段SPFLAGSHFLAGSLIPHCSLCSHIPL SPSPSP中断指令例执行程序段:CS IP 6200H:0110H INT 21H6200H:0112H MOV AX,BX 5612H01H00H62HSP=1200FLAGSLFLAGSHSP=11FA执行执行INT指令后指令后堆堆栈栈段段中断指令例执行INT 21H指令后 IP=21H4 CS=(21H4)+2570084H 23H11H00H20HIP CS数数据据段段 代代码码段段XX21123H 中断服中断服务子程序子程序(2 2)中断返回指令格式:IRET中断服务程序的最后一条指令,负责58恢复断点恢复断点恢复标志寄存器内容恢复标志寄存器内容59六、处理器控制指令60处理器控制指令对标志位的操作指令了解针对CF和IF操作指令与外部的同步操作指令了解NOP和HLT指令61结束语:掌握:指令的格式及意义;指令对操作数的要求及对标志位的影响;指令的应用。62第3 3章作业63
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!