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

📄 example.asm

📁 basic compiler for 8051
💻 ASM
字号:

; Start of Basic tokens
	.segment	.memory
	.memory
	.org	h'0400

i.:	.rs	1
char.:	.rs	1
choice.:	.rs	1
value.:	.rs	1
matches.:	.rs	1
; Compiled basic program: example

	.code
	.org	h'0000

start:

	lcall	basint	; call any initialization code
.L10:

.L20:

.L30:

.L40:

.L50:

.L60:
	mov	a,#9
	lcall	print
	mov	a,#77
	lcall	print
	mov	a,#65
	lcall	print
	mov	a,#84
	lcall	print
	mov	a,#67
	lcall	print
	mov	a,#72
	lcall	print
	mov	a,#32
	lcall	print
	mov	a,#71
	lcall	print
	mov	a,#65
	lcall	print
	mov	a,#77
	lcall	print
	mov	a,#69
	lcall	print
	mov	a,#10
	lcall	print
	mov	a,#13
	lcall	print
.L70:
	mov	a,#26
	mov	dptr,#matches.
	movx	@dptr,a
.L80:
	mov	a,#32
	lcall	print
	mov	a,#110
	lcall	print
	mov	a,#117
	lcall	print
	mov	a,#109
	lcall	print
	mov	a,#98
	lcall	print
	mov	a,#101
	lcall	print
	mov	a,#114
	lcall	print
	mov	a,#32
	lcall	print
	mov	a,#111
	lcall	print
	mov	a,#102
	lcall	print
	mov	a,#32
	lcall	print
	mov	a,#109
	lcall	print
	mov	a,#97
	lcall	print
	mov	a,#116
	lcall	print
	mov	a,#99
	lcall	print
	mov	a,#104
	lcall	print
	mov	a,#101
	lcall	print
	mov	a,#115
	lcall	print
	mov	a,#32
	lcall	print
	mov	a,#114
	lcall	print
	mov	a,#101
	lcall	print
	mov	a,#109
	lcall	print
	mov	a,#97
	lcall	print
	mov	a,#105
	lcall	print
	mov	a,#110
	lcall	print
	mov	a,#105
	lcall	print
	mov	a,#110
	lcall	print
	mov	a,#103
	lcall	print
	mov	a,#58
	lcall	print
	mov	a,#32
	lcall	print
.L90:
	mov	dptr,#matches.
	movx	a,@dptr
	mov	dptr,#value.
	movx	@dptr,a
.L100:
	lcall	.L1000
.L110:
	mov	a,#32
	lcall	print
	mov	a,#101
	lcall	print
	mov	a,#110
	lcall	print
	mov	a,#116
	lcall	print
	mov	a,#101
	lcall	print
	mov	a,#114
	lcall	print
	mov	a,#32
	lcall	print
	mov	a,#49
	lcall	print
	mov	a,#45
	lcall	print
	mov	a,#52
	lcall	print
	mov	a,#58
	lcall	print
	mov	a,#32
	lcall	print
.L120:
	lcall	.L900
.L130:
	mov	dptr,#value.
	movx	a,@dptr
	mov	dptr,#choice.
	movx	@dptr,a
.L140:
	mov	dptr,#choice.
	movx	a,@dptr
	push	acc 
	mov	a,#4
	push	acc
	pop	b
	pop	acc
	clr	c
	subb	a,b
	jz	.C0000
	mov	c,210
	mov	247,c
	xrl	a,b
	anl	a,#128
	jnz	.C0000
	ljmp	.L110
.C0000:
.L150:
	mov	dptr,#choice.
	movx	a,@dptr
	push	acc 
	mov	a,#1
	push	acc
	pop	b
	pop	acc
	clr	c
	subb	a,b
	mov	c,210
	mov	247,c
	xrl	a,b
	anl	a,#128
	jz	.C0001
	ljmp	.L110
.C0001:
.L160:
	mov	dptr,#matches.
	movx	a,@dptr
	push	acc 
	mov	dptr,#choice.
	movx	a,@dptr
	push	acc 
	pop	b
	pop	acc
	clr	c
	subb	a,b
	mov	dptr,#matches.
	movx	@dptr,a
.L170:
	mov	dptr,#matches.
	movx	a,@dptr
	push	acc 
	mov	a,#0
	push	acc
	pop	b
	pop	acc
	subb	a,b
	jnz	.C0002
	ljmp	.L230
.C0002:
.L175:
	mov	dptr,#matches.
	movx	a,@dptr
	push	acc 
	mov	a,#0
	push	acc
	pop	b
	pop	acc
	clr	c
	subb	a,b
	mov	c,210
	mov	247,c
	xrl	a,b
	anl	a,#128
	jz	.C0003
	ljmp	.L230
.C0003:
.L180:
	mov	a,#32
	lcall	print
	mov	a,#73
	lcall	print
	mov	a,#39
	lcall	print
	mov	a,#108
	lcall	print
	mov	a,#108
	lcall	print
	mov	a,#32
	lcall	print
	mov	a,#116
	lcall	print
	mov	a,#97
	lcall	print
	mov	a,#107
	lcall	print
	mov	a,#101
	lcall	print
	mov	a,#58
	lcall	print
	mov	a,#32
	lcall	print
