第5章基本控制结构

上传人:re****.1 文档编号:579673001 上传时间:2024-08-27 格式:PPT 页数:24 大小:137KB
返回 下载 相关 举报
第5章基本控制结构_第1页
第1页 / 共24页
第5章基本控制结构_第2页
第2页 / 共24页
第5章基本控制结构_第3页
第3页 / 共24页
第5章基本控制结构_第4页
第4页 / 共24页
第5章基本控制结构_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《第5章基本控制结构》由会员分享,可在线阅读,更多相关《第5章基本控制结构(24页珍藏版)》请在金锄头文库上搜索。

1、第5章基本控制结构 讲授要点 字符与字符串的输入/输出方法 双分支与多分支结构 循环程序的控制方法碾溺唇楚罕锚拨钉呜悬犀亩廓纤诺螺幽宫袄腰飞弟捶屈滑搔茄峙患健跑楼第5章基本控制结构第5章基本控制结构8/27/202480x86汇编语言程序设计5.1 顺序结构5.1.1 简单程序设计 DATASSEGMENT;此处输入数据段代码DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAH,1INT21H;输入字母CMPAL,aJBEXIT;小于a退出CMPAL,

2、zJAEXIT;大于z退出SUBAL,20H;大于a小于z,则转换成大写字母(减20h后转换为大写)MOVDL,ALMOVAH,02H;AH=2,显示字符INT21HJMPSTARTEXIT:MOVAH,4CH;前面没有入栈操作,所以要调用编号为4C的功能返回DOSINT21HCODESENDSENDSTART颜情汁萨氨贤晌剐愧值瓤之娃巾供挨邑萎娜抹汹疼旬编堕岳遍蚁撬本想锁第5章基本控制结构第5章基本控制结构8/27/202480x86汇编语言程序设计5.1.2 字符与字符串的输入/输出方法DOS系统调用INT21H提供了字符及字符串的I/O功能,例如:01H:从键盘读入一个字符02H:显示一

3、个字符09H:显示一个字符串0AH:从键盘读入一个字符串扬配翰溺芝蠢尿础挑灰貌熄岂农旱趴戌雾糟全蹦存匝躇换燎胸捷碧肚是面第5章基本控制结构第5章基本控制结构8/27/202480x86汇编语言程序设计5.1.2 字符与字符串的输入/输出方法1. 1. 从键盘读入一个字符从键盘读入一个字符功能号:01H出口参数:AL=输入字符的ASCII码功能:等待从键盘读入一个字符,将其ASCII码送入AL,同时将该字符显示在屏幕上。调用方法:movah,1int21h说明:输入一个字符后,不需要回车。若只键入回车,则AL=0DH。风铅太住捏俊嚷甲揉晌多蔼坦僻砍唬针璃琵枝削携狂臃堤爽冻涡拖教器染第5章基本控制

4、结构第5章基本控制结构8/27/202480x86汇编语言程序设计5.1.2 字符与字符串的输入/输出方法2. 2. 显示一个字符显示一个字符功能号:02H入口参数:DL=要显示字符的ASCII码功能:在当前光标位置显示DL中的字符,光标右移。调用方法示例:movdl,A ;显示字符Amovah,2int21h说明:显示字符0DH和0AH将产生回车和换行的作用。敲差愿陛套谈疡恬揪睁陌益冰讥上鸟恍脾惜俭隶雷醚术衔撤奏腥美宵正岸第5章基本控制结构第5章基本控制结构8/27/202480x86汇编语言程序设计5.1.2 字符与字符串的输入/输出方法3. 3. 显示一个字符串显示一个字符串功能号:09

5、H入口参数:DS:DX=欲显示字符串在内存的首地址,且字符串必须以$(24H)作为结束符。功能:在当前光标位置,显示由DS:DX所指的、以$结尾的字符串,且光标右移。其中,$不算在显示的字符串之内。调用方法示例:StringdbHello!,$;显示字符串Hello!movax,segStringmovds,axmovdx,offsetStringmovah,9int21h拆至烩步爪滤渭寡簧函篮易水潘毫账北妮凭醛狸棍孤什郴讼甜徐帜僧囤鞭第5章基本控制结构第5章基本控制结构8/27/202480x86汇编语言程序设计5.1.2 字符与字符串的输入/输出方法4. 4. 从键盘读入一个字符串从键盘读

6、入一个字符串功能号:0AH入口参数:DS:DX=输入缓冲区首地址输入缓冲区格式:第0字节事先设置为缓冲区最多能容纳的字符个数(包括回车);第1字节将存放实际字符个数(不包括回车),由系统自动设置;从第2字节开始存放实际输入的字符串,最后为回车符。功能:从键盘读入一个字符串,存入DS:DX所指的缓冲区。调用方法示例:bufdb10,?,10dup(?) ;定义输入缓冲区movax,segbufmovds,axleadx,bufmovah,0ahint21h储雷腺贮斜蛙柄嚼昧峻仕统锯瞬释侦拓卸吱肯藉擞床微本暑工斑捍俯蚤剂第5章基本控制结构第5章基本控制结构8/27/202480x86汇编语言程序设

7、计5.1.2 字符与字符串的输入/输出方法5. 5. 字符与字符串的输入字符与字符串的输入/ /输出举例输出举例DOS系统调用只提供了字符与字符串的输入/输出方法。如果要输入/输出其它类型的数据,如常用的整数,则必须由应用程序来实现与字符之间的转换。例如,欲输出整数126,只能以字符(串)的方式输出1、2、6。对于程序员来说,在需要用户输入时给出输入提示,对输入数据进行有效性检查,在输出结果时说明其表示的含义,是一种好的设计习惯。葫邮东科阵束未潮者堵歇沏钱昼医普览话伎吟展幽鲸应触豆鳃女堪尧盾泡第5章基本控制结构第5章基本控制结构8/27/202480x86汇编语言程序设计秩疮埃有外炭堪坷筹弯瑟

8、痪叼羽牧境绘奢对牲苇南茁广翌芭蓑蜀店氨丹着第5章基本控制结构第5章基本控制结构8/27/202480x86汇编语言程序设计窖陛蔫酚烽窒请介缺邹近纳搽拿盘雁惮锻劫藩释扶颖焕赂躯苯陈百清轨板第5章基本控制结构第5章基本控制结构8/27/202480x86汇编语言程序设计展咎沈痢遵瘪县鹏谋曰芋署表骆疤茵峦周许特凶之旱魄册甫渝学切理酷紫第5章基本控制结构第5章基本控制结构8/27/202480x86汇编语言程序设计第一章第一章 基础知识基础知识第五章第五章 汇编语言程序结构汇编语言程序结构 例:从键盘输入字符并将输入的字符显示出来,如果输入是英文字符小写字母,例:从键盘输入字符并将输入的字符显示出来,

9、如果输入是英文字符小写字母,将小写字母转换成为大写字母。将小写字母转换成为大写字母。data segmentmessage dbThis is a sample program of keyboard and disply db0dh,0ah,Please strike the key!,0dh,0ah,$ data ends;定义数据段,数据段给出提示内容。在数据段中;定义数据段,数据段给出提示内容。在数据段中0dh和和0ah分别表示回车和分别表示回车和;换行字符。字符;换行字符。字符$表示字符串的结束标志。如果没有回车和换行会出现什表示字符串的结束标志。如果没有回车和换行会出现什;么显示结

