- 1、本文档共79页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
6汇编语言程序设计.ppt
【例3】设字节单元N1、N2中存放无符号数 (1)若两个均是偶数,则分别加1后送D1 、D2中 (2)若两个均是奇数,则直接送D1 、D2中 (3)若一奇一偶,则把奇数送D1,偶数送D2中 流程图如下: 分支结构程序设计 AL←(N1),AH←(N2) (AL)0≠0 F T (AH)0≠0 AL←(AL)+1,AH←(AH)+1 AL (AH) D1←(AL),D2←(AH) T F 分支结构程序设计 MOV AL,N1 MOV AH,N2 TEST AL,01H JNE ENDO ;N1奇数转 TEST AH,01H JNE L1 ;N2奇数转 INC AL ;两偶数 INC AH JMP ENDO L1: XCHG AL,AH ;交换 ENDO: MOV D1, AL ;存放结果 MOV D2, AH 分支结构程序设计 源程序: 跳转表法实现多路分支原理: 跳转表是在某内存区域顺序排列的一组有规律的语句串的入口地址。 如是段内分支,每个地址占两个单元(IP的值) 如是段间分支,每个地址占4个单元(CS:IP的值) TABLE SUB3 IP IP IP SUB2 SUB1 TABLE IP CS IP CS SUB2 SUB1 段内分支 段间分支 分支结构程序设计 功能:解决需要重复操作的问题,如统计数据个数、多个字符传送等。 循环程序结构: (1)置循环初值部分。 对循环工作部分涉及的寄存器或存储单元设初值;使地址指针指向一个数据区的起始位置;设置循环次数或置循环结束条件等。 (2)循环体部分 也称循环工作部分,是循环程序需重复执行的部分,是循环程序的主体。 (3)循环控制部分 修改循环计数器的值,测试循环结束条件,控制循环次数。 (4)循环结束处理部分 进行循环结束后的数据分析、结果存放等处理。 循环结构程序设计 循环结构程序设计 条件 初始化 循环体 改信息 T F 条件 初始化 循环体 改信息 T F 继续循环条件 退出循环条件 循环控制方式:计数法(减量/增量)、条件控制法 循环类型:运行循环体、判断与控制的先后次序 常规应用方法: 已知循环次数— 增量法:CMP+Jx指令 减量法:①LOOP指令(结束计数为0) ②CMP+Jx指令(结束计数不为0) 未知循环次数— 条件控制法:CMP/TEST+Jx[+JMP]指令 循环结构程序设计 【例1】编程统计BUF字节数据区中0的个数。(减量计数法) 分析:该程序要将数据区中的数据依次与0比较,所以采用循环程序实现,将比较、统计部分作为循环工作部分。 源程序: DATA SEGMENT BUF DB 1,7,0,-4,0,6,-7,9,0,4 COUNT EQU $-BUF ;数据个数赋给COUNT NUM DW ? DATA ENDS STA SEGMENT STACK DB 100 DUP (?) STA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK 循环结构程序设计 START: MOV AX,DATA MOV DS,AX LEA BX,BUF ;数据区首地址送BX MOV CX,COUNT ;赋循环初值 MOV DX,0 ;统计值为0 LOOP1: MOV AL,[BX] ;取第1个数 CMP AL,0 ;测试是否为0 JNE L1 ;不为0转L1取下一个数 INC DX ;为0,DX加1,取下一个数 L1: INC BX LOOP LOOP1 NEXT: MOV NUM,DX ;结果送NUM MOV AH,4CH ;返回DOS INT 21H CODE ENDS END START 循环结构程序设计 【例2】将以S1为起始地址的26个字母依次传送到以S2为起始地址的连续单元中。(减量计数法) DATA SEGMENT S1 DB ‘ABCD……
文档评论(0)