?? 8bit除以8bit.asm
字號:
;---------------------------------------------------------------------
; ;8位/8位除法子程序
;時間:2004年7月
;單位: 上海凌陽科技
;作者:周俊峰
;Email:zhoujf@sunplus.com.cn
;Tel:021-50804488 ext.6124
;
; ;8位/8位除法子程序
;入口參數:G_Dividend_Buffer G_Divisor_Buffer
;;G_Temporary是被除數的一個臨時存儲變量
;出口參數:G_Div_Result G_Div_Result+1
;----------------------------------------------------------------------
.SYNTAX 6502 ;process standard 6502 addressing syntax
.LINKLIST ;generate linklist information
.SYMBOLS ;generate symbolic debug information
.PAGE0 ;define values in the range from 00h to FFh
.include SPMC810A.inc
ORG $80
G_Dividend_Buffer DS 1;被除數
G_Divisor_Buffer DS 1;除數
G_Div_Result DS 2;結果
ShiftTimes DS 1
G_Temporary DS 1;臨時存儲變量
.CODE
ORG $EE00
.PUBLIC V_Reset
V_Reset:
V_PowerOn:
sei
ldx #C_STACK_BOTTOM ;set stack bottom
txs ; transfer x to stack
lda #109
sta G_Dividend_Buffer;裝入被除數低位數據
lda #10
sta G_Divisor_Buffer;裝入除數低位數據
lda #0;清除結果單元
sta G_Div_Result
sta G_Temporary;臨時被除數清零
lda #8
sta ShiftTimes
;---------------------------------------------------------
F_Div_Sub:
lda #00H
sta G_Div_Result
sta G_Temporary
lda #8
sta ShiftTimes ;設定除法需要移位的次數
lda G_Dividend_Buffer
beq L_Div_End ;被除數為0,返回
sta G_Dividend_Buffer
lda G_Divisor_Buffer
beq L_Div_End ;除數為0,返回
sta G_Divisor_Buffer
L_Shift_Div:
clc
rol G_Dividend_Buffer
rol G_Temporary ;被除數左移,被除數前面補一個八位的0
bcs L_Result ;c=1;有溢出,說明被除數大,九位數比八位數大
lda G_Divisor_Buffer
cmp G_Temporary ;移位的被除數和除數的高位相比較
bcc L_Result ;除數小于臨時被除數,商上1
beq L_Result
jmp L_Div_NextBit ;除數大于臨時被除數,商上0,即結果直接左移一位
L_Result:
inc G_Div_Result ;商上1
lda G_Temporary
sec
sbc G_Divisor_Buffer
sta G_Temporary
L_Div_NextBit:
dec ShiftTimes
lda ShiftTimes
beq L_Div_End ;是否除完
clc
rol G_Div_Result
jmp L_Shift_Div ;繼續除
nop
nop
nop
L_Div_End:
MainLoop:
nop
nop
nop
nop
nop
jmp MainLoop
;=============================================================================
; Interrupt Subroutine
;=============================================================================
V_IRQ:
PHA
TXA
PHA
IRQ_END:
PLA
TAX
PLA
RTI
;=====================================================
;Description: NMI Interrupt Vector
;=====================================================
.PUBLIC V_NMI
V_NMI:
RTI
.ORG $1FFA ;Define two different areas since SICE
DW V_NMI ;FMay download program emulated either
DW V_PowerOn ;FIn internal memory or external memory
DW V_IRQ
.ORG $7FFA ;For EPROM with EV BRD. IRQ. CPU, or EXT. CPU
DW V_NMI
DW V_PowerOn
DW V_IRQ
.ORG $FFFA ;For ICE trace.
DW V_NMI
DW V_PowerOn
DW V_IRQ
.END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -