|
使用二進制數做2位數BCD減法(即做二個數補碼的加法),但須注意調整其相減結果成為正確的BCD數。 1.如果差的低4位(LSD)>9,則 從LSD減去6(產生的DC被加到下一位數) 2.步驟1它成后,如果差的高4位(MSD)>9,則從MSD減去6。 一般擴展到二位數以上時,每個BCD位都使用以上的原則,標志的測試(步驟2)是在二補碼的加法完成后進行,當0X20=9,結果是VE,取十補碼以取得它的值。 2. 程序: mov Num-1 , A mov A ,@0x99 mov Num-2 , A call BCDSUB mov A , @0X99 mov Num-1, A mov A , @0x00 mov A , Num-2 call BCDSUB SELF goto SELF end Num-1=0X20 Result=0X20 Num-2=0X21 0-flow=0X21; BCDADD mov A,Num-1;做二進制減法 SUb Num-2, A CLR Num-1; RLC Num-1; 保存進位 JBS STATUS, DC; DC=1? JMP Adjust; 不是,LSD調整 JBS Num-2, 3 JMP Over-1 JBC Num-2,2 JMP adjust1;LSD結果調整 JBS Num-2,1 JMP Over-1 Adjst1 mov A ,@6 ;不是,轉到MSD進行處理 JMP over1 ;LSD調整(減6) Sub Num-2,A Over-1 JBS Num-1,0 ;C=0? JMP adjst2 ;是,進行MSD調整 CLR Num-1 JBS Num-2,7 ;不是,MSD>9? RET JBC Num-2 ,6 JMP Adjst2 JBS Num-2 ,5 RET adjst2 mov A , @0X60 ; MSD調整 Sub Num-2 , A CLR Num-1 , JBS STATS,C MOV A , 1 MOV Num-1,A Over RET <!-- Search Google --> |