欢迎来到天天文库
浏览记录
ID:56978573
大小:62.50 KB
页数:27页
时间:2020-07-25
《四川大学计算机学院 汇编语言课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第八章非数值运算程序设计这一章介绍的指令和程序设计方法都是针对非数值运算程序设计的,诸如字符串处理、代码转换等应用。计算机系统除了数值计算的基本功能外,同时还具有大量非数值运算的处理能力,随着计算机应用的不断丰富,非数值处理的需求逐渐加大,并且在某些方面超过了对数值计算的需求。通过这一章的学习,要求熟练掌握串操作指令的功能,能够在程序设计中适当使用串操作指令8.1串操作指令串,是数据结构中,由线性表转化而来的一种基本的线性结构。和串具有相同结构特征的结构还有堆栈和队列,但是串的操作特征更为自由。队列中,插入一个新元素只能在队尾进行,删除或查询一个元素只能在队首进行,遵循先进先出的操作原则(FI
2、FO)。在计算机的底层结构中,一些基本的机制必须通过队列这种结构来实现。例如,中断请求队列,这是8086/8088硬件底层中所支持的一个结构,把各个设备提出的中断请求按照先后顺序组织到这个队列中,CPU按照先来先处理的原则来处理这些中断请求。当然,中断请求有不同的优先级别,每一个优先级别都有一个相应的中断请求队列,CPU会先处理级别高的队列。再例如,CPU中的指令队列也是队列结构在系统底层的一个应用。堆栈中,插入、删除、查询一个元素都必须在栈顶进行,遵循后进先出的原则(LIFO)。和队列一样重要,在计算机底层结构中,一些基本的机制也需要堆栈来完成。例如中断调用、子程序调用,特别是嵌套调用的情况
3、,必须要使用堆栈结构。在8086/8088CPU中专门提供了一组寄存器对堆栈进行管理,指令系统中也提供了相应的堆栈指令。串这种结构的操作非常自由,可以在任意位置实行插入、删除、查询等操作。最明显的应用实例就是字符串处理。由于实际应用中大量涉及到串操作,所以8086/8088CPU提供了一组专门的串操作指令用于提高串操作的效率。串操作指令所使用的寻址方式都属于串操作寻址方式。8.1.1串操作指令(1)取串指令LODS(LoadfromString)格式1:LODS源串功能:字节操作:AL<=((SI)),SI<=(SI)∓1字操作:AX<=((SI)),SI<=(SI)∓2其中源串为变量名称,用
4、于指明源串类型是字还是字节。SI的增减由DF标志控制。标志位影响:无注意,串操作指令对源串进行操作时,都使用DS给出段基值格式2:LODSB指明使用字节操作。格式3:LODSW指明使用字操作。这两种格式除了指明隐含操作数的类型以外,其余特征和第一种格式完全相同。LODS指令的应用实例参见教材P160例8.1.1(2)存串指令STOS(StoreinString)格式1:STOS目的串功能:字节操作:(DI)<=(AL),DI<=(DI)∓1字操作:(DI)<=(AX),DI<=(DI)∓2其中目的串为变量名称,指明目的串类型是字还是字节。DI的增减由DF标志控制标志位影响:无注意,串操作指令中
5、对目的串进行操作时,都是使用ES段寄存器给出的段寄存器,如果源串、目的串都在数据段中,那么使DS、ES都指向这个段就可以了。格式2:STOSB指明使用字节操作。格式3:STOSW指明使用字操作。(3)串传送指令MOVS(MoveString)格式1:MOVS目的串,源串功能:字节操作:(DI)<=((SI)),SI<=(SI)∓1,DI<=(DI)∓1字操作:(DI)<=((SI)),SI<=(SI)∓2,DI<=(DI)∓2其中目的串和源串用于指明操作数的类型,两个参数的类型必须保持一致,否则会出现语法错误。标志位影响:无格式2:MOVSB指明使用字节操作格式3:MOVSW指明使用字操作例子
6、:参见教材P163例8.1.2(4)串比较指令CMPS(CompareString)指令格式:CMPS源串,目的串功能:字节操作:((SI))-((DI)),SI<=(SI)∓1,DI<=(DI)∓1字操作:((SI))-((DI)),SI<=(SI)∓2,DI<=(DI)∓2其中源串、目的串用于指明操作数类型,二者类型必须保持一致。标志位影响:AF、CF、OF、PF、SF、ZF,标志位解释和算术运算指令相同。实际上,CMPS指令执行的操作和CMP指令非常相似。通常在循环结构中使用CMPS指令比较两个串是否相等。例子:参见教材P164例8.1.3(5)串搜索指令SCAS(ScanString)
7、指令格式:SCAS目的串功能:字节操作:(AL)-((DI)),DI<=(DI)∓1字操作:(AX)-((DI)),DI<=(DI)∓2其中目的串用于指定操作数的类型标志位影响:AF、CF、OF、PF、SF、ZF,标志位解释和算术运算指令相同。通常在循环结构中使用SCAS指令在字符串中查找指定的字符。例子:参见教材P164例8.1.4(6)重复前缀操作指令REP(Repeat)指令格式:REPRE
此文档下载收益归作者所有