.L190:
	mov	a,#5
	push	acc
	mov	dptr,#choice.
	movx	a,@dptr
	push	acc 
	pop	b
	pop	acc
	clr	c
	subb	a,b
	mov	dptr,#value.
	movx	@dptr,a
.L200:
	mov	dptr,#matches.
	movx	a,@dptr
	push	acc 
	mov	dptr,#value.
	movx	a,@dptr
	push	acc 
	pop	b
	pop	acc
	clr	c
	subb	a,b
	mov	dptr,#matches.
	movx	@dptr,a
.L210:
	lcall	.L1000
.L220:
	ljmp	.L80
.L230:
	mov	a,#32
	lcall	print
	mov	a,#83
	lcall	print
	mov	a,#111
	lcall	print
	mov	a,#114
	lcall	print
	mov	a,#114
	lcall	print
	mov	a,#121
	lcall	print
	mov	a,#32
	lcall	print
	mov	a,#121
	lcall	print
	mov	a,#111
	lcall	print
	mov	a,#117
	lcall	print
	mov	a,#32
	lcall	print
	mov	a,#108
	lcall	print
	mov	a,#111
	lcall	print
	mov	a,#115
	lcall	print
	mov	a,#101
	lcall	print
	mov	a,#10
	lcall	print
	mov	a,#13
	lcall	print
.L240:
	ljmp	.L60
.L900:

.L905:
	mov	a,#0
	mov	dptr,#value.
	movx	@dptr,a
.L910:
	lcall	read
	mov	dptr,#char.
	movx	@dptr,a
.L912:
	mov	dptr,#char.
	movx	a,@dptr
	lcall	print
.L920:
	mov	dptr,#char.
	movx	a,@dptr
	push	acc 
	mov	a,#13
	push	acc
	pop	b
	pop	acc
	subb	a,b
	jnz	.C0004
	ljmp	.L950
.C0004:
.L930:
	mov	dptr,#value.
	movx	a,@dptr
	push	acc 
	mov	a,#10
	pop	b
	mul	ab
	push	acc
	mov	dptr,#char.
	movx	a,@dptr
	push	acc 
	mov	a,#48
	push	acc
	pop	b
	pop	acc
	clr	c
	subb	a,b
	pop	b
	add	a,b
	mov	dptr,#value.
	movx	@dptr,a
.L940:
	ljmp	.L910
.L945:

.L950:
	mov	a,#10
	lcall	print
	mov	a,#13
	lcall	print
.L960:
	ret
.L1000:

.L1005:

.L1010:
	mov	a,#0
	mov	dptr,#i.
	movx	@dptr,a
	mov	a,#2
	push	acc
.N0000:
.L1020:
	mov	a,#2
	push	acc
	mov	dptr,#i.
	movx	a,@dptr
	push	acc 
	mov	dptr,#value.
	movx	a,@dptr
	push	acc 
	mov	a,#10
	push	acc
	pop	b
	pop	acc
	div	ab
	push	b
	mov	a,#48
	pop	b
	add	a,b
	pop	dpl
	pop	dph
	movx	@dptr,a
.L1030:
	mov	dptr,#value.
	movx	a,@dptr
	push	acc 
	mov	a,#10
	push	acc
	pop	b
	pop	acc
	div	ab
	mov	dptr,#value.
	movx	@dptr,a
.L1040:
	mov	dptr,#i.
	movx	a,@dptr
	inc	a
	movx	@dptr,a
	pop	b
	clr	c
	subb	a,b
	jz	.C0005
	mov	c,210
	mov	247,c
	xrl	a,b
	anl	a,#128
	jz	.C0006
.C0005:
	push	b
	ljmp	.N0000
.C0006:
.L1045:

.L1050:
	mov	a,#0
	mov	dptr,#i.
	movx	@dptr,a
	mov	a,#2
	push	acc
.N0100:
.L1060:
	mov	a,#2
	push	acc
	mov	a,#2
	push	acc
	mov	dptr,#i.
	movx	a,@dptr
	push	acc 
	pop	b
	pop	acc
	clr	c
	subb	a,b
	push	acc
	pop	dpl
	pop	dph
	movx	a,@dptr
	lcall	print
.L1070:
	mov	dptr,#i.
	movx	a,@dptr
	inc	a
	movx	@dptr,a
	pop	b
	clr	c
	subb	a,b
	jz	.C0007
	mov	c,210
	mov	247,c
	xrl	a,b
	anl	a,#128
	jz	.C0008
.C0007:
	push	b
	ljmp	.N0100
.C0008:
.L1075:
	mov	a,#10
	lcall	print
	mov	a,#13
	lcall	print
.L1080:
	ret
.L2000:

	; ======= end of program =======
;
;	Example.lib - for use with BAS051
;		copyright (c) 1989 W. Washington
;
;

basint:				; initialization code
;
; place any additional initization code here
;
	mov	scon, #h'52	; initialize timer for baud rate
	mov	tmod, #h'20
	mov	th1, #-3	; set timer1 for 9600
	setb	tr1		; start timer1
	ret

print:				; output character in acc
	jnb	ti,print	; wait until tranmitter is availiable
	clr	ti		; clear transmitter ready flag
	mov	sbuf,a		; send character
	ret

read:				; input character in acc routine
	jnb	ri,read		; wait until receiver contains character
	clr	ri		; clear receiver flag
	mov	a,sbuf		; get character
	ret


	.end	start

⌨️ 快捷键说明

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