第四章 汇编编程.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 汇编编程

鲁东大学 LUDONG UNIVERSITY 分支结构程序设计 EX3:编写程序,完成下面的分段函数的计算(X为单字带符号数据) Y = 1 0 X0 X=0 -1 X0 分析: 程序有三条分支 两个条件,是否等于零和正/负数 两个条件判断的无先后 AL0? X-AL 0送AL AL存回Y Y N AL=0? 1送AL Y -1送AL N 源程序 多种判断组合 JGE+JE JLE+JE JE+JG 鲁东大学 LUDONG UNIVERSITY 分支结构程序设计 EX4:利用地址表实现多分支结构 实现类似于菜单的功能,在按下按键1,2,3,4时,分别调用分支ADDD,SUBD,MULD和DIVD进行加、减、乘、除运算 地址表实现多分支结构,需要在定义一块专门存放各分支入口地址的数据区,程序中利用间接转移指令,实现相应的跳转 ADDD入口 偏移地址 SUBD入口 偏移地址 MULD入口 偏移地址 DIVD入口 偏移地址 Tbl 求分支号 分支入口地址在地址表中 有效地址=起始地址+分支号*2 JMP [有效地址] 跳转到相应分支入口执行 [有效地址]即为入口地址 tbl dw addd,subd,muld,divd 源程序 鲁东大学 LUDONG UNIVERSITY 分支结构程序设计 DATA SEGMENT TBL DW ADDD,SUBD,MULD,DIVD DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: … JMP [BX] ADDD: … JMP exit SUBD: … JMP exit MULD: … JMP exit DIVD: … JMP exit exit: … CODE ENDS END START MOV BX,OFFSET TBL MOV AH,01H INT 21H AND AL,0FH SHL AL,1 ADD BL,AL ADC BH,0 鲁东大学 LUDONG UNIVERSITY 循环结构程序设计 循环结构程序的组成 初始化部分 循环体 参数修改部分 循环控制部分 计数器 地址指针 寄存器 存储单元 计数器 地址指针 状态位 为进入下一次循环做准备 Loop指令 J条件 Do_Until 循环次数已知,使用Loop指令 循环次数未知,使用条件转移指令 各异 初始化 循环体 参数修改 循环控制 DO_until 初始化 循环体 参数修改 循环控制 While_do 鲁东大学 LUDONG UNIVERSITY 循环结构程序设计 EX1:编程完成求1~50之间自然奇数的和,结果送到result单元 分析:循环的次数是否可知? CX-25;循环次数 AX-0;和 DX-1;当前加数 AX-AX+DX DX-DX+2 LOOP Reslut-AX EX2:编程完成求1~N的累加和,直到和超过1000为止,统计累加数的个数送CN,和送SUM 分析:循环的次数是否可知? AX-0;和 DX-1;当前加数 AX-AX+DX DX-DX+1 比较AX和1000 SUM-AX;CN-DX AX1000? N Y EX1源程序 EX2源程序 1~50之间共有25个奇数,故循环次数可知,使用loop指令 未知,故用条件转移指令控制循环,和1000 鲁东大学 LUDONG UNIVERSITY 循环结构程序设计 EX3:把从BUF单元开始的80个16位无符号数按从大到小的顺序排列 冒泡法排序:N个数排序 嵌套循环 共需找N-1次当前最大/最小数 查找当前最大/小数,需比较j次 i为外层循环控制参数 i=N-1 j=i J为内层循环控制参数 相邻比较,根据需要交换 比较计数j=0? Y N 外层计数i=0? 结束 Y 嵌套循环注意问题 外层循环初始化应在整个循环体之外;内层循环初始化,应在外层循环体内,内层循环体外 内层循环包含在外层循环体之中 如果均使用Loop,内外层同用CX做计数值,需要在内循环体之外保护,退出内循环后恢复 鲁东大学 LUDONG UNIVERSITY 循环结构程序设计 外层初始化CX=N-1 指针BX指向buf起始位置 保护外层CX|内层CX初始化 比较[BX]和[BX+2] 字型 [BX]和[BX+2]交换位置 [BX] =[BX+2]? N

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档