第1个回答 2009-11-30
按你要求试编,未经调试,不一定正确,仅供参考。
4ADD:CLR C;清零进位位
MOV R4,#4;字节计数初值
MOV 30H,#RESULT;结果地址计数初值
KKKK:MOV A,@R0;取被除数加数
ADDC A,@R1;带进位加一个字节
INC R0;被加数计数加1
INC R1;加数计数加1
MOV 31H,R0;暂时保存被加数计数值
MOV R0,30H;取结果地址计数值
MOV @R0,A;存放本次运算结果
INC R0;结果地址计数值加1
MOV 30H,R0;保存结果地址计数值
MOV R0,31H;恢复保存被加数计数值
DJNE R4,KKKK;四个字节运算未完成转KKKK算下一字节
MOV R0,30H;取结果地址计数值
MOV A,#0;清A
ADDC A,#0;将最后的进位值放入A
MOV @R0,A;保存结果的最高字节
RET;返回
4SUBB:CLR C;清零进位位
MOV R4,#4;字节计数初值
MOV 30H,#RESULT;结果地址计数初值
KKKK:MOV A,@R0;取被除数加数
SUBB A,@R1;带进位减一个字节
INC R0;被减数计数加1
INC R1;减数计数加1
MOV 31H,R0;暂时保存被减数计数值
MOV R0,30H;取结果地址计数值
MOV @R0,A;存放本次运算结果
INC R0;结果地址计数值加1
MOV 30H,R0;保存结果地址计数值
MOV R0,31H;恢复保存被减数计数值
DJNE R4,KKKK;四个字节运算未完成转KKKK算下一字节
RET;返回