1E46:008A 9A9D06531E CALL 1E53:069D - вызов Randomize
1E46:008F 9A8205531E CALL 1E53:0582 - вызов Randomize
1E46:0094 833E70000F CMP WORD PTR [0070],+0F - сравниваем индекс с 15
1E46:0099 75B9 JNZ 0054 - повторяем цикл
1E46:009B BF7401 MOV DI,0174 - в di 372
1E46:009E 1E PUSH DS - DS в стек
1E46:009F 57 PUSH DI - DI в стек
1E46:00A0 BF0000 MOV DI,0000 - DI в ноль
1E46:00A3 0E PUSH CS - CS в стек
1E46:00A4 57 PUSH DI - DI в стек
1E46:00A5 31C0 XOR AX,AX - АХ в ноль
1E46:00A7 50 PUSH AX - AX в стек
1E46:00A8 9A1506531E CALL 1E53:0615 - вызов Randomize
1E46:00AD A17200 MOV AX,[0072] - хранение суммы
1E46:00B0 99 CWD -
1E46:00B1 52 PUSH DX - DX в стек
1E46:00B2 50 PUSH AX - AX в стек
1E46:00B3 31C0 XOR AX,AX - АХ в ноль
1E46:00B5 50 PUSH AX - AX в стек
1E46:00B6 9A9D06531E CALL 1E53:069D - вывод
1E46:00BB 9A8205531E CALL 1E53:0582 - вывод
1E46:00C0 C70670005555 MOV WORD PTR [0070],5555 - і = $5555
Програма на мові С:
#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
#define n 15
void main (void)
{
int sum,i,mas[n];
clrscr();
randomize();
i=0x5555;
for (i=0;i<n;i++)
{
mas[i]=40- random(50);
printf ("%4d",mas[i]);
}
i=0x1111;
sum=0;
for (i=0;i<n;i++)
if (mas[i]<0)
sum=sum+mas[i];
i=0x7777;
printf(" summa%4d",sum);
i=0x3333;
}
Лістинг програми:
0364 1A5D:02EA BE5555 MOV SI,5555 - i=0x5555
1A5D:02ED E8B10A CALL 0DA1 - вызов Randomize
1A5D:02F0 E87800 CALL 036B - вызов Randomize
1A5D:02F3 33F6 XOR SI,SI - si в ноль
1A5D:02F5 EB2D JMP 0324 - переход на cs:0324
1A5D:02F7 B83200 MOV AX,0032 - в АХ заносим 50
1A5D:02FA 50 PUSH AX - АХ в стек
1A5D:02FB E87E00 CALL 037C - вызов Random(50)
1A5D:02FE 59 POP CX - в СХ результат
1A5D:02FF BA2800 MOV DX,0028 - в DХ заносим 40
1A5D:0302 2BD0 SUB DX,AX - 40-Random(50)
1A5D:0304 8BDE MOV BX,SI - в ВХ заносим индекс і
1A5D:0306 D1E3 SHL BX,1 - сдвигаем значение ВХ
1A5D:0308 8D46E2 LEA AX,[BP-1E] - адрес масива
1A5D:030B 03D8 ADD BX,AX - переходим на і элемент
1A5D:030D 8917 MOV [BX],DX - заполнение
1A5D:030F 8BDE MOV BX,SI - в ВХ заносим индекс і
1A5D:0311 D1E3 SHL BX,1 - сдвигаем значение ВХ
1A5D:0313 8D46E2 LEA AX,[BP-1E] - адрес масива
1A5D:0316 03D8 ADD BX,AX - переходим на і элемент
1A5D:0318 FF37 PUSH [BX] - по адресу BX в стек
1A5D:031A B8AA00 MOV AX,00AA
1A5D:031D 50 PUSH AX - AX в стек
1A5D:031E E85817 CALL 1A79 - вывод
1A5D:0321 59 POP CX - результат
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.