Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
информатика 2.docx
Скачиваний:
5
Добавлен:
01.03.2025
Размер:
42.16 Кб
Скачать

7. Дизассемблированная программа

5: ldi r16,$2 ;размещение вершины стека по адресу

+00000000: E002 LDI R16,0x02 Load immediate

6: out sph,r16

+00000001: BF0E OUT 0x3E,R16 Out to I/O location

7: ldi r17,$5F ;старшей ячейки ОЗУ

+00000002: E51F LDI R17,0x5F Load immediate

8: out spl,r17

+00000003: BF1D OUT 0x3D,R17 Out to I/O location

9: ldi r16,0xFF ;инициализация портов ввода/вывода

+00000004: EF0F SER R16 Set Register

10: out DDRD,r16 ;PORTC - на вывод

+00000005: BB01 OUT 0x11,R16 Out to I/O location

@00000006: main

13: ldi r16,0x15 ; 1 ТАКТ занесение в РОН r16 числа $15 (чётные биты)

+00000006: E105 LDI R16,0x15 Load immediate

14: out PORTD,r16 ;вывод на PORTC значения r16

+00000007: BB02 OUT 0x12,R16 Out to I/O location

15: In r17,sreg ;сохранение регистра sreg

+00000008: B71F IN R17,0x3F In from I/O location

16: rcall delay1 ;вызов подпрограммы задержки

+00000009: D00D RCALL PC+0x000E Relative call subroutine

17: out SREG,r17 ;восстановление SREG после возврата из delay

+0000000A: BF1F OUT 0x3F,R17 Out to I/O location

19: ldi r16,0x2A ; 2 ТАКТ занесение в РОН r16 числа $2A (нечётные биты)

+0000000B: E20A LDI R16,0x2A Load immediate

20: out PORTD,r16 ; вывод на PORTC значения r16

+0000000C: BB02 OUT 0x12,R16 Out to I/O location

21: In r17,sreg ;сохранение регистра sreg

+0000000D: B71F IN R17,0x3F In from I/O location

22: rcall delay1 ;вызов подпрограммы задержки

+0000000E: D008 RCALL PC+0x0009 Relative call subroutine

23: out SREG,r17 ;восстановление SREG после возврата из delay

+0000000F: BF1F OUT 0x3F,R17 Out to I/O location

25: ldi r16,0x00 ; 3 ТАКТ занесение в РОН r16 числа 0 (ничего не горит)

+00000010: E000 LDI R16,0x00 Load immediate

26: out PORTD,r16 ; вывод на PORTC значения r16

+00000011: BB02 OUT 0x12,R16 Out to I/O location

27: In r17,sreg ;сохранение регистра sreg

+00000012: B71F IN R17,0x3F In from I/O location

28: rcall delay1 ;вызов подпрограммы задержки

+00000013: D003 RCALL PC+0x0004 Relative call subroutine

29: rcall delay1 ;вызов подпрограммы задержки

+00000014: D002 RCALL PC+0x0003 Relative call subroutine

30: out SREG,r17 ;восстановление SREG после возврата из delay

+00000015: BF1F OUT 0x3F,R17 Out to I/O location

31: rjmp main ;возврат на main

+00000016: CFEF RJMP PC-0x0010 Relative jump

@00000017: delay1

34: clr r18 ;очистка регистра r18

+00000017: 2722 CLR R18 Clear Register

@00000018: met1

36: rcall delay2 ;переход на delay2

+00000018: D004 RCALL PC+0x0005 Relative call subroutine

37: inc r18 ;инкремент r18

+00000019: 9523 INC R18 Increment

38: cpi r18,0xC8 ;сравнение значения r18 с числом 200 ( 1100 0100 $C4 )

+0000001A: 3C28 CPI R18,0xC8 Compare with immediate

39: brne met1 ;если значение в r18?200, то переход на met1

+0000001B: F7E1 BRNE PC-0x03 Branch if not equal

40: ret ;иначе - возврат в основную программу

+0000001C: 9508 RET Subroutine return

@0000001D: delay2

43: clr r19 ;очистка регистра r19

+0000001D: 2733 CLR R19 Clear Register

@0000001E: met2

45: rcall delay3 ;переход на delay3

+0000001E: D004 RCALL PC+0x0005 Relative call subroutine

46: inc r19 ;инкремент r19

+0000001F: 9533 INC R19 Increment

47: cpi r19,0xC8 ;сравнение значения r19 с числом 200 ( 1100 0100 $C4 )

+00000020: 3C38 CPI R19,0xC8 Compare with immediate

48: brne met2 ;если значение в r19?200, то переход на met2

+00000021: F7E1 BRNE PC-0x03 Branch if not equal

49: ret ;иначе - возврат в подпрограмму №1

+00000022: 9508 RET Subroutine return

@00000023: delay3

52: clr r20 ;очистка регистра r20

+00000023: 2744 CLR R20 Clear Register

@00000024: met3

54: inc r20 ;инкремент r20

+00000024: 9543 INC R20 Increment

55: cpi r20,0xFA ;сравнение значения r20 с числом 250 ( 1111 1010 $FA )

+00000025: 3F4A CPI R20,0xFA Compare with immediate

56: brne met3 ;если значение в r20?250, то переход на met3

+00000026: F7E9 BRNE PC-0x02 Branch if not equal

57: ret ;иначе - возврат в подпрограмму №2

+00000027: 9508 RET Subroutine return