.586 data segment x dd 10.4, -4.5, 0.24, 5.46, -9.335, 13.345, 0.0, -12.35, 0.534, 0.0, 5.345, 6.9, 9.0 n dw ($-x)/4 count_zero dw 0 count_neg dw 0 count_pos dw 0 data ends code segment use16 assume cs:code,ds:data count_arr proc ; bx - адрес 1го элемента массива ; cx - кол-во элементов xor si,si finit fldz @main_loop: fcom dword ptr bx[si] fstsw ax sahf jnz @cmp_neg inc word ptr [count_zero] jmp short @continue @cmp_neg: jc @pos_num inc word ptr [count_neg] jmp short @continue @pos_num: inc word ptr [count_pos] @continue: add si, 4 loop @main_loop retn count_arr endp start: mov ax,data mov ds,ax lea bx, x mov cx, n call count_arr mov ax, 4c00h int 21h code ends end start |