当前位置:文档之家› 汇编 多字节加法

汇编 多字节加法

;************************************************** ********************; input beijianshu: TempRam1, TempRam2 TempRam3 ; jiashu: TempRam4,TempRam5,TempRam6; output:; TempRam1, TempRam2 TempRam3;************************************************** ********************_Sub3_3:clr cmov A,TempRam3s ubb A,TempRam6m ov TempRam3,Amov A,TempRam2subb A,TempRam5mov TempRam2,Am ov A,TempRam1subb A,TempRam4mov TempRam1,Aret;************************************************** ********************; input TempRam2, TempRam3 TempRam4, TempRam5, TempRam6; TempRam11,TempRam12,TempRam13; output:; yushu: TempRam1, TempRam2, TempRam3; shan: TempRam4, TempRam5, TempRam6; Need: buffer0,buffer1,buffer2,buffer3;************************************************** ********************_Div6_3:m ov TempRam1,#00Hm ov Buffer3,#24J mp _Div6_3Loop_Div4_2:m ov TempRam1,#00Hm ov TempRam2,#00Hm ov TempRam11,#00Hm ov Buffer3,#24_Div6_3Loop:c lr Cmov A,TempRam6rlc Amov TempRam6,Amov A,TempRam5rlc Amov TempRam5,Amov A,TempRam4 rlc Amov TempRam4,Amov A,TempRam3rlc Amov TempRam3,Amov A,TempRam2rlc Amov TempRam2,Amov A,TempRam1rlc Amov TempRam1,Aclr cmov A,TempRam3subb A,TempRam13mov Buffer2,Amov A,TempRam2subb A,TempRam12mov Buffer1,Amov A,TempRam1subb A,TempRam11mov Buffer0,Ajc_Div6_3Loop1mov TempRam1,Buffer0mov TempRam2,Buffer1mov TempRam3,Buffer2inc TempRam6_Div6_3Loop1:djnz Buffer3,_Div6_3Loopret;**********************************************************************;input : TempRam4,TempRam5, TempRam6; TempRam12,TempRam13;output:TempRam1,TempRam2,TempRam3,TempRam4,TempRam5,TempRam6;Need : buffer0 ,buffer1 ,buffer2,buffer3,buffer4,buffer5,B uffer6;************************************************** ********************_Mul3_2:mov Buffer0,#00Hmov Buffer1,#00Hmov Buffer2,#00Hmov Buffer3,TempRam4mov Buffer4,TempRam5mov Buffer5,TempRam6mov TempRam1,#00Hmov TempRam2,#00Hmov TempRam3,#00Hmov TempRam4,#00Hmov TempRam5,#00Hmov TempRam6,#00Hmov Buffer6,#16_Mul3_2Loop:mov A,TempRam12rrc Amov TempRam12,Amov A,TempRam13rrc Amov TempRam13,Ajnc _Mul3_2Loop1mov A,Buffer5add A,TempRam6 mov TempRam6,Amov A,Buffer4addc A,TempRam5 mov TempRam5,Amov A,Buffer3addc A,TempRam4 mov TempRam4,Amov A,Buffer2addc A,TempRam3 mov TempRam3,Amov A,Buffer1addc A,TempRam2 mov TempRam2,Amov A,Buffer0addc A,TempRam1 mov TempRam1,A_Mul3_2Loop1:clr cmov A,Buffer5rlc Amov Buffer5,Amov A,Buffer4rlc Amov Buffer4,Amov A,Buffer3rlc Amov Buffer3,Amov A,Buffer2rlc Amov Buffer2,Amov A,Buffer1rlc Amov Buffer1,Amov A,Buffer0rlc Amov Buffer0,Adjnz Buffer6,_Mul3_2Loopret;************************************************** ********************; change to BCD code; input : TempRam11,TempRam12 ,TempRam13; Output:TempRam1,TempRam2, TempRam3 ,TempRam4 ,TempRam5 ,TempRam6; need: Buffer0,Buffer1,Buffer2 Buffer4 Buffer5;**********************************************************************_Ftob:mov TempRam1,#00Hmov TempRam2,#00Hmov TempRam3,#00Hmov TempRam4,#00Hmov TempRam5,#00Hmov TempRam6,#00Hmov Buffer0,#01Hmov Buffer1,#86Hmov Buffer2,#0A0HSub100KLoop:clr cmov A,TempRam13subb A,Buffer2mov Buffer5,Amov A,TempRam12subb A,Buffer1mov Buffer4,Amov A,TempRam11subb A,Buffer0jc Sub10Kmov TempRam11,Amov TempRam12,Buffer4mov TempRam13,Buffer5inc TempRam1JMP Sub100KLoopSub10K:mov Buffer0,#00hmov Buffer1,#27hmov Buffer2,#10hSub10kLoop:clr cmov A,TempRam13subb A,Buffer2mov Buffer5,Amov A,TempRam12subb A,Buffer1mov Buffer4,Amov A,TempRam11subb A,Buffer0jc Sub1Kmov TempRam11,Amov TempRam12,Buffer4mov TempRam13,Buffer5inc TempRam2Jmp Sub10kLoopSub1k:mov Buffer0,#03Hmov B uffer1,#0E8HSub1kLoop:clr cmov A,TempRam13subb A,Buffer1mov Buffer2,Amov A,TempRam12subb A,Buffer0jc Sub100mov TempRam12,Amov TempRam13,Buffer2inc TempRam3Jmp Sub1kLoopSub100:mov Buffer0,#00hmov Buffer1,#64hSub100Loop:clr cmov A,TempRam13subb A,Buffer1mov Buffer2,Amov A,TempRam12subb A,Buffer0jc Sub10mov TempRam12,Amov TempRam13,Buffer2inc TempRam4Jmp Sub100Loopsub10:mov Buffer1,#10sub10Loop:clr cmov A,TempRam13subb A,Buffer1jc Sub1mov TempRam13,Ainc TempRam5Jmp Sub10Loopsub1:mov TempRam6,TempRam13ret;************************************************** ********************; Beiqushu:TempRam6 qushu:TempRam13; shan:TempRam6 yushu:TempRam5; temp:Buffer0;************************************************** ********************_Div:mov TempRam5,#00Hmov Buffer0,#8_Div_loop:clr Cmov A,TempRam6rlc Amov TempRam6,Amov A,TempRam5rlc Amov TempRam5,Aclr cmov A,TempRam5subb A,TempRam13jc_Div_Loop1mov TempRam5,Ainc TempRam6_Div_Loop1:djnz Buffer0,_Div_Loopret;************************************************** ********************; BCD code change to; input: BtoFH BtoFL;output: BtoFH BtoFL;************************************************** ********************_BtoF:mov TempRam6,BtoFLmov TempRam13,#16call_Divmov BtoFL,TempRam5 ;余数为低4bit,表示个位mov TempRam4,#00Hmov TempRam5,#00Hmov TempRam12,#00Hmov TempRam13,#10 ;商为高4bit,表示十位call_Mul3_2mov A,TempRam6add A,BtoFLmov BtoFL,Amov TempRam6,BtoFH ;先将高字节转为16进制mov TempRam13,#16call_Divmov BtoFH,TempRam5mov TempRam4,#00Hmov TempRam5,#00Hmov TempRam12,#00Hmov TempRam13,#10call_Mul3_2mov A,BtoFHadd A,TempRam6mov TempRam6,Amov TempRam4,#00H ;因高字节表示有多少个"100"mov TempRam5,#00Hmov TempRam12,#00Hmov TempRam13,#100call_Mul3_2mov BtoFH,TempRam5mov A,TempRam6add A,BtoFLmov BtoFL,Amov A,#0addc A,BtoFHmov BtoFH,Aret;**********************************************************************; input beichushu: TempRam1,TempRam2, TempRam3 TempRam4, TempRam5,; TempRam6,TempRam7,TempRam8; chushu: TempRam10,TempRam11,TempRam12,TempRam13; output yushu: TempRam1, TempRam2,TempRam3 ,TempRam4; shang: TempRam5, TempRam6,TempRam7,TempRam8; Need: buffer0,buffer1,buffer2,buffer3,Buffer4;**********************************************************************_Div8_4:mov TempRam1,#00Hmov TempRam2,#00Hmov Buffer4,#32_Div8_4Loop:clr Cmov A,TempRam8rlc Amov TempRam8,Amov A,TempRam7 rlc Amov TempRam7,Amov A,TempRam6 rlc Amov TempRam6,Amov A,TempRam5 rlc Amov TempRam5,Amov A,TempRam4 rlc Amov TempRam4,Amov A,TempRam3 rlc Amov TempRam3,Amov A,TempRam2 rlc Amov TempRam2,Amov A,TempRam1 rlc Amov TempRam1,Aclr cmov A,TempRam4subb A,TempRam13mov Buffer3,Amov A,TempRam3subb A,TempRam12mov Buffer2,Amov A,TempRam2subb A,TempRam11mov Buffer1,Amov A,TempRam1subb A,TempRam10mov Buffer0,Ajc_Div8_4Loop1mov TempRam1,Buffer0mov TempRam2, Buffer1mov TempRam3, Buffer2mov TempRam4, Buffer3inc TempRam8_Div8_4Loop1:djnz Buffer4,_Div8_4Loopret;************************************************** *******************************_Neg3:jnc _Neg3_Loopmov A,TempRam3cpl Aadd A,#1mov TempRam3,Amov A,TempRam2cpl Aaddc A,#0mov TempRam2,Amov A,TempRam1cpl Aaddc A,#0mov TempRam1,A_Neg3_Loop:ret。

相关主题