ORG 0000H
JMP A1
ORG 002BH
JMP A1
ORG 002BH
A1: MOV R0,#0;數(shù)據(jù)處理寄存器高位(乘積高8位)
MOV R1,#0;數(shù)據(jù)處理寄存器低位(乘積高中8位)
MOV R1,#0;數(shù)據(jù)處理寄存器低位(乘積高中8位)
MOV R2,#255;被乘數(shù)高位(乘積低中8位)
MOV R3,#255;被乘數(shù)低位(乘積低8位)
MOV R3,#255;被乘數(shù)低位(乘積低8位)
MOV R4,#255;乘數(shù)高位
MOV R5,#255;乘數(shù)低位
MOV R5,#255;乘數(shù)低位
MOV 30H,#16;循環(huán)次數(shù)--8位二進制數(shù)相乘8次4位則4次
A2:
CLR C;清C
MOV A,R3;
JNB ACC.0,A3;判斷被乘數(shù)第0位是否為0是則不用相加
A2:
CLR C;清C
MOV A,R3;
JNB ACC.0,A3;判斷被乘數(shù)第0位是否為0是則不用相加
MOV A,R1;不為0則相加
ADD A,R5;乘數(shù)低位與處理后數(shù)據(jù)低位相加
MOV R1,A;數(shù)據(jù)存回數(shù)據(jù)處理低位寄存器
ADD A,R5;乘數(shù)低位與處理后數(shù)據(jù)低位相加
MOV R1,A;數(shù)據(jù)存回數(shù)據(jù)處理低位寄存器
MOV A,R0
ADDC A,R4;乘數(shù)低位與處理后數(shù)據(jù)高位相加上面相加可能溢出所以用ADDC
MOV R0,A;數(shù)據(jù)存回數(shù)據(jù)處理高位寄存器
ADDC A,R4;乘數(shù)低位與處理后數(shù)據(jù)高位相加上面相加可能溢出所以用ADDC
MOV R0,A;數(shù)據(jù)存回數(shù)據(jù)處理高位寄存器
A3: MOV A,R0;先右移高位
RRC A;相加可能溢出所以用RRC
MOV R0,A;
RRC A;相加可能溢出所以用RRC
MOV R0,A;
MOV A,R1;在右移低位
RRC A;RRC把高位的數(shù)移入低位
MOV R1,A
RRC A;RRC把高位的數(shù)移入低位
MOV R1,A
MOV A,R2;
RRC A;將處理后的數(shù)移到被乘數(shù)高位
MOV R2,A;
RRC A;將處理后的數(shù)移到被乘數(shù)高位
MOV R2,A;
MOV A,R3;
RRC A;將處理后的數(shù)移到被乘數(shù)低位
MOV R3,A;
DJNZ 30H,A2;是否完成
NOP
NOP
NOP
JMP $
RRC A;將處理后的數(shù)移到被乘數(shù)低位
MOV R3,A;
DJNZ 30H,A2;是否完成
NOP
NOP
NOP
JMP $
END