;-----------------------------------------------MDU16硬件乘除法器相关
MD3 EQU 0FCF0H ;第一操作数: MD3MD2MD1MD0 见STC8G资料P478…该部分RAM在扩展区
MD2 EQU 0FCF1H
MD1 EQU 0FCF2H
MD0 EQU 0FCF3H
MD5 EQU 0FCF4H ;第二操作数: MD5MD4
MD4 EQU 0FCF5H
ARCON EQU 0FCF6H ;模式控制寄存器
OPCON EQU 0FCF7H ;操作控制寄存器
;-----------------------------------------------
;-------------------------------------
; 16位÷16位 硬件除法 (STC8部分型号)
; 入口:被除数R7R6,除数R5R4
; 出口:商R7R6,余数R5R4
;-------------------------------------
MDU_16_DIV_16:
ORL PSW2,#80H ;高位置1:允许访问XFR (PSW2的BIT7是EAXFR-扩展区特殊功能寄存器XFR访问控制:0-禁止访问XFR,1-使能访问XFR)
MOV DPTR,#MD1 ;被除数高字节R7送MD1
MOV A,R7
MOVX @DPTR,A
MOV DPTR,#MD0 ;被除数低字节R6送MD0
MOV A,R6
MOVX @DPTR,A
MOV DPTR,#MD5 ;除数高字节R5送MD5
MOV A,R5
MOVX @DPTR,A
MOV DPTR,#MD4 ;除数低字节R4送MD4
MOV A,R4
MOVX @DPTR,A
MOV DPTR,#ARCON ;设置成16除16位模式
MOV A,#10100000B ;101(5)
MOVX @DPTR,A
MOV DPTR,#OPCON ;启动运算
MOV A,#00000001B ;
MOVX @DPTR,A
WAIT: MOVX A,@DPTR ;等待运算完成
ANL A,#00000001B
JNZ WAIT
MOV DPTR,#MD1 ;商高字节MD1送R7
MOVX A,@DPTR
MOV R7,A
MOV DPTR,#MD0 ;商低字节MD0送R6
MOVX A,@DPTR
MOV R6,A
MOV DPTR,#MD5 ;余数高字节MD5送R5
MOVX A,@DPTR
MOV R5,A
MOV DPTR,#MD4 ;余数低字节MD4送R4
MOVX A,@DPTR
MOV R4,A
ANL PSW2,#01111111B ;高位置0-禁止访问XFR
RET