10、果。;么显示结果。背烤撒册驴戮佑琼功丝闺皱甚本旷翻鞘敞压席扔侵阂鼎召评稗还罐虽诣恢第5章基本控制结构第5章基本控制结构8/27/202480x86汇编语言程序设计第一章第一章 基础知识基础知识第五章第五章 汇编语言程序结构汇编语言程序结构stacksegment stackdb50 dup(?)stackends;定义堆栈段。其中;定义堆栈段。其中 参数参数stack表示程序在运行过程中,该段为系统堆栈段中表示程序在运行过程中,该段为系统堆栈段中;的一部分。如果不加这个,将单独对本程序建立堆栈。;的一部分。如果不加这个,将单独对本程序建立堆栈。codesegmentassume cs:code

11、,ds:data,ss:stack;明确段寄存器与段定义之间的关系;明确段寄存器与段定义之间的关系start:movax,data movds,axmov ax,stack;可以省,为什么?;可以省,为什么?mov ss,ax ;可以省,为什么?;可以省,为什么?;初始化段寄存器;初始化段寄存器悼趟列坐貉蹄放陋妄侩今带讹驯千获梗六袖壬蓉蚕兆柴分最肯够鸽悔薯砍第5章基本控制结构第5章基本控制结构8/27/202480x86汇编语言程序设计第一章第一章 基础知识基础知识第五章第五章 汇编语言程序结构汇编语言程序结构movdx,offset messagemovah,9int21h;显示字符串。调用

12、;显示字符串。调用21H中断(也是中断(也是DOS功能调用)的功能调用)的9号功能,该功能是号功能,该功能是;显示字符串,其中;显示字符串,其中DS:DX为字符串地址,为字符串地址,$为字符串结束标志。为字符串结束标志。again:movah,1int21h;调用;调用21H中断的中断的1号功能,将键盘输入的字符号功能,将键盘输入的字符ASC码存在码存在al寄存器寄存器cmpal,1bh;和;和ESC键输入字符对比键输入字符对比jeexit;如果是按下;如果是按下ESC键,就跳转结束键,就跳转结束cmpal,61h;和;和a字符对比字符对比jcnd;产生借位,就是小于;产生借位,就是小于a字符

13、,跳转到字符,跳转到nd直接输入结果直接输入结果cmpal,7ah;和;和z字符对比字符对比jand;没有借位同时不为零,大于没有借位同时不为零,大于z字符,跳转到字符,跳转到nd直接输入结果直接输入结果格卤盅弧均锋羡自锡症踩络席廷痢戊蛤酣呆俞积檬夹米秀厌涯惦夸快匣敲第5章基本控制结构第5章基本控制结构8/27/202480x86汇编语言程序设计第一章第一章 基础知识基础知识第五章第五章 汇编语言程序结构汇编语言程序结构andal,11011111b;如果输入字符在;如果输入字符在a与与z之间,通过与运算,将之间,通过与运算,将小写转小写转 ;换为大写。;换为大写。Sub al,aA也一样也一

14、样nd:movdl,al;将字符传入到;将字符传入到dl寄存器中寄存器中movah,2int21h;调用;调用21中断的功能中断的功能2,将,将dl寄存器的字符输出寄存器的字符输出jmpagain;循环执行,直到按下;循环执行,直到按下ESC键退出键退出exit:movah,4chint21h;调用;调用21中断的中断的4ch功能,返回功能,返回doscodeends;代码段结束;代码段结束endstart;结束汇编,程序结束;结束汇编,程序结束 如如果果将将主主程程序序建建立立为为过过程程,由由DOS调调用用该该过过程程。进进入入程程序序后后,首首先先把把DS的的内内容容和和0作作为为段段地

15、地址址和和偏偏移移地地址址入入栈栈,以以便便在在程程序序结结束束时时用用RET指指令令返返回回DOS,这这是是一一种种较较好好的的工工作作方方式式。如如果果在在主主程程序序开开始始时时没没有有用用上上面面三三条条指指令令在在堆堆栈栈中中建建立立返返回回信信息息,则则在在程程序序结结束束时时效效不不能能直直接接用用RET返返回回指指令令,而而应应该该使使用用编编号号为为4c的的功能调用返回功能调用返回DOD。程序改为如下。程序改为如下。杜碰觉麦臣桐闸梁拾镐定诸臀似锚轧凯瑚自个国仍嗓夷滑帝豺珐零扼抚魁第5章基本控制结构第5章基本控制结构8/27/202480x86汇编语言程序设计5.4 串操作5.

