Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
асвт.курсовая.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
1.14 Mб
Скачать

465 Inx hl; переход к сост-ю персонажа

466 MVI M,0; сост-е i-го персонажа = 0

467

468 SHLD ОЗУ + 9

469

INIT + 470

471 JMP INIT + 550; выход из блока проверок

472

473

474 CPI 2; А = 2?

475

476 JNZ INIT + 493

477

478

479 LHLD ОЗУ + 9

INIT + 480

481

482 MVI M, 2

483

484 INX HL

485 MVI M, 0

486

487 SHLD ОЗУ + 9

488

489

INIT + 490 JMP INIT + 550

491

492

493 CPI 3; А = 3?

494

495 JNZ INIT + 512

496

497

498 LHLD ОЗУ + 9

499

INIT + 500

501 MVI M, 3

502

503 INX HL

504 MVI M, 0

505

506 SHLD ОЗУ + 9

507

508

509 JMP INIT + 550

INIT + 510

511

512 CPI 4; А = 4?

513

514 JNZ INIT + 531

515

516

517 LHLD ОЗУ + 9

518

519

INIT + 520 MVI M, 4

521

522 INX HL

523 MVI M, 0

524

525 SHLD ОЗУ + 9

526

527

528 JMP INIT + 550

529

INIT + 530

531 CPI 5; А = 5?

532

533 JNZ INIT + 550

534

535

536 LHLD ОЗУ+ 9

537

538

539 MVI M, 5

INIT + 540

541 INX HL

542 MVI M, 0

543

544 SHLD ОЗУ + 9

545

546

547 JMP INIT + 550

548

549

INIT + 550 LHLD ОЗУ + 9

551

552

553 INX HL; CT1++

554 SHLD ОЗУ + 9

555

556

557 LDA ОЗУ + 10; младш. байт CT1 в аккум.

558

559

INIT + 560 CPI ОЗУ + 87; за последним персонажем?

561

562 JNZ INIT + 312; возврат в начало цикла

563

564

565 NOP

566 NOP

567 NOP

568 NOP

569 NOP

INIT + 570 NOP

571 NOP

572 NOP

573 RET

Принципиальная схема программного модуля INIT (в действительных адресах):

0013,0014,0015 LXI HL, 0000; содержимое HL = 0

0016,0017,0018 SHLD 0059; BP = 0

0019 IN port C1(0-3); ввод с порта С1(0-3)

001A,001B CPI 08; А = 00001000?

001C,001D,001E JNZ 0058; к следующей проверке

001F,0020,0021 LXI HL, 602C; А(завязка1)

0022,0023,0024 SHLD 0057; сохр. адр. завязки1 в ENV

0025,0026,0027 LXI HL, 5DD3; А(предмет11)

0028,0029,002A SHLD 003A; сохр. адр. предмета11 в ITM1

002B,002C,002D LXI HL, 5DD9; А(предмет12)

002E,002F,0030 SHLD 003C; сохр. адр. предмета12 в ITM2

0031,0032,0033 LXI HL, 5DDF; А(предмет13)

0034,0035,0036 SHLD 003E; и т. д.

0037,0038,0039 LXI HL, 5DE9; А(предмет14)

003A,003B,003C SHLD 0040

003D,003E,003F LXI HL, 5E04; А(предмет15)

0040,0041,0042 SHLD 0042

0043,0044,0045 LXI HL, 5E14; А(предмет16)

0046,0047,0048 SHLD 0044

0049,004A,004B LXI HL, 5E21; А(предмет17)

004C,004D,004E SHLD 0046

004F,0050,0051 LXI HL, 5E2C; А(предмет18)

0052,0053,0054 SHLD 0048

0055,0056,0057 JMP 0110; выход из блока проверок

0058,0059 CPI 04; А = 00000100?

005A,005B,005C JNZ 0096

005D,005E,005F LXI HL, 618B; А(завязка2)

0060,0061,0062 SHLD 0057

0063,0064,0065 LXI HL, 5E76; А(предмет21)

0066,0067,0068 SHLD 003A

0069,006A,006B LXI HL, 5E7D; А(предмет22)

006C,006D,006E SHLD 003C

006F,0070,0071 LXI HL, 5E82; А(предмет23)

0072,0073,0074 SHLD 003E

0075,0076,0077 LXI HL, 5E88; А(предмет24)

0078,0079,007A SHLD 0040

007B,007C,007D LXI HL, 5E90; А(предмет25)

007E,007F,0080 SHLD 0042

0081,0082,0083 LXI HL, 5EA0; А(предмет26)

0084,0085,0086 SHLD 0044

0087,0088,0089 LXI HL, 5EB0; А(предмет27)

008A,008B,008C SHLD 0046

008D,008E,008F LXI HL, 5EB8; А(предмет28)

0090,0091,0092 SHLD 0048

0093,0094,0095 JMP 0110

0096,0097 CPI 02; А = 00000010?

0098,0099,009A JNZ 004D

009B,009C,009D LXI HL, 627C; А(завязка3)

009E,009F,00A0 SHLD 0057

00A1,00A2,00A3 LXI HL, 5F05; А(предмет31)

00A4,00A5,00A6 SHLD 003A

00A7,00A8,00A9 LXI HL, 5F0A; А(предмет32)

00AA,00AB,00AC SHLD 003C

00AD,00AE,00AF LXI HL, 5F0F; А(предмет33)

00B0,00B1,00B2 SHLD 003E

00B3,00B4,00B5 LXI HL, 5F16; А(предмет34)

00B6,00B7,00B8 SHLD 0040

00B9,00BA,00BB LXI HL, 5F1C; А(предмет35)

00BC,00BD,00BE SHLD 0042

00BF,00C0,00C1 LXI HL, 5F2A; А(предмет36)

00C2,00C3,00C4 SHLD 0044

00C5,00C6,00C7 LXI HL, 5F35; А(предмет37)

00C8,00C9,00CA SHLD 0046

00CB,00CC,00CD LXI HL, 5F44; А(предмет38)

00CE,00CF,00D0 SHLD 0048

00D1,00D2,00D3 JMP 0110

00D4,00D5 CPI 01; А = 00000001?

00D6,00D7,00D8 JNZ 0110

00D9,00DA,00DB LXI HL, 6394; А(завязка4)

00DC,00DD,00DE SHLD 0057

00DF,00E0,00E1 LXI HL, 5FB0; А(предмет41)

00E2,00E3,00E4 SHLD 003A

00E5,00E6,00E7 LXI HL, 5FB5; А(предмет42)

00E8,00E9,00EA SHLD 003C

00EB,00EC,00ED LXI HL, 5FBB; А(предмет43)

00EE,00EF,00F0 SHLD 003E

00F1,00F2,00F3 LXI HL, 5FC2; А(предмет44)

00F4,00F5,00F6 SHLD 0040

00F7,00F8,00F9 LXI HL, 5FDD; А(предмет45)

00FA,00FB,00FC SHLD 0042

00FD,00FE,00FF LXI HL, 5FEC; А(предмет46)

0100,0101,0102 SHLD 0044

0103,0104,0105 LXI HL, 5FF6; А(предмет47)

0106,0107,0108 SHLD 0046

0109,010A,010B LXI HL, 6005; А(предмет48)

010C,010E,010F SHLD 0048

0110 IN port С1(4-7); ввод с порта C1(4-7)

0111,0112 ANI 70; выделить 5-й, 6-й и 7-й биты

0113,0114,0115 LXI HL, 0039; адр. переменной NPROC

0116,0117 CPI 40; А = 01000000?

0118,0119,011A JNZ 0120; к следующей проверке

011B,011C MVI M, 00; поместить 0 в NPROC

011D,011E,011F JMP 0131; выход из блока проверок

0120,0121 CPI 20; А = 00100000?

0122,0123,0124 JNZ 012A

0125,0126 MVI M, 01

0127,0128,0129 JMP 0131

012A,012B CPI 10; А = 00010000?

012C,012D,012E JNZ 0131

012F,0130 MVI M, 02

0131,0132,0133 LXI HL, 0000

0134,0135,0136 SHLD 000B; CT2 = 0;

0137,0138,0139 SHLD 000D; CT3 = 0;

013A,013B,013C LXI HL, 004B; адр. 1-го персонажа

013D,013E,013F SHLD 0009; CT1 на 1-го персонажа

0140 IN port B1

0141,0142 ANI 3F; выделить 6 младших битов

0143,0144,0145 STA 0010; сохр. аккум. в старшем байте RES

0146 IN port A1

0147,0148 ANI 1F; выделить 5 младших битов

0149,014A,014B STA 0013; сохр. в старшем байте TMP

014C,014D,014E LHLD 000B; загр. в HL знач-е CT2

014F INX HL; CT2++

0150,0151,0152 SHLD 000B

0153,0154,0155 LDA 0010; загр. в аккум. старш. байт RES

0156 RAR; >>RES>>

0157,0158,0159 STA 0010;

015A,015B,015C JNC 014C; в начало цикла

015D,015E,015F LDA 000C; загр. в аккум. младш. байт CT2

0160,0161 CPI 01; А = 1?

0162,0163,0164 JNZ 0170; к следующей проверке

0165,0166,0167 LHLD 0009; содержимое CT1 в HL

0168,0169 MVI M, 5D; A(старший байт адреса имени1)

016A INX HL; HL++

016B,016C MVI M, A4; A(младший байт адреса имени1)

016D,016E,016F JMP 01C0; выход из блока проверок

0170,0171 CPI 02; А = 2?

0172,0173,0174 JNZ 0180

0175,0176,0177 LHLD 0009

0178,0179 MVI M, 5D; A(старший байт адреса имени2)

017A INX HL; HL++

017B,017C MVI M, AC; A(младший байт адреса имени2)

017D,017E,017F JMP 01C0

0180,0181 CPI 03 А = 3?

0182,0183,0184 JNZ 0190

0185,0186,0187 LHLD 0009

0188,0189 MVI M, 5D; A(старший байт адреса имени3)

018A INX HL; HL++

018B,018C MVI M, B6; A(младший байт адреса имени3)

018D,018E,018F JMP 01C0

0190,0191 CPI 04 А = 4?

0192,0193,0194 JNZ 01A0

0195,0196,0197 LHLD 0009

0198,0199 MVI M, 5D; A(старший байт адреса имени4)

019A INX HL; HL++

019B,019C MVI M, BD; A(младший байт адреса имени4)

019D,019E,019F JMP 01C0

01A0,01A1 CPI 05; А = 5?

01A2,01A3,01A4 JNZ 01B0

01A5,01A6,01A7 LHLD 0009

01A8,01A9 MVI M, 5D; A(старший байт адреса имени5)

01AA INX HL; HL++

01AB,01AC MVI M, C2; A(младший байт адреса имени5)

01AD,01AE,01AF JMP 01C0

01B0,01B1 CPI 06; А = 6?

01B2,01B3,01B4 JNZ 01C0

01B5,01B6,01B7 LHLD 0009

01B8,01B9 MVI M, 5D; A(старший байт адреса имени6)

01BA INX HL; HL++

01BB,01BC MVI M, CC; A(младший байт адреса имени6)

01BD,01BE,01BF JMP 01C0

01C0,01C1,01C2 LHLD 0009

01C3 INX HL

01C4,01C5,01C6 SHLD 0009; CT1++

01C7,01C8,01C9 LHLD 000D; загр. в HL содержимое CT3

01CA INX HL

01CB,01CC,01CD SHLD 000D; CT3++

01CE,01CF,01D0 LDA 0013; старш. байт TMP в аккум.

01D1 RAR; >>TMP>>

01D2,01D3,01D4 STA 0013;

01D5,01D6,01D7 JNC 01C7; переход в начало цикла

01D8,01D9,01DA LDA 000E; младш. байт CT3 в аккум.

01DB,01DC CPI 01; А = 1?

01DD,01DE,01DF JNZ 01EE; переход к следующей проверке

01E0,01E1,01E2 LHLD 0009; загрузить в HL знач-е CT1

01E3,01E4 MVI M, 01; звание i-го персонажа = 1

01E5 INX HL; переход к сост-ю персонажа

01E6,01E7 MVI M,00; сост-е i-го персонажа = 0

01E8,01E9,01EA SHLD 0009

01EB,01EC,01ED JMP 023A; выход из блока проверок

01EE,01EF CPI 02; А = 2?

01F0,01F1,01F2 JNZ 0201

01F3,01F4,01F5 LHLD 0009

01F6,01F7 MVI M, 02

01F8 INX HL

01F9,01FA MVI M, 00

01FB,01FC,01FD SHLD 0009

01FE,01FF,0200 JMP 023A

0201,0202 CPI 03; А = 3?

0203,0204,0205 JNZ 0214

0206,0207,0208 LHLD 0009

0209,020A MVI M, 03

020B INX HL

020C,020D MVI M, 00

020E,020F,0210 SHLD 0009

0211,0212,0213 JMP 023A

0214,0215 CPI 04; А = 4?

0216,0217,0218 JNZ 0227

0219,021A,021B LHLD 0009

021C,021D MVI M, 04

021E INX HL

021F,0220 MVI M, 00

0221,0222,0223 SHLD 0009

0224,0225,0226 JMP 023A

0227,0228 CPI 05; А = 5?

0229,022A,022B JNZ 023A

022C,022D,022E LHLD 0009

022F,0230 MVI M, 05

0231 INX HL

0232,0233 MVI M, 00

0234,0235,0236 SHLD 0009

0237,0238,0239 JMP 023A

023A,023B,023C LHLD 0009

023D INX HL; CT1++

023E,023F,0240 SHLD 0009

0241,0242,0243 LDA 000A; младш. байт CT1 в аккум.

0244,0245 CPI 57; за последним персонажем?

0246,0247,0248 JNZ 014C; возврат в начало цикла

0249 NOP

024A NOP

024B NOP

024C NOP

024D NOP

024E NOP

024F NOP

0250 NOP

0251 RET

Принципиальная схема программного модуля ITERATION (в условных адресах):

ITERATION + 0 LXI HL, 0; в HL загр. 0

1

2

3 SHLD ОЗУ + 11; CT2 = 0

4

5

6 LDA ОЗУ + 15; загр. в аккум. знач-е DIR

7

8

9 CMA; DIR = !DIR

ITERATION + 10 STA ОЗУ + 15

11

12

13 CPI 0; DIR = 0?

14

15 JNZ ITERATION + 24

16

17

18 LXI HL, ОЗУ + 75;адр. 1-го персонажа

19

ITERATION + 20

21 JMP ITERATION + 27

22

23

24 LXI HL, ОЗУ + 83;адр. последнего персонажа

25

26

27 SHLD ОЗУ + 9; сохр. в CT1 адр. персонажа

28

29

ITERATION + 30 LHLD ОЗУ + 9;

31

32

33 INX HL

34 INX HL