⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 math.lib

📁 双 极 2 相 步 进 电 机 驱 动
💻 LIB
字号:
Quo     equ 60Divisor equ 64Op      equ 68Rem     equ 72Carry   equ 72Fract   equ 76Aux     equ 80Div1:   clr C   mov R0, #Op   mov R2, #4   acall ShiftX          ;;; C:Op = Op*2;   mov R0, #Rem   mov R2, #4   acall ShiftX          ;;; Rem = Rem*2 + C;   mov R0, #Rem   mov R1, #Divisor   mov R2, #4   acall LessX   jc Quot               ;;; if (Rem >= Divisor) {      mov R0, #Rem      mov R1, #Divisor      mov R2, #4      acall SubtractX    ;;;    Rem -= Divisor; C = 0;      clr C   Quot:                 ;;; } else C = 1;retDiv32:   mov R0, #Rem   mov R2, #4   acall ClearX          ;;; Rem = 0;   mov R0, #Quo   mov R2, #4   acall ClearX          ;;; Quo = 0;   mov R3, #32   DivLoop:              ;;; for (R3 = 32; R3 > 0; R3--) {      acall Div1      cpl C      mov R0, #Quo      mov R2, #4      acall ShiftX          ;;; Quo = 2*Quo + (1 - C);   djnz R3, DivLoop      ;;; }   mov R0, #Fract   mov R2, #4   acall ClearX          ;;; Fract = 0;   mov R3, #32   FractLoop:            ;;; for (R3 = 32; R3 > 0; R3--) {      acall Div1      cpl C      mov R0, #Fract      mov R2, #4      acall ShiftX          ;;; Fract = 2*Fract + (1 - C);   djnz R3, FractLoop    ;;; }retMulBy10: ;;; Aux:Fract = 10*Fract;   mov Aux, #0   mov R0, #Fract   mov R1, #Carry   mov R2, #4   MulLoop:      mov A, @R0      mov B, #10      mul AB      mov @R0, A      inc R0      mov @R1, B      inc R1   djnz R2, MulLoop   mov R0, #(Fract + 1)   mov R1, #Carry   mov R2, #4   acall AddXretLessX:   clr C   LessLoop:      mov A, @R0      inc R0      subb A, @R1      inc R1   djnz R2, LessLoopretAddX:   clr C   AddLoop:      mov A, @R0      addc A, @R1      inc R1      mov @R0, A      inc R0   djnz R2, AddLoopretSubtractX:   clr C   SubtractLoop:      mov A, @R0      subb A, @R1      inc R1      mov @R0, A      inc R0   djnz R2, SubtractLoopretClearX:   ClearLoop:      mov @R0, #0      inc R0   djnz R2, ClearLoopretCopyX:   CopyLoop:      mov A, @R1      inc R1      mov @R0, A      inc R0   djnz R2, CopyLoopretShiftX:   ShiftLoop:      mov A, @R0      rlc A      mov @R0, A      inc R0   djnz R2, ShiftLoopretCplX:   CplLoop:      mov A, @R0      cpl A      mov @R0, A      inc R0   djnz R2, CplLoopretInc10X:   Inc10Loop:      inc @R0      mov A, @R0   cjne A, #10, Inc10Break      mov @R0, #0      inc R0   djnz R2, Inc10Loop   Inc10Break:ret

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -