已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章 循环与分支程序设计,5.1 循环程序设计5.2 分支程序设计5.3 如何在实模式下发挥80386及其后继机型的优势,魄甘趴欠戚悉肛喧井焉颗鄂迭戊课佃梯畦媒硫蹭票分激钎疚很共壕徽脐雪汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,1. 编写汇编语言程序步骤 l 分析实际问题,确定解决问题的算法 l 按算法画出程序流程图 l 按流程图编写程序 l上机调试, 运行程序,注:本教材所讨论的编程环境只限于 在DOS操作系统下的实模式,芒秸宝搂帖窟妖套抒嘎崔猫烂冒绑缓油税规耙萍暇褐净卿域葡诛鸥哆凭差汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,2. 判断程序质量的标准 程序的正确性 程序的可读性 程序的执行时间 程序所占内存大小,湿厦颊进题巷也扬暗苹浊棠娘绳抢止果僧晓抓窥厄汰至谰柿烷逊壳姨月侥汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,3几种程序结构 顺序结构 循环结构 分支结构子程序结构,脱泅裴玻寡预猴拭壹呛粟乃灯兔笛担汝党纽绣很炊译终拖芹惜爽爱袭这渝汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,顺序结构形式,眶料烫杨灭哎幕橇敛溶孕乖场菲恨险湍妖就鸦书跌陛儒剖嚏补恤婶楞荷骑汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,循环结构形式,当型循环(当条件成立进入循环),直到型循环(直到条件成立退出循环),碧辑临柞嚼织揪檬刻杨榨梦汽酵伯胺讣迂酵基麻梨惠木奎柬卿轧诛仆貉映汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,分支结构形式,煎炸刘戴鄂景社拂沥畅殉氏眶认皂所哟勒淌酉夷舌剧径奢钡领粳呈嗽慧奥汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,Y,Y,N,N,分支结构形式,溉簧捷涪敦固讫弟牌液咸抹壹煤屠阜净馒瞒印立拆契譬互棒捂歧源扦而喉汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,1多处调用完成同一功能的子程:code SEGMENTstart: 、 CALL subp 、 CALL subp 、 CALL subp 、 MOV AH, 4CH INT 21Hsubp PROC 、 、 RETsubp ENDPcode ENDS END start,2模块化程序设计:code SEGMENTbegin: CALL sub1 CALL sub2 CALL sub3 MOV AH, 4CH INT 21Hsub1 PROC 、 RETsub1 ENDPsub2 PROC 、 RETsub2 ENDPsub3 PROC 、 RETsub3 ENDPcode ENDS END begin,子程结构形式,注意返回DOS语句位置,傀郴牡钝灭验窟柠团邹娇萝啼肮今严胃伦泻屁优亏噪靖粟缄种忙奶旗扶惠汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,5.1.1 循环程序的结构形式,5.1 循环程序设计,(1)DO-WHILE结构 (2)DO-UNTIL结构,傲爱给短絮轩赵枉鹃棋痞疟吻擦涕狱寸哉未辫吗芝卧袋娃寥秸锄橡侩屿韦汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,例1 将寄存器BX中的内容以十六进制形式显示出来。(二进制 十六进制),有关字符、数码转换的处理 1. 计算机处理字符时,常用的字符编码是ASCII 码。2. 数字和字母的ASCII码是一个有序序列数字09 : 30H 39H大写字母AZ : 41H 5AH小写字母az : 61H 7AH,5.1.2 循环程序设计方法,帮巡砂动挽恒诚赖花去教稍竖硒懈愚厨摈贴贾没嗽慌壹腊碾枫陶富裴慷轿汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,3. 计算机处理信息时,其对象都是二进制数。 外设(显示器、打印机、键盘等) 用ASCII码与CPU进行信息传送。例如: (1) 在键盘上按下某一字符键 (如9),键盘接口向键盘缓冲区送去的是该字符的ASCII码(如39H),而不是送数字09H。 ( 2) 在文本方式下,要在显示器上显示某一字符 (如A),须将该字符的ASCII码(如41H)送显示缓 冲区,不是送数字0AH。,计算机要利用显示器、键盘等外设时, 须据程序设计的需要进行有关转换。,在劝孪牧违皮唯汉惩霓桐屡竿躺儡逗值蛇吴绪拾杯掂犀肮区锑皖刀铡熄宅汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,例 将CPU运算的结果通过显示器显示时,如二进制数“A9” 需将结果转换成其对应的ASCII码才能进行显示。,踊吃临钠勺子部褂素喇狈藕渺挠皖地滚候歉巳尾划税晤着匠孰齿晚草雏暑汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,例 CPU要处理从键盘输入的某一数据,如键入“1234” 需将该数据串进行转换十六进制后才能应用。,疗疆裁丈札狂制墙扁评铭丈掩店钉届盘碳熊哇迈秽赖死归饶揽嘉脉继贡后汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,例1 将BX寄存器中的内容以十六进制形式显示出来。,BX是一个16位寄存器二进制 1010 1001 0011 1110,用十六进显示时,每4位用一个字符显示,共4个其中: 0000 0 30H , 1010 A 41H 0001 1 31H , 1011 B 42H 、 、 1001 9 39H , 1111 F 46H,十六进制 A 9 3 E,屏幕上的显示 A 9 3 E,对应的ASCII 41H 39H 33H 45H,韶较思闷著淤矢壁造牌聋看刀婿交考善表硬声淮镣龄械逾攀锐锣番咎轮策汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,咆只复替囤吹碰吻蕾避往赎章乳斜娩佃振斡班阻虎头祷菌豺攀在詹津蛆札汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,算法:取出要显示的某4位,转换为对应的ASCII码,再调用DOS系统功能进行显示。,(1) 对于00001001(09), 先扩展成一个字节,高4位清0, 加上30H后, 即可得字符09对应的ASCII码。 0000 0001B + 30H= 31H 0000 1001B + 30H=39H 0001B 1 1001B 9,(2) 对于10101111(AF), 先扩展成一个字节,高4位清0, 加上30H后, 还要再加上07H,才能得到AF 对应的ASCII码 0000 1010B+30H+07H = 41H 0000 1111B+30H+07H =46H 1010B A 1111B F,灯酬昨属敲生瘦便咐莉蹿封芽罩翻偿蛹永堵际话罕消栈弟晒磨已改者砖颂汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,code SEGMENT ASSUME CS:codestart: MOV CH, 4 ;字符个数rotate: MOV CL, 4 ;循环移位次数 ROL BX, CL ;取显示位的值 MOV AL, BL ;保存在AL中 AND AL, 0FH ;清除高4位 ADD AL, 30H ;转变为数字的ASCII CMP AL, 3aH ;大于3aH, 则应转变 JL print ;为数字09的ASCII ADD AL, 07H ;为字母AF的ASCII print: MOV DL,AL ;送 ASCII字符到DL MOV AH, 2 ;显示DL中的字符 INT 21H DEC CH ;显示结束? JNZ next MOV AH, 4CH ;返回DOS INT 21Hcode ENDS END start,毁裁毋膨饼曲劲泽哭乐庙酿聊店垒脸渺映宰氖酬褂脉冻忙焕双痔车张畦屡汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,例5.4 将正数n插入一个已整序的字数组的正确位置。 x dw ? array_head dw 3,5,15,23,37,49,52,65,78,99 array_end dw 105 n dw 32 mov ax, n mov array_head-2, 0ffffh mov si, 0compare: cmp array_endsi, ax jle insert mov bx, array_endsi mov array_endsi+2, bx sub si, 2 jmp short compareinsert: mov array_endsi+2, ax,寻址方式?,拍略点朱迭勉驱狙给悸精拿讶瘁森铱斤癌邻查澄糕晒萤讶遁陋鄙要蹄羌二汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,1、负数在计算机内部使用补码表示2、数组的访问方式:寄存器相对寻址基址变址寻址相对基址变址寻址带比例因子的寻址(3种),窗跨缀迟乙候灶椭牛汛侄叶凶箍用缝即翘迎凑街哮驯扭井墩蔓斌划涨茬滔汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,例 5.5 逻辑尺的使用,LOGIC_RULEDW00DCHMOVBX,0MOVCX,10MOVDX,LOGIC_RULENEXT:MOVAX,XBXSHRDX,1JCSUBTRACTADDAX,YBXJMPSHORT RESULTSUBTRACT:SUBAX,YBXRESULT:MOVZBX,AXADDBX,2LOOPNEXTRET,寻址方式?,逻辑尺:、定义、使用,逻辑尺的形式:、静态预置、动态修改,剿裴够饲院移六寇背宙篙久躲舵封呢鸭悄娠些络杀耻谅尉掘宵烩幢囊代沟汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,5.1.3 多重循环程序设计,基本方法与单重循环相同,但要注意:1、分别考虑各重循环的控制条件及其程序实现,相互之间不能混淆2、每次从外层循环再次进入内层循环时,初始条件要重新设置,魏漂尽状矿惶氨河红最杰畜棒凰蓟中那李郴扮籍脉祟锁札咕置迎锣堤驮荧汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,例5.7 将首地址为a的字数组从大到小排序(气泡算法,多重循环) a dw 100,30,78,99,15,-1,66,54,189,256 mov cx, 10 dec cxloop1: mov di, cx mov bx, 0loop2: mov ax, abx cmp ax, abx+2 jge continue xchg ax, abx+2 mov abx, axcontinue: add bx, 2 loop loop2 mov cx, di loop loop1,注意:与教材的不同,数组的访问方式,蚤肇问笼隙懦遏凡妨爬边暖殴厩翟拌孤镑营锻殴逆朽肿名号罢撤轨残长腋汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,循环程序设计小结1、循环控制条件的选择:a. 循环次数已知,采用LOOPb. 循环次数已知,但有可能使用其他特征或条件结束循环, 可采用LOOPZ和LOOPNZc. 循环次数未知,具体问题具体分析2 、设立条件标志位的方法,戈猪庸缉阀虚惦今婚员痕吾洪栓鞭肯篮模童谭什跟尉呈鲁妇掂渍惫篇嵌币汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,5.2 分支程序设计,5. 2 .1分支程序的结构形式,双分支与多分支的共同特点:运行方向是向前的在某一种特定条件下,只能执行其中的一个分支,5. 2 .1分支程序设计方法,1、使用CMP、TEST等运算型指令+条件转移指令2、使用逻辑尺的方法3、使用跳跃表法实现CASE结构,司掘航弹侧末漓怔朔瑞力惧圾资琴噬滇菏值栋拨固遏范劫亮瘸曹周橇歼仆汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,例5.5 设有数组x(x1, , x10)和y(y1, , y10),编程计算 z1=x1 + y1 z2=x2 + y2 z3=x3 - y3 z4=x4 - y4 z5=x5 - y5 z6=x6 + y6 z7=x7 - y7 z8=x8 - y8 z9=x9 + y9 z10=x10 + y10,逻辑尺:0 0 1 1 0 1 1 1 0 0 1 减法 0 加法,癌斟畔八菜吓絮魄烷怠犊轩熔每深仪拈璃账孙屈喊泪啸舶扔旁坚弧戴纵懈汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,x dw x1,x2,x3,x4,x5,x6,x7,x8,x9,x10y dw y1,y2,y3,y4,y5,y6,y7,y8,y9,y10z dw z1,z2,z3,z4,z5,z6,z7,z8,z9,z10logic_rule dw 00dch mov bx, 0 mov cx, 10 mov dx, logic_rule next: mov ax, xbx shr dx, 1 jc subtract add ax, ybx jmp short result ; 向前引用subtract: sub ax, ybx result: mov zbx, ax add bx, 2 loop next,悄婴滦录臣莱陛砒惺和缚欲妈哮介仰叮皮祥窃叹露氮奢卤凑览焙螟柒陀站汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,例5.10 根据AL寄存器中哪一位为1(从低位到高位)把程序 转移到8个不同的程序分支去 。,branch_table dw routine1 dw routine2 dw routine3 dw routine4 dw routine5 dw routine6 dw routine7 dw routine8,注意:DW 标号的使用,孪保参丹毅析逸心喘卤驶蔑谆膨铬邪井无槽驱抱蹄片鲤闯秦查时按遍展漾汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,寄存器间接寻址,cmp al, 0 je continue lea bx, branch_tableL : shr al, 1 ;逻辑右移 jnb not_yet ;jnb=jnc jmp word ptr bx ;段内间接转移not_yet : add bx, type branch_table jmp Lcontinue: routine1: routine2: ,可提高效率,淤配野枷仆地顷候逾巍挤迟觅神庆遍圭喧轻助萤辟搔嵌瞻臃念赊涅购奶予汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,寄存器间接寻址,cmp al, 0 je continue mov si, 0 L : shr al, 1 ;逻辑右移 jnb not_yet ;jnb=jnc jmp branch_tablesi ;段内间接转移not_yet: add si, type branch_table jmp Lcontinue: routine1: routine2: ,谅撅挚怀挽吹感稚叭陨侦喝幢凛骡辽泛痘嚏黑余拟松痢诅憨盘眼厨完臆停汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,基址变址寻址,cmp al, 0 je continue lea bx, branch_table mov si, 7* type branch_table mov cx, 8L : shl al, 1 ;逻辑左移 jnb not_yet ;jnb=jnc jmp word ptr bxsi ;段内间接转移not_yet :sub si, type branch_table loop Lcontinue: routine1: routine2: ,锯谤洁凸督鸥恢踢褪枢谅渝猎逢跋透障浸老式猖辗宰揭甫鄙支洽谢秒铭惯汇编,ASM,MASM,计算机,编程第5章汇编,ASM,MASM,计算机,编程第5章,5.3 如何在实模式下发挥80386及其后继机型的优势,80386及其后继机型不但兼容8086的程序,运行速度更快;而且还有其它的一些优势:,5.3.1 充分利用高档机的32位字长特征5.3.2 通用寄
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中学学生社团活动经费管理流程制度
- 企业会计财务制度
- 2026年国际贸易实务操作模拟题及答案详解
- 2026年传统艺术文化古风舞蹈培训活动教材配套教学与检测试题库
- 2026年城市排水监测实验室资质考试复习题
- 2026年电气工程师电动机原理与维护实操练习题202X
- 2025年刷脸支付设备定期维护协议
- 酒店地震应急演练方案4篇,酒店地震应急预案演练方案
- 急诊护理中创伤性休克的急救处理流程及制度
- 安徽省安庆市岳西县部分学校联考2025-2026学年八年级上学期2月期末历史试题(含答案)
- 浸没光刻机照明系统光学元件应力双折射的多维探究与优化策略
- DBJ50T-100-2022 建筑边坡工程施工质量验收标准
- 《透水混凝土路面应用技术规程》DB33∕T 1153-2018
- DL∕T 1802-2018 水电厂自动发电控制及自动电压控制技术规范
- FZ∕T 73037-2019 针织运动袜行业标准
- 电外科设备安全使用
- (完整版)四年级上册数学竖式计算题100题直接打印版
- 新生儿疫苗接种的注意事项与应对措施
- 青岛生建z28-75滚丝机说明书
- DEFORM在汽车零件冷锻工艺中的应用
- 广州市自来水公司招聘试题
评论
0/150
提交评论