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

📄 timers.lss

📁 这是我在网上找到一个关于AVRX嵌入式操作系统在ATMAGE103上移植的例程,现在拿出来跟大学分享,希望大学喜欢呀!
💻 LSS
📖 第 1 页 / 共 5 页
字号:
000003ce <gbTRYEERAM>:
gbTRYEERAM:
        cpi     r1l, 'e'     ; if "e", set flag
 3ce:	85 36       	cpi	r24, 0x65	; 101
        brne    gbDONE
 3d0:	e9 f4       	brne	.+58     	; 0x40c
        sbr     tmp0, 1<<EEFLAG
 3d2:	22 60       	ori	r18, 0x02	; 2

000003d4 <gbCONTINUE>:
gbCONTINUE:
        mov     MonFlags, tmp0
 3d4:	b2 2e       	mov	r11, r18
        rcall   GetHexWord      ; Go for the address
 3d6:	53 d1       	rcall	.+678    	; 0x67e
        mov     tmp0, MonFlags
 3d8:	2b 2d       	mov	r18, r11
        brtc    gbCHECKWORDFLAG
 3da:	1e f4       	brtc	.+6      	; 0x3e2
        cbr     tmp0, 1<<WORDFLAG; Full address entered, no "w"
 3dc:	2e 7f       	andi	r18, 0xFE	; 254
        mov     MonFlags, tmp0
 3de:	b2 2e       	mov	r11, r18
        rjmp    gbUPDATEADDRESS
 3e0:	0c c0       	rjmp	.+24     	; 0x3fa

000003e2 <gbCHECKWORDFLAG>:
gbCHECKWORDFLAG:
        cbr     tmp0, 1<<WORDFLAG
 3e2:	2e 7f       	andi	r18, 0xFE	; 254
        mov     MonFlags, tmp0
 3e4:	b2 2e       	mov	r11, r18
        lds     tmp1, _RxByte
 3e6:	30 91 22 01 	lds	r19, 0x0122
        cpi     tmp1, 'w'
 3ea:	37 37       	cpi	r19, 0x77	; 119
        brne    gbCHECKFORWHITESPACE; Only "w" allowed if not address
 3ec:	21 f4       	brne	.+8      	; 0x3f6
        sbr     tmp0, 1<<WORDFLAG
 3ee:	21 60       	ori	r18, 0x01	; 1
        mov     MonFlags, tmp0
 3f0:	b2 2e       	mov	r11, r18
        rcall   GetHexWord      ; Try again for address
 3f2:	45 d1       	rcall	.+650    	; 0x67e
        brts    gbUPDATEADDRESS
 3f4:	16 f0       	brts	.+4      	; 0x3fa

000003f6 <gbCHECKFORWHITESPACE>:
gbCHECKFORWHITESPACE:
        rcall   IsWhite
 3f6:	5c d1       	rcall	.+696    	; 0x6b0
        brtc    gbDONE          ; Error if not whitespace
 3f8:	4e f4       	brtc	.+18     	; 0x40c

000003fa <gbUPDATEADDRESS>:
gbUPDATEADDRESS:
        tst     p2l             ; see if any user input
 3fa:	66 23       	and	r22, r22
        breq    gbDONE
 3fc:	39 f0       	breq	.+14     	; 0x40c
        sbrs    MonFlags, EEFLAG
 3fe:	b1 fe       	sbrs	r11, 1
        rjmp    gbAddress
 400:	03 c0       	rjmp	.+6      	; 0x408
        mov     EEAddressl, p1l
 402:	68 2e       	mov	r6, r24
        mov     EEAddressh, p1h
 404:	79 2e       	mov	r7, r25
        rjmp    gbDONE
 406:	02 c0       	rjmp	.+4      	; 0x40c

00000408 <gbAddress>:
gbAddress:
        mov     Addressl, p1l
 408:	48 2e       	mov	r4, r24
        mov     Addressh, p1h
 40a:	59 2e       	mov	r5, r25

0000040c <gbDONE>:
gbDONE:
        mov     p1l, Addressl   ; Restore previous...
 40c:	84 2d       	mov	r24, r4
        mov     p1h, Addressh
 40e:	95 2d       	mov	r25, r5
        sbrc    MonFlags, EEFLAG
 410:	b1 fc       	sbrc	r11, 1
        mov     p1l, EEAddressl
 412:	86 2d       	mov	r24, r6
        sbrc    MonFlags, EEFLAG
 414:	b1 fc       	sbrc	r11, 1
        mov     p1h, EEAddressh
 416:	97 2d       	mov	r25, r7
        ret
 418:	08 95       	ret

0000041a <_DumpMemory>:
        _ENDFUNC
;
;---------------------------------------------
; void _DumpMemory(char, void *)
;
; Passed:       p1 = Start Address
;               p2 = number of bytes to dump
; Returns:      Nothing
; Uses:         MonFlags (register)
;
        _FUNCTION(_DumpMemory)
_DumpMemory:
        sbrs    MonFlags, WORDFLAG
 41a:	b0 fe       	sbrs	r11, 0
        rjmp    m10f
 41c:	03 c0       	rjmp	.+6      	; 0x424

        cbr     p2l, 0x01        ; force even address to start.
 41e:	6e 7f       	andi	r22, 0xFE	; 254
        sbrc    p1l, 0x00        ; Add one for even count
 420:	80 fd       	sbrc	r24, 0
        inc     p1l
 422:	83 95       	inc	r24

00000424 <m10f>:
m10f:
        mov     TempWl, p2l
 424:	c6 2e       	mov	r12, r22
        mov     TempWh, p2h
 426:	d7 2e       	mov	r13, r23
        mov     R1, p1l
 428:	18 2e       	mov	r1, r24

0000042a <m10c>:
m10c:
        rcall   PutCR
 42a:	d2 d0       	rcall	.+420    	; 0x5d0
        mov     p1h, TempWh          ; Spit out address
 42c:	9d 2d       	mov	r25, r13
        mov     p1l, TempWl
 42e:	8c 2d       	mov	r24, r12
        rcall   PutHexWord
 430:	63 d1       	rcall	.+710    	; 0x6f8

00000432 <m10d>:
m10d:
        rcall   PutSpace
 432:	d0 d0       	rcall	.+416    	; 0x5d4
        rcall   GetByteWord
 434:	8b d0       	rcall	.+278    	; 0x54c
        sbrc    MonFlags, WORDFLAG
 436:	b0 fc       	sbrc	r11, 0
        rjmp    m11
 438:	04 c0       	rjmp	.+8      	; 0x442
        rcall   PutHexByte
 43a:	60 d1       	rcall	.+704    	; 0x6fc
        ldi     p1l, lo8(1)
 43c:	81 e0       	ldi	r24, 0x01	; 1
        ldi     p1h, hi8(1)
 43e:	90 e0       	ldi	r25, 0x00	; 0
        rjmp    m12
 440:	03 c0       	rjmp	.+6      	; 0x448

00000442 <m11>:
m11:
        rcall   PutHexWord
 442:	5a d1       	rcall	.+692    	; 0x6f8
        ldi     p1l, lo8(2)
 444:	82 e0       	ldi	r24, 0x02	; 2
        ldi     p1h, hi8(2)
 446:	90 e0       	ldi	r25, 0x00	; 0

00000448 <m12>:
m12:
        add     TempWl, p1l
 448:	c8 0e       	add	r12, r24
        adc     TempWh, p1h
 44a:	d9 1e       	adc	r13, r25
        sub     R1, p1l
 44c:	18 1a       	sub	r1, r24
        breq    m10exit
 44e:	21 f0       	breq	.+8      	; 0x458

00000450 <m10e>:
m10e:
        mov     Zl, TempWl
 450:	ec 2d       	mov	r30, r12
        cbr     Zl, 0xF0
 452:	ef 70       	andi	r30, 0x0F	; 15
        breq    m10c            ; New line every 16 bytes.
 454:	51 f3       	breq	.-44     	; 0x42a
        rjmp    m10d
 456:	ed cf       	rjmp	.-38     	; 0x432

00000458 <m10exit>:
m10exit:
        ret
 458:	08 95       	ret

0000045a <_ModifyMemory>:
        _ENDFUNC
;
; void _ModifyMemory(void *)
;
; PASSED:       p1 = address
;
; Uses:         MonFlags (register)
;
        _FUNCTION(_ModifyMemory)
_ModifyMemory:
        mov     TempWl, p1l
 45a:	c8 2e       	mov	r12, r24
        mov     TempWh, p1h
 45c:	d9 2e       	mov	r13, r25

0000045e <_ModifyMemory_>:
_ModifyMemory_:
        rcall   PutCR
 45e:	b8 d0       	rcall	.+368    	; 0x5d0
        mov     p1l, TempWl
 460:	8c 2d       	mov	r24, r12
        mov     p1h, TempWh
 462:	9d 2d       	mov	r25, r13
        rcall   PutHexWord
 464:	49 d1       	rcall	.+658    	; 0x6f8
        rcall   PutSpace
 466:	b6 d0       	rcall	.+364    	; 0x5d4

00000468 <_mmNEXT>:
_mmNEXT:
        rcall   GetByteWord
 468:	71 d0       	rcall	.+226    	; 0x54c
        sbrc    MonFlags, WORDFLAG
 46a:	b0 fc       	sbrc	r11, 0
        rcall   PutHexWord
 46c:	45 d1       	rcall	.+650    	; 0x6f8
        sbrs    MonFlags, WORDFLAG
 46e:	b0 fe       	sbrs	r11, 0
        rcall   PutHexByte
 470:	45 d1       	rcall	.+650    	; 0x6fc

00000472 <_mmGETDATA>:
_mmGETDATA:
        ldi     p1l, '-'
 472:	8d e2       	ldi	r24, 0x2D	; 45
        rcall   PutChar
 474:	d5 d0       	rcall	.+426    	; 0x620
        sbrs    MonFlags, WORDFLAG
 476:	b0 fe       	sbrs	r11, 0
        rcall   GetHexByte
 478:	04 d1       	rcall	.+520    	; 0x682
        sbrc    MonFlags, WORDFLAG
 47a:	b0 fc       	sbrc	r11, 0
        rcall   GetHexWord
 47c:	00 d1       	rcall	.+512    	; 0x67e
        brtc    _mmNODATA
 47e:	66 f4       	brtc	.+24     	; 0x498

00000480 <_mmWRITE>:
_mmWRITE:
        rcall   PutByteWord
 480:	76 d0       	rcall	.+236    	; 0x56e
        rcall   PutSpace
 482:	a8 d0       	rcall	.+336    	; 0x5d4

00000484 <_mmGOTONEXT>:
_mmGOTONEXT:
        ldi     Zl, lo8(1)
 484:	e1 e0       	ldi	r30, 0x01	; 1
        ldi     Zh, hi8(1)
 486:	f0 e0       	ldi	r31, 0x00	; 0
        sbrc    MonFlags, WORDFLAG
 488:	b0 fc       	sbrc	r11, 0
        adiw    Zl, 1
 48a:	31 96       	adiw	r30, 0x01	; 1
        add     TempWl, Zl
 48c:	ce 0e       	add	r12, r30
        adc     TempWh, Zh
 48e:	df 1e       	adc	r13, r31
        mov     Zl, TempWl
 490:	ec 2d       	mov	r30, r12
        cbr     Zl, 0xF0
 492:	ef 70       	andi	r30, 0x0F	; 15
        breq    _ModifyMemory_   ; Start a new line every 16 bytes
 494:	21 f3       	breq	.-56     	; 0x45e
        rjmp    _mmNEXT
 496:	e8 cf       	rjmp	.-48     	; 0x468

00000498 <_mmNODATA>:
_mmNODATA:
        rcall   IsWhite
 498:	0b d1       	rcall	.+534    	; 0x6b0
        brtc    _mmDONE         ; If not white, then error
 49a:	36 f4       	brtc	.+12     	; 0x4a8
        tst     p2l
 49c:	66 23       	and	r22, r22
        brne    _mmWRITE        ; If some data entered, then write
 49e:	81 f7       	brne	.-32     	; 0x480
        lds     tmp0, _RxByte
 4a0:	20 91 22 01 	lds	r18, 0x0122
        cpi     tmp0, 0x0D       ; if CR then exit
 4a4:	2d 30       	cpi	r18, 0x0D	; 13
        brne    _mmGOTONEXT     ; otherwize, just go to next byte
 4a6:	71 f7       	brne	.-36     	; 0x484

000004a8 <_mmDONE>:
_mmDONE:
        ret
 4a8:	08 95       	ret

000004aa <ctdt0>:
 4aa:	0d 50       	subi	r16, 0x0D	; 13
 4ac:	49 44       	sbci	r20, 0x49	; 73
 4ae:	20 46       	sbci	r18, 0x60	; 96
 4b0:	6c 67       	ori	r22, 0x7C	; 124
 4b2:	20 50       	subi	r18, 0x00	; 0
 4b4:	72 69       	ori	r23, 0x92	; 146
 4b6:	20 46       	sbci	r18, 0x60	; 96
 4b8:	72 61       	ori	r23, 0x12	; 18
 4ba:	6d 65       	ori	r22, 0x5D	; 93
 4bc:	20 53       	subi	r18, 0x30	; 48
 4be:	52 0d       	add	r21, r2
	...

000004c1 <ctdt1>:
 4c1:	52 30       	cpi	r21, 0x02	; 2
 4c3:	20 20       	and	r2, r0
	...

000004c6 <ctdt2>:
 4c6:	52 31       	cpi	r21, 0x12	; 18
 4c8:	36 20       	and	r3, r6
	...

000004cb <ctdt3>:
 4cb:	0d 20       	and	r0, r13
 4cd:	20 20       	and	r2, r0
 4cf:	20 20       	and	r2, r0
 4d1:	50 43       	sbci	r21, 0x30	; 48
 4d3:	20 20       	and	r2, r0
	...

000004d6 <_PrintContext>:
        _ENDFUNC
;----------------------------------------------
; void _PrintContext(ObjectID *)
;
; Prints a pretty picture of the context of a process.
;
; PASSED:       nothing
; RETURNS:
; USES:         ObjectID (register)
;
ctdt0:  _DB  "\rPID Flg Pri Frame SR\r"
ctdt1:  _DB  "R0  "
ctdt2:  _DB  "R16 "
ctdt3:  _DB  "\r     PC  "
        _ALIGN

        _FUNCTION(_PrintContext)
_PrintContext:

        ldi     p1h, hi8(ctdt0)
 4d6:	94 e0       	ldi	r25, 0x04	; 4
        ldi     p1l, lo8(ctdt0)
 4d8:	8a ea       	ldi	r24, 0xAA	; 170
        rcall   _PrintString
 4da:	7e d0       	rcall	.+252    	; 0x5d8

        mov     p1l, ObjectIDl
 4dc:	88 2d       	mov	r24, r8
        mov     p1h, ObjectIDh
 4de:	99 2d       	mov	r25, r9
        rcall   PutHexWord      ; Print PID
 4e0:	0b d1       	rcall	.+534    	; 0x6f8
        rcall   PutSpace
 4e2:	78 d0       	rcall	.+240    	; 0x5d4

        mov     Zl, ObjectIDl
 4e4:	e8 2d       	mov	r30, r8
        mov     Zh, ObjectIDh
 4e6:	f9 2d       	mov	r31, r9
        ldd     p1l, Z+PidState
 4e8:	82 81       	ldd	r24, Z+2	; 0x02
        rcall   PutHexByte
 4ea:	08 d1       	rcall	.+528    	; 0x6fc
        rcall   PutSpace
 4ec:	73 d0       	rcall	.+230    	; 0x5d4
        mov     Zl, ObjectIDl
 4ee:	e8 2d       	mov	r30, r8
        mov     Zh, ObjectIDh
 4f0:	f9 2d       	mov	r31, r9
        ldd     p1l, Z+PidPriority
 4f2:	83 81       	ldd	r24, Z+3	; 0x03
        rcall   PutHexByte
 4f4:	03 d1       	rcall	.+518    	; 0x6fc
        rcall   PutSpace
 4f6:	6e d0       	rcall	.+220    	; 0x5d4
        rcall   PutSpace
 4f8:	6d d0       	rcall	.+218    	; 0x5d4

        mov     Zl, ObjectIDl
 4fa:	e8 2d       	mov	r30, r8
        mov     Zh, ObjectIDh
 4fc:	f9 2d       	mov	r31, r9
        ldd     Yl, Z+PidSP+NextL   ; Z -> Frame
 4fe:	c4 81       	ldd	r28, Z+4	; 0x04
        ldd     Yh, Z+PidSP+NextH
 500:	d5 81       	ldd	r29, Z+5	; 0x05
        mov     p1l, Yl
 502:	8c 2f       	mov	r24, r28
        mov     p1h, Yh
 504:	9d 2f       	mov	r25, r29
        rcall   PutHexWord      ; Print Frame Pointer
 506:	f8 d0       	rcall	.+496    	; 0x6f8
        rcall   PutSpace
 508:	65 d0       	rcall	.+202    	; 0x5d4
        rcall   PutSpace
 50a:	64 d0       	rcall	.+200    	; 0x5d4

        adiw    Yl, 1           ; Remember Stack are post dec!
 50c:	21 96       	adiw	r28, 0x01	; 1

        ld      p1l, Y+         ; SREG
 50e:	89 91       	ld	r24, Y+
        rcall   PutHexByte
 510:	f5 d0       	rcall	.+490    	; 0x6fc

00000512 <Loop>:
        ;
        ; Print R0-R15
        ;
Loop:
        rcall   Print16RegPre
 512:	0e d0       	rcall	.+28     	; 0x530
        ldi     p1h, hi8(ctdt1)
 514:	94 e0       	ldi	r25, 0x04	; 4
        ldi     p1l, lo8(ctdt1)
 516:	81 ec       	ldi	r24, 0xC1	; 193
        rcall   Print16Reg
 518:	10 d0       	rcall	.+32     	; 0x53a
        rcall   Print16RegPre
 51a:	0a d0       	rcall	.+20     	; 0x530
        ldi     p1h, hi8(ctdt2)
 51c:	94 e0       	ldi	r25, 0x04	; 4
        ldi     p1l, lo8(ctdt2)
 51e:	86 ec       	ldi	r24, 0xC6	; 198
        rcall   Print16Reg
 520:	0c d0       	rcall	.+24     	; 0x53a
        ldi     p1h, hi8(ctdt3)
 522:	94 e0       	ldi	r25, 0x04	; 4
        ldi     p1l, lo8(ctdt3)
 524:	8b ec       	ldi	r24, 0xCB	; 203
        rcall   _PrintString
 526:	58 d0       	rcall	.+176    	; 0x5d8
        ld      p1h, Y+
 528:	99 91       	ld	r25, Y+
        ld      p1l, Y
 52a:	88 81       	ld	r24, Y
        rcall   PutHexWord
 52c:	e5 d0       	rcall	.+458    	; 0x6f8
        ret
 52e:	08 95       	ret

00000530 <Print16RegPre>:

⌨️ 快捷键说明

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