⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8bit除以8bit.asm

📁 6502汇编 算术运算库.rar 8bit乘以8bit.asm 8bit除以8bit.asm 16bit乘以16bit.asm
💻 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 + -