?? singledivide.asm
字號:
.file "example2.asm"
.title "double division"
.mmregs
DATA_DP .usect "filter_vars",0 ;定義數據頁指針
STACK .usect "stack",60 ;定義堆棧大小
start: st #80H,ar0 ;初始化ar0
st #0h,ar4 ;初始化ar4
st #100h,ar5 ;初始化ar5
st #101h,ar6 ;初始化ar6
LD #DATA_DP,DP ;初始化頁指針
STM #STACK,SP ;初始化堆棧指針
ld #-1000,a ;被除數送到A累加器
ld #21,b ;除數送到B累加器
stl a,*ar5 ;保存被除數
stl b,*ar6 ;保存除數
rsbx tc ;置tc位為0
st #0h,*ar3 ;*ar3清0
nop ;空操作
bc jump0,agt ;判斷被除數符號
ssbx tc ;置tc位為1
abs a ;取a的絕對值
st #1h,ar4 ;將1送到ar4
jump0: bc jump1,bgt ;判斷除數符號
xorm #1h,ar4 ;ar4和1異或
abs b ;取b的絕對值
jump1: st #0,*ar1 ;利用減法指令做除法運算
dst b,*ar0
rsbx c16
ld #-1,b
nop
dsub *ar0,a
bc jump5,alt
jump2: add #1,b
dsub *ar0,a
bc jump2,ageq
add #1,b
dadd *ar0,a
bc jump4,ntc
banz jump3,*ar4
nop
nop
b jump6
jump3: neg a ;修改結果和余數的符號
neg b
b jump6
jump4: dst b,*ar1
;ld *ar3,b
bc jump6,bgt
dld *ar1,b
b jump3
jump5: ld *ar5,a ;被除數小于除數,原數放入累加器A
ld *ar6,b ;被除數小于除數,原數放入累加器B
ssbx 1,10
jump6: b jump6 ;程序結束
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -