- 1、本文档共66页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第11~12讲第4章汇编语言程序设计分析
第4章:教学要求 掌握简化段定义源程序格式 掌握常量表达、变量定义及应用、变量和标号的属性及操作符 掌握汇编语言源程序的编辑、汇编、连接和调试的开发方法 掌握基本伪指令和操作符: EQU/=;+-*/;DB/DW/DD、?/DUP;ORG/$、OFFSET/SEG/PTR;.MODEL/.STACK/.DATA/.CODE/END;PROC/ENDP 第4章 教学要求 1. 掌握基本程序结构――顺序结构、分支结构、循环结构、子程序及其汇编语言程序设计 2. 熟悉常见程序设计问题: 多精度运算、查表(查代码、特定值等) ASCII、BCD及十六进制数据间的代码转换 数据范围判断(0~9、A~Z、a~z) 字母大小写转换;字符串传送、比较等操作 求最小最大值、数据求和、统计字符个数 子程序的寄存器和共享变量传递参数 */18 内初始化 内循环体 内控制 否 循环结构:强制CPU重复执行某一指令系统(程序段)的一种程序结构形式。循环结构程序简化了程序清单书写形式,减少了占内存空间,但总的程序执行语句和时间会有所增加。 循环程序组成:初始化、循环体、循环控制和循环结束处理。 循环结构-小结 开始 初始化 循环体 修改 结束处理 结束 循环控制 否 是 建立循环次数计数器,设定内存地址指针初值,装入暂存单元的初值。 程序的处理部分。 修改变量和指针,为下一次循环做准备,修改循环计数器值。判断循环次数到了没有? 分析和存放程序处理结果。 开始 结束处理 结束 是 外初始化 外循环体 外控制 否 */18 循环程序控制方式 计数控制 事先已知循环次数,每次循环时加或减计数,通过判定总次数是否达到已知的循环次数来控制循环。 条件控制 事先不知道循环次数,执行循环时通过判定某种条件的真假来控制循环。 状态控制 循环次数未定义,事先设定某个二进制位的状态,或由外界干预、测试得到的开关状态,来决定循环与否。 * * * * * 例题 求绝对值 ;计算AX的绝对值 cmp ax,0 jns no_neg ;分支条件:AX≥0 neg ax ;条件不满足,求补 no_neg: mov result,ax ;条件满足 ;计算AX的绝对值 cmp ax,0 js yesneg ;分支条件:AX<0 jmp nonneg ;分支条件:AX=0 yesneg: neg ax ;条件不满足,求补 nonneg: mov result,ax ;条件满足 Good Bad 例题 无符号数除以2(自学) ;AX中存放的无符号数;如果是偶数除以2,如果是奇数,则加1后除以2 test ax,01h ;测试AX最低位 jz even ;最低位为0:AX为偶数 add ax,1 ;最低位为1:AX为奇数,需要加1 even: rcr ax,1 ;AX←AX÷2 ;如果采用SHR/SAR指令,则不能处理AX=FFFFH的特殊情况 分析命题 确定算法 画流程图 开始 取十六进制数 X+30H 0=X=9 Y N 0A=X=0FH X+37H 结束 Y N 分支程序设计 例:写一个实现把一位十六进制数转化为对应ASCII码的程序。 流程图的例子 分析命题 确定算法 画流程图 编写程序 上机调试 JMP LAB2 LAB1: ADD AL,37H LAB2: MOV ASCII,AL MOV AH,4CH INT 21H CODE ENDS END START DATA SEGMENT XX DB 4 ASCII DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,0FH CMP AL,9 JA LAB1 ADD AL,30H 分支程序设计 例:写一个实现把一位十六进制数转化为对应ASCII码的程序。 双分支程序设计 条件成立跳转执行第2个分支语句体,否则顺序执行第1个分支语句体。注意第1个分支体后一定要有一个JMP指令跳到第2个分支体后 例题
文档评论(0)