有加法、除法、減法和乘法。讓我們做壹個更簡單的類比。
註意事項寫的很詳細,出入口地址也有標註。
;數據附加子程序
;攜帶11,13,15。12、14、16為加法結果,分別為低8位、中8位、高8位。
;vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
ADDP: MOV 11H,#00H
MOV 12H,#00H
MOV R0,# 20H& lt-“20”起始位置
MOV 12H,@R0
回路1: MOV A,R0
添加壹個,#03H
MOV R1,A
MOV A,12H
添加壹個,@R1
JNB PSW.7,SI1
INC 11H
矽1: MOV 12H
MOV A,R1
MOV R0,A
CJNE R0,#4DH,loop 1;& lt-"4d "終止變量,楊設計
MOV A,#00H
MOV 13H,#00H
MOV 14H,#00H
MOV R0,# 21H;& lt-“21”起始位置
MOV 14H,@R0
MOV A,14H
加壹個,11H
MOV 14H,A
環路2: MOV A,R0
添加壹個,#03H
MOV R1,A
MOV A,14H
添加壹個,@R1
JNB PSW.7,SI2
INC 13H
SI2: MOV 14H
MOV A,R1
MOV R0,A
CJNE R0,#4EH,LOOP2& lt-“4e”終止變量
MOV A,#00H
MOV 15H,#00H
MOV 16H,#00H
MOV R0,# 22H& lt-“22”起始位置
MOV 15H,@R0
MOV A,16H
加壹個,13H
MOV 16H,A
第三圈:MOV A,R0
添加壹個,#03H
MOV R1,A
MOV A,16H
添加壹個,@R1
JNB PSW.7,SI3
INC 15H
MOV 16H,A
MOV A,R1
MOV R0,A
CJNE R0,#4FH,LOOP3& lt-“4f”終止自定義位置變量,
MOV A,#00H
;
;除法子程序
;支持32位被除數、24位除數和任意位長的除法。
;分頻器需要根據定時和累加組* * * *的個數進行預置,這個值也可以通過調整調試精度來調整* * *!!!!!!!!
;17H、18H和19H是除數輸入端口,32H、33H、34H和35H是運算結果。
;vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
SETDIV: MOV P1,#0FFH
JNB P1.1,MEAS _ F;當P1.1時,設置1(高)用於速度測量,設置0(低)用於頻率測量。
MEAS_V: MOV R2,# 11111111B;* * *速度測量* * * *
MOV R3,# 11101000 b;紅利R2-R5,轉移至22H-25H進行置換處理。
MOV R4,# 00100101B;* *分頻器是壹個固定值,前端零的數量是已知的。
MOV R5,# 00001011B;設被除數的前零個數為y,被除數的前零個數計為x(R0),後循環數為(32-y)-(24-x) = (8-y)+x。
JMP星報
MEAS_F: MOV R2,# 00111010B;* * *頻率測量* * *楊設計
MOV R3,# 01100110B;紅利R2-R5,轉移至22H-25H進行置換處理。
MOV R4,# 00111110B;* *分頻器是壹個固定值,前端零的數量是已知的。
MOV R5,# 10000111B;設被除數的前零個數為y,被除數的前零個數計為x(R0),後循環數為(32-y)-(24-x) = (8-y)+x。
JMP星報
MOV 22H,R2
MOV 23H,R3
R4 MOV·24H
MOV 25H,R5
MOV 17H,16H;除法器17H-19H,加載12H、14H、16H的累加結果。
MOV 18H,14H
MOV 19H,12H
MOV 32H,# 00H結果輸出位32H-35H最初設置為0楊YF設計。
MOV 33H,#00H
MOV 34H,#00H
MOV 35H,#00H
MOV R0,#00H
MOV R1,#00H
MOV 10H,#00H
CHECKFRONT: CLR C
MOV A,17H;檢查高除數中是否有空格0。
RLC A
JNC MOVFRONT
JMP循環計數
MOVFRONT:公司R0
CLR C;除數高空位為0時向前移動。
MOV A,19H;1)
RLC A
MOV 19H,A
MOV A,18H;2)
RLC A
MOV 18H,A
MOV A,17H;3)
RLC A
MOV 17H,A
JMP檢查站
循環計數:MOV A,# 09H
添加A,R0
MOV 10H,A;後循環數R0
法官助理:MOV·PSW,#00H
MOV A,R1
CJNE A,10H,JMP0
JMP結果
JMP0: MOV A,22H
MOV C,ACC.7******!!!!
MOV F0,C
CLR C;******!!!!
SUBB A,17H
JC CANOTSUB泛濫
JNZ jmp 1;當ACC!=#00H然後跳
MOV A,23H
CLR C
SUBB A,18H
JC CANOTSUB
jmp 1:JNZ jmp 2;當ACC!=#00H然後跳
24H MOV
CLR C
SUBB A,19H
JC CANOTSUB
JMP2: JMP分部
卡諾蘇布:JNB F0,TURN1
JB F0,MOVDR
JMP分部
子部分:CLR C
MOV A,25H
JNB PSW.1,JMPSP1
JB ACC.7,JMPSP1
SETB議會7
MOV A,19H
公司A
MOV 19H,A
jmpsp 1:24H MOV A
SUBB A,19H
MOV·24H
MOV A,23H
SUBB A,18H
MOV 23H,A
MOV A,22H
SUBB A,17H
MOV 22H,A
ACALL SETCY_1
JB B.0,MOVDL除數通過條件右移然後左移來恢復。
LJMP法官小組
MOVDR: SETB B.0
CLR C;除數向右移動壹位。
MOV A,17H;1)
RRC A
MOV 17H,A
MOV A,18H;2)
RRC A
MOV 18H,A
MOV A,19H;3)
RRC A
MOV 19H,A
MOV PSW.1,C;在除數的末尾,將其移出並臨時存儲到F1。
呼叫設置_0
JMP分部
MOVDL: MOV C,PSW.1
MOV A,19H;1)
RLC A
MOV 19H,A
MOV A,18H;2)
RLC A
MOV 18H,A
MOV A,17H;3)
RLC A
MOV 17H,A
CLR B.0
SETB B.1
JMP法官
TURN1:時鐘C
MOV A,25H1)
RLC A
MOV 25H,A
MOV A,24H;2)
RLC A
MOV·24H
MOV A,23H3)
RLC A
MOV 23H,A
MOV A,22H4)
RLC A
MOV 22H,A
JB B.1,JMPCALLSC0
呼叫設置_0
JMPCALLSC0: CLR B.1
JMP法官
SETCY_0: JB B.2,jmpse 1;B.2第壹次確定是否設置1,如果是則忽略壹次。
INC r 1;計數次數
CLR C;以0移動。
MOV A,35H
RLC A
MOV 35H,A;輸出地址32H-35H
MOV A,34H
RLC A
MOV 34H A
MOV A,33H
RLC A
MOV 33H,A
MOV A,32H
RLC A
MOV 32H,A
CLR C
JMPSE1: CLR B.2
浸水使柔軟
SETCY _ 1:INC r 1;數遍楊的設計
SETB C;移入位1
MOV A,35H
RLC A
MOV 35H,A;輸出地址32H-35H
MOV A,34H
RLC A
MOV 34H A
MOV A,33H
RLC A
MOV 33H,A
MOV A,32H
RLC A
MOV 32H,A
CLR C
SETB灣2
浸水使柔軟
result div:;不能刪除楊的設計
;