?? 8位1024到2000映射.txt
字號(hào):
;////////////////////////////////////////////////////////////////
;功能:實(shí)現(xiàn)2個(gè)16位數(shù)的乘法,結(jié)果仍然位16位數(shù)
;運(yùn)算結(jié)果放到 R6(高), R7(低) 中
;基本思想:將除法轉(zhuǎn)換為乘法和右移運(yùn)算
;例如:將0~1024,映射到0~2000。
;首先,2000/1024 = 1.953125。即:1024*(1 + 9531*10000次方) 10000大約等于2的13次方JIEGUO_YOUYI EQU #0DH
;JIEGUO:最終結(jié)果 YUANSHU:需要轉(zhuǎn)換的數(shù) SHANG:上式整數(shù)部分 YUSHU:上式小數(shù)部分 JIEGUO_YOUYI:參考上式
;JIEGUO == YUANSHU * SHANG + (YUANSHU * YUSHU) >> JIEGUO_YOUYI
;/////////////////////////////////////////////////////////////////
;預(yù)先設(shè)定部分
YUANSHU_LOW EQU #FFH
YUANSHU_HIGH EQU #03H
SHANG EQU #03H
YUSHU_LOW EQU #3BH
YUSHU_HIGH EQU #25H
JIEGUO_YOUYI EQU #0DH
;功能:實(shí)現(xiàn)JIEGUO == YUANSHU * SHANG + (YUANSHU * YUSHU) >> JIEGUO_YOUYI 結(jié)果放R2R3
;入口參數(shù):參見(jiàn)開始說(shuō)明
CONVERT:
MOV R2, YUANSHU_LOW ;計(jì)算 (YUANSHU * YUSHU)
MOV R3, YUANSHU_HIGH
MOV R4, YUSHU_LOW
MOV R5, YUSHU_HIGH
LCALL MUL_16b
MOV R7, JIEGUO_YOUYI ;計(jì)算(YUANSHU * YUSHU) >> JIEGUO_YOUYI
LCALL LRRC_16b
PUSH R2
PUSH R3
MOV R2, YUANSHU_LOW ;計(jì)算 (YUANSHU * SHANG)
MOV R3, YUANSHU_HIGH
MOV R4, SHANG
MOV R5, #00H
LCALL MUL_16b
POP R5 ;計(jì)算 YUANSHU * SHANG + (YUANSHU * YUSHU) >> JIEGUO_YOUYI
POP R4
LCALL ADD_16b
RET
;功能: (R2R3) * (R4R5) R2R4放低8位,R3R5放高8位, 結(jié)果放R2R3R4R5(從低到高)
;入口參數(shù):R2 R3 R4 R5
MUL_16b:
MOV A, R2
MOV B, R4
MUL AB
PUSH A ;低8位入棧保存,最終結(jié)果的低8位
MOV R6, B ; 高八位存R6
MOV A, R4
MOV B, R3
MUL AB ;R3 * R4
ADD A, R6
MOV R6, A
MOV R7, B
MOV A, R5
MOV B, R2
MUL AB ;R5 * R2
ADDC A, R6
POP R2 ;R2存低八位
MOV R3, A ;R2R3放低16位
MOV A, R7
ADDC A, B ;16~24位,防止8~16進(jìn)位
MOV R7, A ;緩存A
MOV A, R3
MOV B, R5
MUL AB
ADDC A, R7
MOV R4, A ;16~24位存R4
MOV A, B
ADDC A, #00H ;防止16~24進(jìn)位
MOV R5, A ;存24~32位
RET
;功能: (R2R3) + (R4R5) 結(jié)果放R2R3 R2R4放低8位,R3R5放高8位
;入口參數(shù):R2 R3 R4 R5
ADD_16b:
MOV A, R2
ADD A, R4
MOV R2, A
MOV A, R3
ADDC A, R5 ;要加上低八位的進(jìn)位
MOV R3, A
RET
;功能: (R2R3R4R5)>>R7 結(jié)果放R2R3 R2放低8位,R3放高8位
;入口參數(shù):R2 R3 R4 R5 R7
LRRC_32b:
MOV R6, R4 ;此處R4肯定大于0,因?yàn)樾?shù)部分肯定不止一位
LOOP:
CLR C ;進(jìn)位位清0
RRC R5 ;R2低位放C
RRC R4 ;R3的高位放C
RRC R3
RRC R2
DJNZ R6, LOOP
RET
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -