?? 雙字節(jié)二進制有符號數(shù)除法(補碼).txt
字號:
(11) 標號: DIVS 功能:雙字節(jié)二進制有符號數(shù)除法(補碼)
入口條件:被除數(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é)果的符號,保留溢出標志
RET
DVS1: POP PSW ;未溢出,取出結(jié)果的符號
MOV R4,#0
MOV R5,#0
MDSE: JB F0,MDS2 ;用補碼表示結(jié)果
CLR OV ;結(jié)果為正,原碼即補碼,計算成功
RET
MDS: CLR F0 ;結(jié)果符號初始化
MOV A,R6 ;判斷第二操作數(shù)的符號
JNB ACC.7,MDS1;為正,不必處理
CPL F0 ;為負,結(jié)果符號取反
XCH A,R7 ;第二操作數(shù)取補,得到其絕對值
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 ;為負,結(jié)果符號取反
MDS2: MOV A,R5 ;求第一操作數(shù)的絕對值或運算結(jié)果的補碼
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 + -