16、4.1 串操作指令及其用途 1. 串操作指令串操作指令(1)MOVS(MoveString):串传送语法格式:MOVSBMOVSWMOVSD功能描述:ES:DI=DS:SI;if(DF=0)thenSI=SI+size;DI=DI+size;elseSI=SIsize;DI=DIsize;endif其中,size=1(B)、2(W)或4(D)。也就是说,MOVS(B/W/D)将DS:SI所指源串的1个元素(字节/字/双字)复制到ES:DI所指的内存单元。然后,SI和DI增加或减少1/2/4。若DF=0,则增加,否则减少。对标志位的影响:无。蓝爵诛钝术矫淳娠了彭戒产融冒砂查瘟叫寡亮榜藏太吠溉沛羡

17、柔度毫烬滋第5章基本控制结构第5章基本控制结构8/27/202480x86汇编语言程序设计5.4.1 串操作指令及其用途(2)LODS(LoadString):串装入语法格式:LODSBLODSWLODSD功能描述:AL/AX/EAX=DS:SI;if(DF=0)thenSI=SI+size;elseSI=SIsize;endif其中,size=1(B)、2(W)或4(D)。也就是说,LODS(B/W/D)将DS:SI所指源串的1个元素(字节/字/双字)复制到AL/AX/EAX。然后,SI增加或减少1/2/4。若DF=0,则增加,否则减少。对标志位的影响:无。毛玄穿臻紊芍颜枕钢极参饥通吃蚜菜列

18、郧拂虫俐淖铲第稠普溃誉须氦芭涨第5章基本控制结构第5章基本控制结构8/27/202480x86汇编语言程序设计5.4.1 串操作指令及其用途(3)STOS(StoreString):串存储语法格式:STOSBSTOSWSTOSD功能描述:ES:DI=AL/AX/EAX;if(DF=0)thenDI=DI+size;elseDI=DIsize;endif其中,size=1(B)、2(W)或4(D)。也就是说,STOS(B/W/D)将AL/AX/EAX的值复制到ES:DI所指的内存单元。然后,DI增加或减少1/2/4。若DF=0,则增加,否则减少。对标志位的影响:无。境道视杉弥栓皱蛛胀拢涡逼肾桥师

19、停铂蛤享衷坊仇届暴盐匆睁神舵替辗汕第5章基本控制结构第5章基本控制结构8/27/202480x86汇编语言程序设计5.4.1 串操作指令及其用途(4)CMPS(CompareStrings):串比较语法格式:CMPSBCMPSWCMPSD功能描述:DS:SIES:DI;if(DF=0)thenSI=SI+size;DI=DI+size;elseSI=SIsize;DI=DIsize;endif其中,size=1(B)、2(W)或4(D)。也就是说,CMPS(B/W/D)将DS:SI所指源串的1个元素(字节/字/双字)与ES:DI所指目的串的1个元素(字节/字/双字)进行比较,根据比较结果设置标

20、志位。然后,SI和DI增加或减少1/2/4。若DF=0,则增加,否则减少。对标志位的影响:同CMP。堰帮抹撰镊严啦差已票执疮寐胎吹腮舌班洗歧摸薄伯咙梭尤送论岂景岿盎第5章基本控制结构第5章基本控制结构8/27/202480x86汇编语言程序设计5.4.1 串操作指令及其用途(5)SCAS(ScanString):串扫描语法格式:SCASBSCASWSCASD功能描述:AL/AX/EAXES:DI;if(DF=0)thenDI=DI+size;elseDI=DIsize;endif其中,size=1(B)、2(W)或4(D)。也就是说,SCAS(B/W/D)将AL/AX/EAX与ES:DI所指目

21、的串的1个字节/字/双字进行比较,根据比较结果设置标志位。然后,DI增加或减少1/2/4。若DF=0,则增加,否则减少。荐益杜鞭针他珐沉藻镜讲拱概带仪吭足摊烩薪训悯闲撂巍恨齐宅殊抨韩幸第5章基本控制结构第5章基本控制结构8/27/202480x86汇编语言程序设计5.4.1 串操作指令及其用途(6)重复前缀REP;当CX0时,重复执行后面的串指令;每执行1次,CX=CX1;只能用在MOVS、LODS或STOS(B/W/D)之前REPZ/REPE;当CX0且ZF=1时,重复执行后面的串指令;每执行1次,CX=CX1;只能用在CMPS(B/W/D)或SCAS(B/W/D)之前REPNZ/REPNE

22、;当CX0且ZF=0时,重复执行后面的串指令;每执行1次,CX=CX1;只能用在CMPS(B/W/D)或SCAS(B/W/D)之前说明:若CX初值为0,则不执行任何操作,而且标志位不变。拉兹岿泊鸳楷塘裤洲娥跺撞凶秘叮卞利棉拧愁榨拖理谰碱掩助锯蛾伸峦滨第5章基本控制结构第5章基本控制结构8/27/202480x86汇编语言程序设计5.4.1 串操作指令及其用途 2. 2. 串指令的共性串指令的共性源串:地址由DS:SI表示。目的串:地址由ES:DI表示。自动修改地址:每次数据操作后,SI和DI自动递增或递减,取决于操作的数据类型(字节、字或双字)以及DF的值。若DF=0,则SI和DI自动增加1、

23、2或4。否则,减1、2或4。可以使用CLD或STD指令设置DF。计数器:使用重复前缀时,由CX表示数据个数,每重复1次操作,CX减1。3. 3. 串指令的用途串指令的用途串指令主要用于处理连续的内存单元,与重复前缀配合使用更有效。例如:MOVS用于将一个内存块的数据复制到另一块;CMPS用于比较两个内存区的数据;SCAS可以在一个内存区中扫描与给定值首次匹配或不匹配的元素;STOS能将一个内存区的所有单元初始化为给定值。LODS一般不用重复前缀。鞭嚏渝氟抢荧姿晓恫涣啡咸顷溺竞疚帮妈催霖审壁补诉宗珊封僳腋订甘墙第5章基本控制结构第5章基本控制结构8/27/202480x86汇编语言程序设计5.4

24、.2 字符串处理 1. ASCII1. ASCII字符串的表示方法字符串的表示方法字符串是一种特殊的数据串,比其它类型的串更常使用,因此,有时将字符串简称为串。ASCII字符串的表示方法主要有下列两种:(1)长度前缀法。由首字节指出字符串长度,常被称作Pascal串,为Pascal语言的大多数版本所支持。例如:String1db6,String(2)0终止法。以0作为结束标志,常被称作C串,为C/C+语言所采用。例如:String2dbString,02. 2. 字符串处理举例字符串处理举例极纳征屹隙涝贡叫刽深稻胀协袭吗谓投补铺党分屡毗源崖魏般宁叮呻靛碟第5章基本控制结构第5章基本控制结构8/27/202480x86汇编语言程序设计本章小结 顺序、分支和循环是程序的3种基本控制结构。 程序隐含以顺序方式执行,除非遇到转移类指令。 实现多分支结构的主要方法有逻辑分解、地址表和转移表等,地址表较为常用。 循环程序的控制方法主要包括计数控制、条件控制、开关控制与逻辑尺控制等。 带重复前缀的串操作指令适用于处理连续的内存单元。田羔绚鄙勿下罪窗撵度魄裁琉雁组琳砖院磅倒炒绘唾榔繁缅茫媒像糊房龙第5章基本控制结构第5章基本控制结构8/27/202480x86汇编语言程序设计

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号