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

📄 it.asm

📁 可移植的MicroChip的PIC全系列单片机软件仿真器
💻 ASM
字号:
	;; it.asm	;;	;; The purpose of this program is to test how well gpsim can simulate	;; a pic. Nothing useful is performed - this program is only used to	;; debug gpsim.	list	p=16c84	include "p16c84.inc"  cblock  0x0c	temp,temp1,temp2  endc		org 0	clrf	temp1		;Assume clrf works...				;	;;	;; map tmr0 to the internal clock 	;; 	clrw	option			;initialize tmr0start:		;; Perform some basic tests on some important instructions	setc			;set the Carry flag	skpc			;and verify that it happened	 goto	$	clrc			;Now try clearing the carry	skpnc	 goto	$	setz			;set the Zero flag	skpz			;and verify that it happened	 goto	$	clrz			;Now try clearing it	skpnz	 goto	$		setdc			;set the Digit Carry flag	skpdc			;and verify that it happened	 goto	$	clrdc			;Now try clearing it	skpndc	 goto	$	movlw	1	movwf	temp	movf	temp,f	skpnz	 goto   $	movlw	0	movwf	temp	movf	temp,f	skpz	 goto   $		clrf	temp		;Clear a register	skpz			;and verify that the Z bit in the	 goto	$		;status register was set.	movf	temp,w		;Read the register that was just	skpz			;cleared, and again verify that Z	 goto	$		;was set	incf	temp,w		;Now this should cause the Z bit to	skpnz			;get cleared.	 goto	$	movlw	0xff	movwf	temp	incf	temp	skpz	 goto	$	;;	;; incfsz	;;	movlw	0xff	movwf	temp	movf	temp,f		;Should clear Z	incfsz	temp,w	 goto	$	skpnz			;incfsz shouldn't affect Z	 goto	$	incfsz	temp,f		;temp should now be zero	 goto	$	incfsz	temp,w		;the following inst. shouldn't be skipped	 skpnz			;Z should be clear from above.	  goto	$				;; 	addlw	0xaa	;; 	;; addwf test:	;;	;; The purpose of this test is to a) verify that the addwf instruction	;; adds correctly and b) that the appropriate status register bits are	;; set correctly.	clrw	clrf	temp		addwf	temp,w		; 0+0	skpnc	 goto	$	skpz	 goto	$	skpndc	 goto	$	movlw	1		; 0+1	addwf	temp,w		skpnc	 goto	$	skpnz	 goto	$	skpndc	 goto	$	movlw	8		; 8+8	movwf	temp	addwf	temp,w		skpnc	 goto	$	skpnz	 goto	$	skpdc	 goto	$	movlw	0x88		; 0x88+0x88	movwf	temp	addwf	temp,w		skpc	 goto	$	skpnz	 goto	$	skpdc	 goto	$	movlw	0x80		; 0x80+0x80	movwf	temp	addwf	temp,w		skpc	 goto	$	skpz	 goto	$	skpndc	 goto	$	movlw	1	movwf	temp	movlw	0xff	addwf	temp,w	skpc	 goto	$	skpz	 goto	$	skpdc	 goto	$	clrc	clrdc			;;	;; andwf test:	;;	clrf	temp	movlw	1	andwf	temp,f	skpz	 goto	$	skpc	 skpndc	  goto  $	andwf	temp,w	skpz	 goto	$	skpc	 skpndc	  goto  $	movlw	1	movwf	temp	andwf	temp,f	skpnz	 goto	$	skpc	 skpndc	  goto  $	movlw	0xff	andwf	temp,f		;1 & 0xff should = 1	skpnz	 goto	$	skpc	 skpndc	  goto  $	movlw	0xff		;Now add 0xff to see if temp	addwf	temp,f		;really is 1. (should cause a carry)	skpnz	 skpc	  goto	$	;;	;; iorwf	;;	movlw	0	movwf	temp	iorwf	temp,f	skpz	 goto	$	movlw	1	iorwf	temp,f	skpnz	 goto	$	movlw	0xff	addwf	temp,f	skpnz	 skpc	  goto	$	;;	;; rlf	;;	clrdc	clrf	temp	clrc	rlf	temp,w		skpdc	 skpnc	  goto	$	skpz	 goto	$	setc	rlf	temp,f	skpdc	 skpnc	  goto	$	skpz	 goto	$	movlw	0xff	addwf	temp,f	skpnz	 skpc	  goto	$	rlf	temp,f	skpnc	 goto	$		movlw	0x80	movwf	temp	rlf	temp,w	skpc	 goto	$	movwf	temp	addwf	temp,w	skpz	 goto	$	;;	;; rrf	;;	clrdc	clrf	temp	clrc	rrf	temp,w		skpdc	 skpnc	  goto	$	skpz	 goto	$	setc	rrf	temp,f	skpdc	 skpnc	  goto	$	skpz	 goto	$	movlw	0x80	addwf	temp,f	skpnz	 skpc	  goto	$	rrf	temp,f	skpnc	 goto	$		movlw	1	movwf	temp	rrf	temp,w	skpc	 goto	$	movwf	temp	addwf	temp,w	skpz	 goto	$	;; 	;; subwf test:	;;	clrw	clrf	temp		subwf	temp,w		; 0-0	skpc	 goto	$	skpz	 goto	$	skpdc	 goto	$	movlw	1		; 0-1	subwf	temp,w		skpnc	 goto	$	skpnz	 goto	$	skpndc	 goto	$	movlw	0x10		; 0x10-0x10	movwf	temp	subwf	temp,w		skpc	 goto	$	skpz	 goto	$	skpdc	 goto	$	movlw	0x88		; 0x88-0x88	movwf	temp	subwf	temp,w		skpc	 goto	$	skpz	 goto	$	skpdc	 goto	$	clrf	temp	movlw	0x80		; 0 - 0x80	subwf	temp,f		skpnc	 goto	$	skpnz	 goto	$	skpdc	 goto	$	movlw	0		; 0x80 - 0	subwf	temp,w	skpc	 goto	$	skpnz	 goto	$	skpdc	 goto	$	movlw	1		; 0x80 - 1	subwf	temp,w	skpc	 goto	$	skpnz	 goto	$	skpndc	 goto	$		clrc	clrdc	;; 	;; xorwf	;;	clrf	temp	movlw	0xff	xorwf	temp,f	skpc	 skpndc	  goto	$	skpnz	 goto	$	xorwf	temp,f	skpz	 goto	$	xorwf	temp,f	incfsz	temp,f	 goto	$	;;	;; swapf	;;	movlw	0x0f	movwf	temp	swapf	temp,f	xorwf	temp,f	incfsz	temp,f	 goto	$	decf	temp1,f	incfsz	temp1,w	 goto	done	;; repeat the test with in the next bank		bsf	status,rp0	goto	start	done:	bcf	status,rp0		NOP	NOP	NOP	NOP	NOP	NOP		goto	$		NOP	NOP	NOP	NOP	NOP	NOP	NOP			andlw	0xaa	andwf	temp,w	bcf	temp,5	bsf	temp,5	btfsc	temp,5	btfss	temp,5	call	routine	clrf	temp	clrw	clrwdt	comf	temp,w	decf	temp,w	decfsz	temp,w	goto	l1	nop	nop	nopl1:		incf	temp,w	incfsz	temp,w	iorlw	0xaa	iorwf	temp,w	movlw	0xaa	movf	temp,w	movwf	temp	nop	option	goto	r1			retfie	retlw   0xaaroutine	returnr1:	rlf	temp,w	rrf	temp,w	sleep	sublw	0xaa	subwf	temp,w	swapf	temp,w	tris	5	xorlw	0xaa	xorwf	temp,w		;;	;; Test indirect branching	;;test_pcl:		clrf	temp	clrf	temp1tt1:	movf	temp,w	call	table_test	xorwf	temp,w	skpz	 bsf	temp1,0	incf	temp,f	btfss	temp,4	 goto	tt1	goto	test_pcl2table_test:	addwf	pcl,ftable:	retlw	0	retlw	1	retlw	2	retlw	3	retlw	4	retlw	5	retlw	6	retlw	7	retlw	8	retlw	9	retlw	10	retlw	11	retlw	12	retlw	13	retlw	14	retlw	15test_pcl2:		btfsc	temp2,0	 goto	test_pcl3        movlw   0x20        movwf   fsrnext    clrf    indf        incf    fsr,1        btfss   fsr,4        goto    next	bsf	temp2,0        clrf    pcltest_pcl3:	movlw	ly	movwf	pcl		; == goto lylx	goto	test_pcl4ly	movlw	lx	movwf	pcltest_pcl4:		goto	$	end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -