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

📄 vectors08.s

📁 基于HC908GP32的计算器完整程序
💻 S
📖 第 1 页 / 共 2 页
字号:
; case '9':n[t++]='9';s1=0;break;
	clr *__r0
	lda *_t
	sta *__r1
	ldhx *__r0
	aix #1
	sthx *__r2
	mov *__r3,*_t
	add #<_n
	sta *__r1
	lda *__r0
	adc #>_n
	sta *__r0
	lda #57
	ldhx *__r0
	sta ,x
	tsx
	clr *_s1
	jmp L59
L70:
; case '0':n[t++]='0';s1=0;break;
	clr *__r0
	lda *_t
	sta *__r1
	ldhx *__r0
	aix #1
	sthx *__r2
	mov *__r3,*_t
	add #<_n
	sta *__r1
	lda *__r0
	adc #>_n
	sta *__r0
	lda #48
	ldhx *__r0
	sta ,x
	tsx
	clr *_s1
	jmp L59
L72:
	dec *_t
L73:
	clr *__r0
	lda *_t
	add #<_n-1
	sta *__r1
	lda *__r0
	adc #>_n-1
	sta *__r0
	ldhx *__r0
	lda ,x
	tsx
	cmp #32
	beq L72
	lda *_t
	beq L76
	lda *_t
	sub #1
	sta *_t
	clr *__r0
	add #<_n
	sta *__r1
	lda *__r0
	adc #>_n
	sta *__r0
	lda #32
	ldhx *__r0
	sta ,x
	tsx
L76:
; case '<':while(n[t-1]==' ')t--;if(t!=0)n[--t]=' ';s1=2;break;
	lda #2
	sta *_s1
	jmp L59
L78:
; case '+':if(s1==1)
	lda *_s1
	cmp #1
	beq X14
	jmp L79
X14:
; {
; s2=0;
	clr *_s2
	bra L82
L81:
	inc *_s2
L82:
; while(n[s2]!='=')s2++;
	clr *__r0
	lda *_s2
	add #<_n
	sta *__r1
	lda *__r0
	adc #>_n
	sta *__r0
	ldhx *__r0
	lda ,x
	tsx
	cmp #61
	bne L81
	clr *_i
	bra L87
L84:
	clr *__r0
	lda *_s2
	sta *__r1
	clr *__r2
	lda *_i
	add *__r1
	sta *__r1
	lda *__r2
	adc *__r0
	sta *__r0
	lda *__r1
	add #<_n+1
	sta *__r1
	lda *__r0
	adc #>_n+1
	sta *__r0
	ldhx *__r0
	lda ,x
	sta *__r1
	clr *__r2
	lda *_i
	add #<_n
	sta *__r3
	lda *__r2
	adc #>_n
	sta *__r2
	lda *__r1
	ldhx *__r2
	sta ,x
	tsx
L85:
	inc *_i
L87:
; for(i=0;i<t-s2;i++)n[i]=n[i+s2+1];
	lda *_t
	sub *_s2
	sta *__r0
	lda *_i
	cmp *__r0
	blo L84
	lda *_t
	sub *_s2
	sta *_i
	bra L92
L89:
	clr *__r0
	lda *_i
	add #<_n
	sta *__r1
	lda *__r0
	adc #>_n
	sta *__r0
	lda #32
	ldhx *__r0
	sta ,x
	tsx
L90:
	inc *_i
L92:
; for(i=t-s2;i<32;i++)n[i]=' ';
	lda *_i
	cmp #32
	blo L89
; t=t-s2-1;
	lda *_t
	sub *_s2
	sub #1
	sta *_t
; }
L79:
; if(t==0)break;
	lda *_t
	bne L93
	jmp L59
L93:
; else n[t++]='+';
	clr *__r0
	lda *_t
	sta *__r1
	ldhx *__r0
	aix #1
	sthx *__r2
	mov *__r3,*_t
	add #<_n
	sta *__r1
	lda *__r0
	adc #>_n
	sta *__r0
	lda #43
	ldhx *__r0
	sta ,x
	tsx
; s1=0;break;
	clr *_s1
	jmp L59
L95:
; case '-':if(s1==1)
	lda *_s1
	cmp #1
	beq X15
	jmp L96
X15:
; {
; s2=0;
	clr *_s2
	bra L99
L98:
	inc *_s2
L99:
; while(n[s2]!='=')s2++;
	clr *__r0
	lda *_s2
	add #<_n
	sta *__r1
	lda *__r0
	adc #>_n
	sta *__r0
	ldhx *__r0
	lda ,x
	tsx
	cmp #61
	bne L98
	clr *_i
	bra L104
L101:
	clr *__r0
	lda *_s2
	sta *__r1
	clr *__r2
	lda *_i
	add *__r1
	sta *__r1
	lda *__r2
	adc *__r0
	sta *__r0
	lda *__r1
	add #<_n+1
	sta *__r1
	lda *__r0
	adc #>_n+1
	sta *__r0
	ldhx *__r0
	lda ,x
	sta *__r1
	clr *__r2
	lda *_i
	add #<_n
	sta *__r3
	lda *__r2
	adc #>_n
	sta *__r2
	lda *__r1
	ldhx *__r2
	sta ,x
	tsx
L102:
	inc *_i
L104:
; for(i=0;i<t-s2;i++)n[i]=n[i+s2+1];
	lda *_t
	sub *_s2
	sta *__r0
	lda *_i
	cmp *__r0
	blo L101
	lda *_t
	sub *_s2
	sta *_i
	bra L109
L106:
	clr *__r0
	lda *_i
	add #<_n
	sta *__r1
	lda *__r0
	adc #>_n
	sta *__r0
	lda #32
	ldhx *__r0
	sta ,x
	tsx
L107:
	inc *_i
L109:
; for(i=t-s2;i<32;i++)n[i]=' ';
	lda *_i
	cmp #32
	blo L106
; t=t-s2-1;
	lda *_t
	sub *_s2
	sub #1
	sta *_t
; }
	bra L97
L96:
; else n[t++]='-';
	clr *__r0
	lda *_t
	sta *__r1
	ldhx *__r0
	aix #1
	sthx *__r2
	mov *__r3,*_t
	add #<_n
	sta *__r1
	lda *__r0
	adc #>_n
	sta *__r0
	lda #45
	ldhx *__r0
	sta ,x
	tsx
L97:
; s1=0;break;
	clr *_s1
	jmp L59
L110:
; case '*':if(s1==1)
	lda *_s1
	cmp #1
	beq X16
	jmp L111
X16:
; {
; s2=0;
	clr *_s2
	bra L114
L113:
	inc *_s2
L114:
; while(n[s2]!='=')s2++;
	clr *__r0
	lda *_s2
	add #<_n
	sta *__r1
	lda *__r0
	adc #>_n
	sta *__r0
	ldhx *__r0
	lda ,x
	tsx
	cmp #61
	bne L113
	clr *_i
	bra L119
L116:
	clr *__r0
	lda *_s2
	sta *__r1
	clr *__r2
	lda *_i
	add *__r1
	sta *__r1
	lda *__r2
	adc *__r0
	sta *__r0
	lda *__r1
	add #<_n+1
	sta *__r1
	lda *__r0
	adc #>_n+1
	sta *__r0
	ldhx *__r0
	lda ,x
	sta *__r1
	clr *__r2
	lda *_i
	add #<_n
	sta *__r3
	lda *__r2
	adc #>_n
	sta *__r2
	lda *__r1
	ldhx *__r2
	sta ,x
	tsx
L117:
	inc *_i
L119:
; for(i=0;i<t-s2;i++)n[i]=n[i+s2+1];
	lda *_t
	sub *_s2
	sta *__r0
	lda *_i
	cmp *__r0
	blo L116
	lda *_t
	sub *_s2
	sta *_i
	bra L124
L121:
	clr *__r0
	lda *_i
	add #<_n
	sta *__r1
	lda *__r0
	adc #>_n
	sta *__r0
	lda #32
	ldhx *__r0
	sta ,x
	tsx
L122:
	inc *_i
L124:
; for(i=t-s2;i<32;i++)n[i]=' ';
	lda *_i
	cmp #32
	blo L121
; t=t-s2-1;
	lda *_t
	sub *_s2
	sub #1
	sta *_t
; }
L111:
; if(t==0)break;
	lda *_t
	bne L125
	jmp L59
L125:
; else n[t++]='*';
	clr *__r0
	lda *_t
	sta *__r1
	ldhx *__r0
	aix #1
	sthx *__r2
	mov *__r3,*_t
	add #<_n
	sta *__r1
	lda *__r0
	adc #>_n
	sta *__r0
	lda #42
	ldhx *__r0
	sta ,x
	tsx
; s1=0;break; 
	clr *_s1
	jmp L59
L127:
; case '/':if(s1==1)
	lda *_s1
	cmp #1
	beq X17
	jmp L128
X17:
;  {
; s2=0;
	clr *_s2
	bra L131
L130:
	inc *_s2
L131:
; while(n[s2]!='=')s2++;
	clr *__r0
	lda *_s2
	add #<_n
	sta *__r1
	lda *__r0
	adc #>_n
	sta *__r0
	ldhx *__r0
	lda ,x
	tsx
	cmp #61
	bne L130
	clr *_i
	bra L136
L133:
	clr *__r0
	lda *_s2
	sta *__r1
	clr *__r2
	lda *_i
	add *__r1
	sta *__r1
	lda *__r2
	adc *__r0
	sta *__r0
	lda *__r1
	add #<_n+1
	sta *__r1
	lda *__r0
	adc #>_n+1
	sta *__r0
	ldhx *__r0
	lda ,x
	sta *__r1
	clr *__r2
	lda *_i
	add #<_n
	sta *__r3
	lda *__r2
	adc #>_n
	sta *__r2
	lda *__r1
	ldhx *__r2
	sta ,x
	tsx
L134:
	inc *_i
L136:
; for(i=0;i<t-s2;i++)n[i]=n[i+s2+1];
	lda *_t
	sub *_s2
	sta *__r0
	lda *_i
	cmp *__r0
	blo L133
	lda *_t
	sub *_s2
	sta *_i
	bra L141
L138:
	clr *__r0
	lda *_i
	add #<_n
	sta *__r1
	lda *__r0
	adc #>_n
	sta *__r0
	lda #32
	ldhx *__r0
	sta ,x
	tsx
L139:
	inc *_i
L141:
; for(i=t-s2;i<32;i++)n[i]=' ';
	lda *_i
	cmp #32
	blo L138
; t=t-s2-1;
	lda *_t
	sub *_s2
	sub #1
	sta *_t
; }
L128:
; if(t==0)break;
	lda *_t
	bne L142
	jmp L59
L142:
; else n[t++]='/';
	clr *__r0
	lda *_t
	sta *__r1
	ldhx *__r0
	aix #1
	sthx *__r2
	mov *__r3,*_t
	add #<_n
	sta *__r1
	lda *__r0
	adc #>_n
	sta *__r0
	lda #47
	ldhx *__r0
	sta ,x
	tsx
; s1=0;break; 
	clr *_s1
	jmp L59
L144:
; case '=':
; n[t++]='=';
	clr *__r0
	lda *_t
	sta *__r1
	ldhx *__r0
	aix #1
	sthx *__r2
	mov *__r3,*_t
	add #<_n
	sta *__r1
	lda *__r0
	adc #>_n
	sta *__r0
	lda #61
	ldhx *__r0
	sta ,x
	tsx
; for(i=0;i<t;i++)
	clr *_i
	bra L148
L145:
	clr *__r0
	lda *_i
	add #<_n
	sta *__r1
	lda *__r0
	adc #>_n
	sta *__r0
	ldhx *__r0
	lda ,x
	sta *__r1
	clr *__r2
	lda *_i
	add #<_m
	sta *__r3
	lda *__r2
	adc #>_m
	sta *__r2
	lda *__r1
	ldhx *__r2
	sta ,x
	tsx
L146:
	inc *_i
L148:
	lda *_i
	cmp *_t
	blo L145
; m[i]=n[i];
; mm=result(m);
	ldhx #_m
	pshx
	pshh
	jsr _result
	ais #2
	tsx
	mov *__r0,*_mm
	mov *__r1,*_mm+1
; if(t<17)
	lda *_t
	cmp #17
	bhs L149
; {n[t-1]=' ';n[16]='=';t=17;}
	clr *__r0
	lda *_t
	add #<_n-1
	sta *__r1
	lda *__r0
	adc #>_n-1
	sta *__r0
	lda #32
	ldhx *__r0
	sta ,x
	tsx
	lda #61
	sta *_n+16
	lda #17
	sta *_t
L149:
; if(mm<0)
	ldhx *_mm
	cphx #0
	tsx
	bge L153
;  {
; n[t++]='-';
	clr *__r0
	lda *_t
	sta *__r1
	ldhx *__r0
	aix #1
	sthx *__r2
	mov *__r3,*_t
	add #<_n
	sta *__r1
	lda *__r0
	adc #>_n
	sta *__r0
	lda #45
	ldhx *__r0
	sta ,x
	tsx
; mm=0-mm; 
	clra
	sub *_mm+1
	sta *_mm+1
	clra
	sbc *_mm
	sta *_mm
;  }
L153:
;  t1=0;
	clr *_t1
;  if(mm==0)n[t++]='0';
	ldhx *_mm
	cphx #0
	tsx
	beq X18
	jmp L158
X18:
	clr *__r0
	lda *_t
	sta *__r1
	ldhx *__r0
	aix #1
	sthx *__r2
	mov *__r3,*_t
	add #<_n
	sta *__r1
	lda *__r0
	adc #>_n
	sta *__r0
	lda #48
	ldhx *__r0
	sta ,x
	tsx
	jmp L156
X10:
;  else
;  {
L157:
	clr *__r0
	lda *_t1
	sta *__r1
	ldhx *__r0
	aix #1
	sthx *__r2
	mov *__r3,*_t1
	lda *_mm+1
	sta *__rlo
	lda *_mm
	sta *__rhi
	lda #10
	psha
	clra
	psha
	jsr __divmod16s
	pula
	sta *__r2
	pula
	sta *__r3
	ldhx *__r2
	aix #48
	sthx *__r2
	lda *__r1
	add #<_mn
	sta *__r1
	lda *__r0
	adc #>_mn
	sta *__r0
	lda *__r3
	ldhx *__r0
	sta ,x
	tsx
	lda *_mm+1
	sta *__rlo
	lda *_mm
	sta *__rhi
	lda #10
	psha
	clra
	psha
	jsr __divmod16s
	ais #2
	mov *__rhi,*__r0
	mov *__rlo,*__r1
	mov *__r0,*_mm
	mov *__r1,*_mm+1
L158:
; while(mm)
	ldhx *_mm
	cphx #0
	tsx
	bne L157
	bra L161
L160:
	clr *__r0
	lda *_t
	sta *__r1
	ldhx *__r0
	aix #1
	sthx *__r2
	mov *__r3,*_t
	lda *_t1
	sub #1
	sta *_t1
	clr *__r2
	add #<_mn
	sta *__r3
	lda *__r2
	adc #>_mn
	sta *__r2
	ldhx *__r2
	lda ,x
	sta *__r3
	lda *__r1
	add #<_n
	sta *__r1
	lda *__r0
	adc #>_n
	sta *__r0
	lda *__r3
	ldhx *__r0
	sta ,x
	tsx
L161:
; {
; mn[t1++]=mm%10+'0';
; mm=mm/10;
; }
; while(t1>0)n[t++]=mn[--t1];}
	lda *_t1
	cmp #0
	bhi L160
