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

📄 mca.asm

📁 上课老师给的8086仿真器
💻 ASM
字号:
 	ORG 0000H	;2002/1/23 this is a program of rxd
	LJMP START	;A V
	ORG 000bH
	LJMP INTT0
	ORG 200H
	txen bit p3.5
START:	mov sp,#60h
	CLR RS0			
	MOV R7,#0FFH
	DJNZ R7,$
	mov 23h,#00h		;intt0 count
	MOV R3,#01H		;RD-COM
	MOV TMOD,#21H
	MOV TL1,#0F3H
	MOV TH1,#0F3H
	SETB TR1
	MOV 87H,#80H
	MOV SCON,#0D8H
	mov th0,#3ch
	mov tl0,#0b0h
	setb et0
	setb pt0
	setb tr0
	setb ea
START1:	MOV R2,#00H		;S-ADDR
RDCON:	MOV R1,#50H		;RX-BUF
	mov r5,#00h		;tx-saddr count
	MOV R6,#00H		;AV
	MOV 24H,#00H		;WDOG
	LCALL MCOM
	LCALL BUF1
	MOV R7,#0C0H
DISCON1:LCALL DIS		;Ri in 1 area
	DJNZ R7,DISCON1
	INC R2
	CJNE R2,#03H,RDCON
	SJMP START1
;--------------------------------------------------
intt0:	push acc
	push psw
	inc 23h
	mov a,23h
	cjne a,#0ah,exit	;1s
	mov 23h,#00h
	inc 24h
	mov a,24h
	clr c
	add a,#0fdh
	jnc exit
	pop psw
	pop acc
	clr ea
	mov dptr,#rst
	push dpl
	push dph
	reti
rst:	mov a,#00h	
	push acc
	push acc
	reti
exit:	mov th0,#3ch
	mov tl0,#0b0h
	pop psw
	pop acc
	reti
;---------------------------------------------
MCOM:	
TX_ADDR:	
	setb tb8			
	MOV A,R2		;TX-SADDR
	clr txen
	MOV SBUF,A
	JNB TI,$
	CLR TI
	setb txen
	mov r7,#20h
	acall xdey
	inc r5
	cjne r5,#05h,rx_reply	
	mov r5,#00h
	ajmp ec
RX_REPLY:
	JBC RI,IF_AGREE	;WAIT SACK
	AJMP  tx_addr	
IF_AGREE:
	mov r5,#00h
	MOV A,SBUF
	XRL A,R2
	JZ TX_COMD
COMEBAKE:
	MOV A,#0FFH
	SETB TB8
	clr txen
	MOV SBUF,A
	JNB TI,$
	CLR TI
	setb txen
	SJMP TX_ADDR
TX_COMD:
	CLR TB8
	MOV A,R3	;r3-rdcom
	clr txen
	MOV SBUF,A
	JNB TI,$
	CLR TI
	setb txen
RX_STATE:
	JBC RI,IF_RIGHT
	SJMP RX_STATE
IF_RIGHT:
	MOV A,SBUF
	JNB ACC.7,RECEIVE
	SJMP COMEBAKE
RECEIVE:				
	JNB ACC.1,COMEBAKE	
RX_BYTES:
	JNB RI,RX_BYTES
	CLR RI
	MOV A,SBUF
	MOV R4,A
	MOV @R1,A		;r1: rdbuf
	ADD A,R6
	MOV R6,A
	INC R1
RX_DATA:
	JNB RI,RX_DATA
	CLR RI
	MOV A,SBUF
	MOV @R1,A
	ADD A,R6
	MOV R6,A
	INC R1
	DJNZ R4,RX_DATA
	JNB RI,$
	CLR RI
	MOV A,SBUF
	CJNE A,06H,ER
	mov r6,#00h
	mov r1,#50h
	RET
ER:	mov r6,#00h
	mov r1,#50h
	ACALL BUFER
DISER:	ACALL DIS
	SJMP DISER
EC:	ACALL BUFER
	MOV 79H,#16H
	AJMP DISER

BUFER:	MOV 7EH,#05H
	mov a,r2
	anl a,#0f0h
	swap a
	MOV 7DH,a
	mov a,r2
	anl a,#0fh
	MOV 7CH,a
	MOV 7BH,#14H
	MOV 7AH,#0eh
	MOV 79H,#15h
	RET
BUF1:	MOV 7EH,#05H
	mov a,r2
	anl a,#0f0h
	swap a
	MOV 7DH,a
	mov a,r2
	anl a,#0fh
	MOV 7CH,a
	MOV 7BH,#14H
	mov a,51H
	push acc
	anl a,#0f0h
	swap a
	MOV 7AH,a
	pop acc 
	anl a,#0fh
	MOV 79H,a
	RET
;---------------------------------------------------------
DIS:	SETB RS0
	MOV A,#00H
	MOV R0,#21H
	MOVX @R0,A
	MOV R0,#7EH
	MOV R2,#20H
	MOV R3,#00H
	MOV DPTR,#LS0
LS2:	MOV A,@R0
	MOVC A,@A+DPTR
	MOV R1,#22H
	MOVX @R1,A
	MOV A,R2
	DEC R1
	MOVX @R1,A
	DEC R0
LS1:	DJNZ R3,LS1
	CLR C
	RRC A
	MOV R2,A
	JNZ LS2
	INC R1
	MOV A,#0FFH
	MOVX @R1,A
	CLR RS0
	RET
LS0:    DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
	DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,7FH,0BFH,8FH,0Fh
XDEY:	PUSH 07H
LP2:	PUSH 07H
LP1:	PUSH 07H
LP0:	DJNZ R7,LP0
	POP 07H
	DJNZ R7,LP1
	POP 07H
	DJNZ R7,LP2
	POP 07H
      	DJNZ R7,XDEY
      	RET
	END

⌨️ 快捷键说明

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