1、5.1 循环结构程序设计(1)初始化部分这是循环的准备部分,为程序操作、地址指针、循环计数、结束条件等设置初始值。(2)循环体 ,包括以下 3个部分:循环工作部分 -这是循环程序的主体,完成程序的基本操作,循环多少次,这部分语句就执行多少次。循环修改部分 -修改循环工作部分的变量地址等,这保证每次重复时,参加执行的数据能发生有规律的变化。循环控制部分 -保证循环条件满足时进入循环;循环结束条件不满足时,退出循环,执行循环体外的后续语句。(3)循环结束部分完成循环结束后的处理,如数据分析、结果的存放等。 第五章循环与分支结构程序设计循环程序典型结构【 例 5.1】 在 ADDR单元中存放着数 Y
2、的地址,试编制一程序把 Y中(指数 Y所有二进制位中包含) 1的个数存入 COUNT单元中。 (PH163.asm)要测出 Y中 1的个数就应逐位测试。一个比较简单的办法是可以根据最高有效位是否为 1来计数,然后用移位的方法把各位数逐次移到最高位去。图 5.2 数 1的程序框图vTITLE 数 1的程序vDATA SEGMENT v ADDR DW NUMBERv NUMBER DW Yv COUNT DW ?vDATA ENDSvCODE SEGMENTvMAIN PROC FARvASSUME CS:CODE, DS:DATAvSTART: PUSH DS v SUB AX, AXv PU
3、SH AXv MOV AX, DATAv MOV DS, AXv MOV CX, 0v MOV BX, ADDR v MOV AX, BXvREPEAT: CMPAX, 0v JZ EXITv JNS SHIFTv INC CXvSHIFT: SHL AX, 1v JMP REPEATvEXIT: MOV COUNT, CX v RET v MAIN ENDPv CODE ENDS v END START v ; 运行时, Y应赋具体值循环程序控制方法之一 -计数法循环次数已知1. 正计数法2. 负计数法计数器的初值为 0,每执行一遍循环,计数器加 1,然后与规定的循环次数比较,若相等,则结束循环,否则继续循环。 计数器的初值为循环次数,每执行一遍循环体后,计数器减 1,当减为 0时,结束循环,否则继续循环。 【 例 5.2】 分别统计 COUNT个数据中正、负数的个数。(P139.asm)DATA SEGMENT BUF DB -32, 25, 36, -18, -64, 0, -3 COUNT EQU $ - BUF PLUS DB ? MINUS DB ? DATA ENDS 数据定义如下: