1A5D:0322 59 POP CX - результат
1A5D:0323 46 INC SI - увеличиваем SI на 1
1A5D:0324 83FE0F CMP SI,+0F - сравниваем индекс с 15-ю
1A5D:0327 7CCE JL 02F7 - переходим на cs:02f7 если ...
1A5D:0329 BE1111 MOV SI,1111 - i=0x1111
1A5D:032C 33FF XOR DI,DI - DI в ноль
1A5D:032E 33F6 XOR SI,SI - SI в ноль
1A5D:0330 EB1E JMP 0350 - переход на cs:0350
1A5D:0332 8BDE MOV BX,SI - в ВХ заносим индекс і
1A5D:0334 D1E3 SHL BX,1 - сдвигаем значение ВХ
1A5D:0336 8D46E2 LEA AX,[BP-1E] - адрес масива
1A5D:0339 03D8 ADD BX,AX - переходим на і элемент
1A5D:033B 833F00 CMP WORD PTR [BX],+00 - сравниваем mas[i] с нулем
1A5D:033E 7D0F JGE 034F - переходим на cs:034f если ...
1A5D:0340 8BDE MOV BX,SI - в ВХ заносим индекс і
1A5D:0342 D1E3 SHL BX,1 - сдвигаем значение ВХ
1A5D:0344 8D46E2 LEA AX,[BP-1E] - адрес масива
1A5D:0347 03D8 ADD BX,AX - переходим на і элемент
1A5D:0349 8BC7 MOV AX,DI - AX в ноль
1A5D:034B 0307 ADD AX,[BX] - вычесление суммы
1A5D:034D 8BF8 MOV DI,AX - хранение суммы
1A5D:034F 46 INC SI - увеличиваем SI на 1
1A5D:0350 83FE0F CMP SI,+0F - сравниваем индекс
1A5D:0353 7CDD JL 0332 - переходим на cs:0332 если ...
1A5D:0355 BE7777 MOV SI,7777 - i=0x7777
1A5D:0358 57 PUSH DI - DI в стек
1A5D:0359 B8AE00 MOV AX,00AE
1A5D:035C 50 PUSH AX - AX в стек
1A5D:035D E81917 CALL 1A79 - вывод
1A5D:0360 59 POP CX - результат
1A5D:0361 59 POP CX - результат
1A5D:0362 BE3333 MOV SI,3333 - i=0x3333
Програма на мові Assembler:
data segment
n dw 10
mas dw 2, 4, -5, -7, 8, -9, 3, 6, -10, -9
sum dw 0
data ends
code segment
assume cs: code, ds:data
main:
mov ax, data
mov ds, ax
lea si, mas
mov cx, n
xor ax, ax
m1:
jcxz exit
mov ax, [si]
dec cx
add si, 2
cmp ax, 0
jnl m1
add sum, ax
jmp m1
exit:
mov ah, 4ch
int 21h
code ends
end main
Лістинг програми:
1F13:0023 B8131F MOV AX,1F13 - mov ax,data
1F13:0026 8ED8 MOV DS,AX - mov ds,ax
1F13:002B 8D360200 LEA SI,[0002] - lea si, mas
1F13:002F 8B0E0000 MOV CX,[0000] - mov cx, n
1F13:0033 33C0 XOR AX,AX - AX в ноль
1F13:0038 E314 JCXZ 004E - JCXZ exit
1F13:003A 8B04 MOV AX,[SI] - MOV AX,[SI]
1F13:003C 49 DEC CX - уменьшаем счетчик
1F13:003D 83C602 ADD SI,+02 - ADD SI,+02
1F13:0040 3D0000 CMP AX,0000 - сравниваем AX с нулем
1F13:0043 7DF0 JGE 0035 - jnl m1
1F13:0045 01061600 ADD [0016],AX - сумма
1F13:0049 EBEA JMP 0035 - JMP m1
1F13:0051 B44C MOV AH,4C - MOV AH,4C
1F13:0053 CD21 INT 21 - INT 21
Висновок:
Отримали лістинги програм, написаних на трьох мовах, та проаналізували їх, порівнюючи з вихідними файлами. З'ясували, що програма, яка написана на мові Assembler найкоротша та найшвидкіша
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.