1.如果差的低4位(LSD)>9,则 从LSD减去6(产生的DC被加到下一位数)
2.步骤1它成后,如果差的高4位(MSD)>9,则从MSD减去6。
一般扩展到二位数以上时,每个BCD位都使用以上的原则,标志的测试(步骤2)是在二补码的加法完成后进行,当0X20=9,结果是VE,取十补码以取得它的值。

2. 程序:
main MOV a , @0x23 ; 主程序
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