?? 雙字節(jié)二進(jìn)制有符號數(shù)除法.txt
字號:
標(biāo)號: DIVS功能:雙字節(jié)二進(jìn)制有符號數(shù)除法(補(bǔ)碼)
入口條件:被除數(shù)在R2、R3、R4、R5中,除數(shù)在R6、R7中。
出口信息:OV=0時商在R2、R3中,OV=1時溢出。
影響資源:PSW、A、B、R1~R7 堆棧需求: 5字節(jié)
DIVS: LCALL MDS ;計算結(jié)果的符號和兩個操作數(shù)的絕對值
PUSH PSW ;保存結(jié)果的符號
LCALL DIVD ;計算兩個絕對值的商
JNB OV,DVS1 ;溢出否?
POP ACC ;溢出,放去結(jié)果的符號,保留溢出標(biāo)志
RET
DVS1: POP PSW ;未溢出,取出結(jié)果的符號
MOV R4,#0
MOV R5,#0
MDSE: JB F0,MDS2 ;用補(bǔ)碼表示結(jié)果
CLR OV ;結(jié)果為正,原碼即補(bǔ)碼,計算成功
RET
MDS: CLR F0 ;結(jié)果符號初始化
MOV A,R6 ;判斷第二操作數(shù)的符號
JNB ACC.7,MDS1;為正,不必處理
CPL F0 ;為負(fù),結(jié)果符號取反
XCH A,R7 ;第二操作數(shù)取補(bǔ),得到其絕對值
CPL A
ADD A,#1
XCH A,R7
CPL A
ADDC A,#0
MOV R6,A
MDS1: MOV A,R2 ;判斷第一操作數(shù)或運算結(jié)果的符號
JNB ACC.7,MDS3;為正,不必處理
CPL F0 ;為負(fù),結(jié)果符號取反
MDS2: MOV A,R5 ;求第一操作數(shù)的絕對值或運算結(jié)果的補(bǔ)碼
CPL A
ADD A,#1
MOV R5,A
MOV A,R4
CPL A
ADDC A,#0
MOV R4,A
MOV A,R3
CPL A
ADDC A,#0
MOV R3,A
MOV A,R2
CPL A
ADDC A,#0
MOV R2,A
MDS3: CLR OV ;運算成功
RET
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -