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

281 Dcr m; уменьш. Старш. Байт ct1

282 LDA ОЗУ + 15

283

284

285 CPI 0; если DIR = 0, то

286

287 JNZ ITERATION + 298

288

289

ITERATION + 290 LDA ОЗУ + 10; находится ли счётчик

291

292

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

294

295 JNZ ITERATION + 30;вернуться в начало цикла

296

297

298 LDA ОЗУ + 10; находится ли счётчик

299

ITERATION + 300

301 CPI ОЗУ + 72; перед первым персонажем?

302

303 JNZ ITERATION + 30;вернуться в начало цикла

304

305

306 NOP

307 NOP

308 NOP

309 NOP

ITERATION + 310 NOP

311 NOP

312 NOP

313 NOP

314 LHLD ОЗУ + 11; СТ2++

315

316

317 INX HL

318 SHLD ОЗУ + 11

319

ITERATION + 320

321 LDA ОЗУ + 12; младш. байт СТ2 в аккум.

322

323

324 CPI 3; CT2 = 3?

325

326 JNZ ITERATION + 9;переход к след. абзацу

327

328

329 RET

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

02EC,02ED,02EE LXI HL, 0000; в HL загр. 0

02EF,02F0,02F1 SHLD 000B; CT2 = 0

02F2,02F3,02F4 LDA 000F; загр. в аккум. знач-е DIR

02F5 CMA; DIR = !DIR

02F6,02F7,02F8 STA 000F

02F9,02FA CPI 00; DIR = 0?

02FB,02FC,02FD JNZ 0307;

02FE,02FF,0300 LXI HL, 004B; адр. 1-го персонажа

0301,0302,0303 JMP 030A

0304,0305,0306 LXI HL, 0053; адр. последнего персонажа

0307,0308,0309 SHLD 0009; сохр. в CT1 адр. персонажа

030A,030B,030C LHLD 0009;

030D INX HL

030E INX HL

030F LDAX HL; звание i-го персонажа в A

0310,0311,0312 STA 0010; оттуда - в RES

0313,0314,0315 LHLD 0009

0316,0317,0318 SHLD 0034; адр. i-го персонажа в OBJ

0319,031A,031B SHLD 0036; и в SUB

031C,031D,031E LDA 0039; загр. знач-е NPROC

031F,0320 CPI 00; NPROC = 0?

0321,0322,0323 JNZ 034F; к следующей проверке

0324,0325,0326 LDA 0011; младш. байт RES

0327,0328 CPI 01

0329,032A,032B CZ 0C00; вызов REACT11

032C,032D,032E LDA 0011

032F,0330 CPI 02

0331,0332,0333 CZ 1000; вызов REACT12

0334,0335,0336 LDA 0011

0337,0338 CPI 03

0339,033A,033B CZ 1400; и т. д.

033C,033D,033E LDA 0011

033F,0340 CPI 04

0341,0342,0343 CZ 1800

0344,0345,0346 LDA 0011

0347,0348 CPI 05

0349,034A,034B CZ 1C00

034C,034D,034E JMP 03E5; выход из блока проверок

034F,0350,0351 LDA 0039

0352,0353 CPI 01; NPROC = 1?

0354,0355,0356 JNZ 0382

0357,0358,0359 LDA 0011

035A,035B CPI 01

035C,035D,035E CZ 2000; вызов REACT21

035F,0360,0361 LDA 0011

0362,0363 CPI 02

0364,0365,0366 CZ 2400; и т. д.

0367,0368,0369 LDA 0011

036A,036B CPI 03

036C,036D,036E CZ 2800

036F,0370,0371 LDA 0011

0372,0373 CPI 04

0374,0375,0376 CZ 2C00

0377,0378,0379 LDA 0011

037A,037B CPI 05

037C,037D,037E CZ 2000

037F,0380,0381 JMP 03E5

0382,0383,0384 LDA 0039

0385,0386 CPI 02; NPROC = 2?

0387,0388,0389 JNZ 03B5

038A,038B,038C LDA 0011

038D,038E CPI 01

038F,0390,0391 CZ 3400

0392,0393,0394 LDA 0011

0395,0396 CPI 02

0397,0398,0399 CZ 3800

039A,039B,039C LDA 0011

039D,039E CPI 03

039F,03A0,03A1 CZ 3C00

03A2,03A3,03A4 LDA 0011

03A5,03A6 CPI 04

03A7,03A8,03A9 CZ 4000

03AA,03AB,03AC LDA 0011

03AD,03AE CPI 05

03AF,03B0,03B1 CZ 4400

03B2,03B3,03B4 JMP 03E5

03B5,03B6,03B7 LDA 0039

03B8,03B9 CPI 03; NPROC = 3?

03BA,03BB,03BC JNZ 03E5

03BD,03BE,03BF LDA 0011

03C0,03C1 CPI 01

03C2,03C3,03C4 CZ 4800

03C5,03C6,03C7 LDA 0011

03C8,03C9 CPI 02

03CA,03CB,03CC CZ 4C00

03CD,03CE,03CF LDA 0011

03D0,03D1 CPI 03

03D2,03D3,03D4 CZ 5000

03D5,03D6,03D7 LDA 0011

03D8,03D9 CPI 04

03DA,03DB,03DC CZ 5400

03DD,03DE,03DF LDA 0011

03E0,03E1 CPI 05

03E2,03E3,03E4 CZ 5800

03E5,03E6,03E7 LDA 000F

03E8,03E9 CPI 00; DIR = 0?

03EA,03EB,03EC JNZ 03F7;

03ED,03EE,03EF LHLD 0009;

03F0,03F1,03F2 LXI BC, 0004

03F3 DAD BC; HL = HL + 4

03F4,03F5,03F6 SHLD 0009

03F7,03F8,03F9 LDA 000A; младший байт счётчика

03FA,03FB SBI 04; вычесть из него 4

03FC,03FD,03FE STA 000А

03FF,0400,0401 JNC 0406

0402,0403,0404 LXI HL, 0009

0405 DCR M; уменьш. старш. байт CT1

0406,0407,0408 LDA 000F

0409,040A CPI 00; если DIR = 0, то

040B,040C,040D JNZ 0416

040E,040F,0410 LDA 000A; находится ли счётчик

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

0413,0414,0415 JNZ 030A; вернуться в начало цикла

0416,0417,0418 LDA 000А; находится ли счётчик

0419,041A CPI 48; перед первым персонажем?

041B,041C,041D JNZ 030A; вернуться в начало цикла

041E NOP

041F NOP

0420 NOP

0421 NOP

0422 NOP

0423 NOP

0424 NOP

0425 NOP

0426,0427,0428 LHLD 000B; СТ2++

0429 INX HL

042A,042B,042C SHLD 000B

042D,042E,042F LDA 000C; младш. байт СТ2 в аккум.

0430,0431 CPI 03; CT2 = 3?

0432,0433,0434 JNZ 02F2; переход к след. абзацу

0435 RET