例:求存放在STRS存储区中的字符串长度。 设: STRS DB string$ MOV CX,80 MOV MOV AL,"$′ again: INC CMP AL, STRS[SI LOOPNE AGAIN MOV leN. SI 44.2循环程序设计方法 控制循环的方法可分为两类: 计数循环——用于循环次数已知的情况 条件循环用于循环次数不确定的情况
MOV CX,80 MOV SI,-1 MOV AL, $ AGAIN: INC SI CMP AL,STRS[SI] LOOPNE AGAIN MOV LEN,SI 4.4.2 循环程序设计方法 控制循环的方法可分为两类: 计数循环——用于循环次数已知的情况 条件循环——用于循环次数不确定的情况 设: STRS DB string$ 例: 求存放在STRS存储区中的字符串长度
例4-16(P90):将字变量nm中的数按16位二进制数位分离 开,逐位转换为ASCI码,并从最高有效位开始依次逐位存入 以 binbuf为起始地址的16个字节单元中。 设:(num)=4230H 要求将4230H=0100001000110000B还位分离开 并转换为 30313030303031303030313130303030 先将(mm)>(DX),再讨论如何分离开各二进制位并转 换为ASCI码,分析如下: 可以使得各个数位的分离(AND)和ASCI码转换(ADD)操 作完全相同,便于组织循环,并且循环次数已知(16次) 此例为计数循环 例4-17(P91):将十进制数( number)转换为八进制数 方法:( number)8保留余数,除法操作循环次数事先未知, 仅当商为0时,循环结束。此例为条件循环 next
例4-16(P90):将字变量num中的数按16位二进制数位分离 开,逐位转换为ASCII码,并从最高有效位开始依次逐位存入 以binbuf为起始地址的16个字节单元中。 设:(num)= 4230H 要求将 4230H= 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 B 逐位分离开 并转换为: 30 31 30 30 30 30 31 30 30 30 31 31 30 30 30 30 先将(num)->(DX),再讨论如何分离开各二进制位并转 换为ASCII码,分析如下: 根据上述分析,将(DX)中的二进制数依次循环左移1位, 可以使得各个数位的分离(AND)和ASCII码转换(ADD)操 作完全相同,便于组织循环,并且循环次数已知(16次)。 例4-17(P91): 将十进制数(number)转换为八进制数 方法:(number)/8 保留余数,除法操作循环次数事先未知, 仅当商为0时,循环结束。此例为条件循环 此例为计数循环 next