еКод ассемблераКомментаріі400031 00 80LXI SP, 8000hСозданіе стека програми за адресою 8000h400321 05 50LXI H, 5001hПомещеніе в пару H, L адреси вихідного массіва400611 01 70LXI D, 7001hПомещеніе в пару D, E адреси масиву результатов400901 00 60LXI B, 6000hПомещеніе в пару В, С комірку пам'яті 6000h400CAFXRA AОбнуленіе аккумулятора400D02STAX BЗапісь вмісту в комірку пам'яті 6000h400E 0E 0AMVI C, 0AhСозданіе лічильника на 10 шагов4010C5M1: PUSH BЗасилка вмісту регістрів В, С в стек40117EMOV A, MКопірованіе вмісту регістрів в аккумулятор401217RALЦиклический зрушення вмісту акумулятора вліво на один разряд4013DA 50 40JC OTRЕслі число негативне (CY=1), то стрибнути на мітку OTR40167EMOV A, MКопірованіе вмісту комірки пам'яті в аккумулятор401712STAX DЗапісь в масив результатів старшого байта чісла40182BDCX HПереход до молодшого байту числа в початковому массіве40191BDCX DПереход до молодшого байту числа в масиві результатов401A7EMOV A, MКопірованіе вмісту комірки пам'яті в аккумулятор401B12STAX DЗапісь в масив результатів молодшого байта чісла401C23INX HС адреси 401С по 4021 - просування адрес на наступну пару чисел у вихідному масиві і в масиві результатов401D13INX D401E23M2: INX H401F13INX D402023INX H402113INX D4022C1POP BІзвлеченіе вмісту В, С з стека40230DDCR CУменьшеніе лічильника на 14024C2 10 40JNZ M1Возврат на М1 до вичерпання счетчіка4027CD 80 40CALL PODSВизов підпрограми PODS402ACD 49 00CALL 49hПеревод курсора на нову строку402DCD 90 40CALL VISXВизов програми VISX4030CD 49 00CALL 49 hПеревод курсора на нову строку4033CD B0 40 CALL VREZВизов підпрограми VREZ4036C3 40 00JMP 40hВиход в програму Монітор
Підпрограма обробки негативних чисел
40800APODS: LDAX BЗагрузка в акумулятор вмісту комірки 6000h408101 20 41LXI B, 4120hПомещеніе в пару регістрів В, С адреси 4120h4084CD 4C 00CALL 4ChВивод рядки тексту, починаючи з адреси, записаного в В, С до нульового байта4087CD 61 00CALL 61hВивод двох шістнадцятирічних цифр і аккумулятора408AC9RETБезусловный повернення до команди, з адресою 402А
Підпрограма виводу на екран вихідного масиву
409011 14 00VISX: LXI D, 0014hСозданіе лічильника на 20 шагов409321 00 50LXI H, 5000hПомещеніе в пару H, L адреси вихідного массіва409601 20 42LXI B, 4220hПомещеніе в пару регістрів В, С адреси 4220h4099CD 4C 00CALL 4ChВивод рядка тексту, починаючи з адреси, записаного в В, С до нульового байта409С01 20 43LXI B, 4320hПомещеніе в пару регістрів В, С адреси 4320h409F7EMOV A, MКопірованіе вмісту комірки пам'яті в аккумулятор40A0CD 61 00CALL 61hВивод двох шістнадцятирічних цифр і аккумулятора40A323INX HПродвіженіе адреси на наступну пару чісел40A4CD 4C 00CALL 4ChВивод рядки тексту, починаючи з адреси, записаного в В, С до нульового байта40A71DDCR EУменьшеніе лічильника на 140A8C2 9F 40JNZ 409FВозврат в 409F до вичерпання счетчіка40ABC9RETБезусловний повернення до команди, адресою 4030
Підпрограма виводу на екран масиву результатів
40B011 14 00VREZ: LXI D, 0014hСозданіе лічильника на 20 шагов40B321 00 70LXI H, 7000hПомещеніе в пару H, L адреси масиву результатов40B601 20 44LXI B, 4420hПомещеніе в пару регістрів В, С адреси 4420h40B9CD 4C 00CALL 4ChВивод рядка тексту, починаючи з адреси, записаного в В, С до нульового байта40BC01 20 43LXI B, 4320hПомещеніе в пару регістрів В, С адреси 4320h40BF7EMOV A, MКопірованіе вмісту комірки пам'яті в аккумулятор40C0CD...