Доброго времени суток! Не могу разобраться как в асме работать с отрицательными числами. Есть у меня код Code: .model small .stack 200h ; Стек размером 512 байт .486 ; Архитектура процессора .data a db 1,2,3,4,5,6,-85,10,-9,11 ; Массив "a" b db -1,2,3,4,5,-6,-85,-10,-9,11,1,2,3,4,5,6,7,8 ; Массив "b" ; Выводимые сообщение message db 'Sum of the positive elements of the first array: ','$' message2 db 'Sum of the positive elements of the second array: ','$' s1 db 13,10,'$' ; переход на новую строку n equ 10 ; эквивалент p db ' ','$' ; .code start: ; Начальная инициализация mov ax,@data mov ds,ax xor ax,ax ; Обнуление регистра xor si,si mov cx,n xor bl,bl mov ax,3 ;очистка экрана int 10h ; mov ah,9 mov dx,offset message ; offset-смещение (загрузка в регистр адреса, а не значения) int 21h ; прерывание (21h-вывод одного символа на экран) xor ax,ax ; Основной алгоритм ; Обработка массива "а" label1: cmp a[si],0 ; сравнивание, jnl label2 ; если "не меньше" то переход на label2 inc si ; инкремент (+1) cmp si,n ; если si эквивалентно 10 je c20 ; то переходим к метке c20 loop label1 ; цикл label2: add al,a[si] inc si cmp si,n je c21 loop label1 ; Обработка массива "b" label3: cmp b[si],0 jnl label4 inc si cmp si,18 je c20 loop label3 label4: add al,b[si] inc si cmp si,18 je c21 loop label3 ;Вывод данных c22: xor ax,ax mov ah,9 mov dx,offset message2 int 21h xor ax,ax jmp label3 c21: mov cx,10 ; установка счетчика в 10 lea si,p+3 ; запись смещения c20: cmp ax,10 jb c30 ; если ax = 10, перейти к метке c30 xor dx,dx div cx ; ax делится на cx результат сохраняется в ax or dl,30h ; увеличение кода ASCI на 30 для вывода цифр (правая часть) mov [si],dl dec si ; декремент (-1) jmp c20 c30: inc bl ; инкремент or al,30h ; увеличение кода ASCI на 30 для вывода цифр (левая часть) mov [si],al lea dx,p mov ah,9 ; функция вывода строки int 21h ; вывод на экран mov ah,9 mov dx,offset s1 int 21h xor ax,ax xor si,si mov cx,18 cmp bl,1 je c22 ; Выход из программы c25: mov ax,4c00h int 21h end start он складывает положительные элементы в 2х массивах и выводит на экран. Мне необходимо, что бы максимальное полученное число (из суммы положительных) отнялось от всех отрицательных элементов. Вычисление положительных элементов у меня осуществляется конструкцией: Code: cmp a[si],0 ... т.е. если элемент не меньше нуля то продолжается работа с ним.