|
本例為單字節(jié)二進(jìn)制數(shù)(0X20)轉(zhuǎn)換為非壓縮BCD 碼,存在0X25,0X24,0X23 中,0X25 為百位,0X23 為個位。 main: MOV a,@0xa4 ;賦值 MOV 0x20,a MOV 0x21,a MOV 0x22,a MOV a,@0x0 ;0x23,0x24,0x25 單元清0 MOV 0x23,a MOV 0x24,a MOV 0x25,a MOV a,@0x64 ;對100 的個數(shù)計數(shù) MOV 0x26,a MOV a,@0x25 ;百位存在0x25 中 MOV 0x04,a call a0 ;調(diào)計數(shù)子程 MOV a,@0x0a ;對10 的個數(shù)計數(shù) MOV 0x26,a dec 0x04 ;個位存在0x24 中 call a0 MOV a,0x22 ;除去百位,十位,余下的即個位,存入0x23 MOV 0x23,a self: jmp self a0: ;計數(shù)子程 MOV a,0x26 sub 0x22,a jbs 0x03,2 jmp a1 inc 0x00 ;無余數(shù)則對應(yīng)位加1 MOV a,@0x0 ;0x21 與0x22 在返回時應(yīng)保持相同 MOV 0x21,a ret a1: jbs 0x03,0 ;小于則跳a2 jmp a2 inc 0x00 ;大于則計數(shù)值加1 MOV a,0x22 MOV 0x21,a ;將0x22 保存到0x21 中 jmp a0 ;跳回a0 繼續(xù)計數(shù) a2: MOV a,0x21 ;0x21 中保存的減之前的數(shù)據(jù),此時恢復(fù)到0x22 MOV 0x22,a ret eop |