L156:
; s1=1;break;
	lda #1
	sta *_s1
L58:
L59:
;  }
; Lcd_Command(0b00001100);
	lda #12
	psha
	jsr _Lcd_Command
	ais #1
; lcdshow(n);
	ldhx #_n
	pshx
	pshh
	jsr _lcdshow
	ais #2
	tsx
; if(t>32)
	lda *_t
	cmp #32
	bls L164
;  {
	clr *_i
	bra L169
L166:
	clr *__r0
	lda *_i
	add #<_n
	sta *__r1
	lda *__r0
	adc #>_n
	sta *__r0
	lda #32
	ldhx *__r0
	sta ,x
	tsx
L167:
	inc *_i
L169:
; for(i=0;i<32;i++)n[i]=' ';
	lda *_i
	cmp #32
	blo L166
; lcdshow(n);
	ldhx #_n
	pshx
	pshh
	jsr _lcdshow
	ais #2
; t=t%32;
	lda *_t
	ldx #32
	clrh
	div
	pshh
	pula
	tsx
	sta *_t
;  }
L164:
; if(s1==2)
	lda *_s1
	cmp #2
	bne L170
;  {
; lcdshow(n);
	ldhx #_n
	pshx
	pshh
	jsr _lcdshow
	ais #2
	tsx
; s1=0;
	clr *_s1
;  }
L170:
;  }
L56:
; 	  KB_Init();			     //重新初始化键盘
	jsr _KB_Init
	tsx
; 	  INTKBSCR&= ~(1<<IntBit); //打开键盘中断(IMASKK=0)
	bclr #1,0x1a
; 	 asm("CLI");			     //开总中断
	CLI
L55:
	ais #3
	.dbline 0 ; func end
	pula
	sta *__rlo
	pula
	sta *__rhi
	pula
	sta *__r11
	pula
	sta *__r10
	pula
	sta *__r9
	pula
	sta *__r8
	pula
	sta *__r7
	pula
	sta *__r6
	pula
	sta *__r5
	pula
	sta *__r4
	pula
	sta *__r3
	pula
	sta *__r2
	pula
	sta *__r1
	pula
	sta *__r0
	pulh
	rti
_isrDummy::
	pshh
; }
; //未定义的中断处理函数,本函数不能删除
; #pragma interrupt_handler isrDummy  
; void isrDummy(void) 
;   {
L172:
	.dbline 0 ; func end
	pulh
	rti
	.area memory(abs)
	.org 0xffdc
__vectab::
	.word _isrDummy
	.word _isrDummy
	.word _isrKBI
	.word _isrDummy
	.word _isrDummy
	.word _isrDummy
	.word _isrDummy
	.word _isrDummy
	.word _isrDummy
	.word _isrDummy
	.word _isrDummy
	.word _isrDummy
	.word _isrDummy
	.word _isrDummy
	.word _isrDummy
	.word _isrDummy
	.word _isrDummy
	.area lit
	.area bss
_res::
	.blkb 2
_r::
	.blkb 32
_sign2::
	.blkb 16
_sign1::
	.blkb 16
_i9::
	.blkb 1
_i8::
	.blkb 1
_i7::
	.blkb 1
_i6::
	.blkb 1
_i5::
	.blkb 1
_i42::
	.blkb 1
_i41::
	.blkb 1
_i4::
	.blkb 1
_i3::
	.blkb 1
_i2::
	.blkb 1
_i1::
	.blkb 1
_mm::
	.blkb 2
_t1::
	.blkb 1
_x::
	.blkb 1
_s2::
	.blkb 1
_i::
	.blkb 1
_KB_valve::
	.blkb 1
_mn::
	.blkb 32
_m::
	.blkb 32

⌨️ 快捷键说明

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