Сразу к делу!Нужно сделать лабу на завтра, как говорится вся ночь в переди!=) Само задание пока не важно да и там проблем не должно...пока... не возникало... Смысл в том что нужно ввести массив целых чисел со знаком с клавиатуры. Препод сказал с помощбю прерывания int21. Сюда пишу само собой не для того что б за меня все сделали! Немного разобрался... функция 0ah! Как с ней работать я разобрался, НО если скажем мне нужно ввести -123 то в памяти оно займет 4 байта, знак и цифры как символы по 1 байту...а мне получается нужно что оно все записывалось ну SWORD к примеру З.Ы. Юзаю масм, Если важно задача:"Подсчитать кол-во отрицательных елементов на парных позициях масива из 10 елементов". Обьясните как ввести эти гребаные цифры!!! ПЛИЗ
Ну конвертировать там.. смотреть, есть ли знак '-'.. да и готовых функций много в сети. Если проверить только отрицательность, то можно смотреть первый символ введенных строк и не преобразовывать в число.
эт мне типа нужно проверить если первый символ введен "-" то отрицательное... а потом конвертить цифры после него??? если так то я понимаю что алгоритм такой: Если введен "-" то мы после ввода, к примеру цифру умножаем число на -1??? или как??? А если нет "-" то мы так эго и оставляем... Правильно?
Не-а. Или проверить первый символ и считать число отрицательным без конвертирования. Или сконвертировать, а потом считать. Умножать на минус один (neg) нужно, но при конвертировании.
Сделал если кому интересно... Код (Text): ;Подсчет колва отрицательных елементов на парных позициях CSEG segment org 100h _beg: COUNTER SBYTE ? ;Наш счетчик MAS SBYTE 10 DUP(0) ;Оглашаем инициализированый масив, заполненый нулями mov bx,00h ;обнуляем индексный регистр. mov cx,0ah ;цикл 10 раз прогнать. mov COUNTER,00h CYCL: MOV ah,01h ;читаем символ. INT 21h ;прервались. CMP al,2Dh ;проверяем не минус ли мы ввели. JZ minus sub al,30h ;конвертация в цифру. jmp finish ;прыгаем дальше работать. minus: mov ah,01h ;нам нужно еще один прочитать если минус int 21h ;прервались sub al,30h ;конвертация neg al ;сделали отрицательным finish: mov MAS[bx],al ;Записываем в масив введеное значение из регисра al add bx,1 ;увеличиваем значение индексного регистра loop CYCL ;лупаемся mov cx,05h ;цикл 5 раз прогнать. mov COUNTER,0 mov bx,0 ;обнуляем индексный регистр. CYCL2: cmp MAS[bx],0 ;сравниваем с нулем флажок SF(Флаг знака) поднят JS negat jmp fin2 negat: inc COUNTER ;увеличиваєм значение счетчика на 1 fin2: add bx,2 loop CYCL2 ;лупаемся mov ah,02h ;подготовка и вызов функции 02h прерывания 21h mov dl,3Eh ;для вывода символа с кодом 3Eh что обозначает ">" int 21h ;прервались=) add COUNTER,30h ;Преобразовуем число в строчное значение для вывода mov ah,02h ;загружаем номер функции mov dl,COUNTER ;Значение символа для вывода int 21h ;прервались=) MOV ah,4Ch ;Bye-Bye INT 21h CSEG ends end _beg
Программа вводит десять чисел (которые почему то должны быть в интервале [-9;9]) и считает количество отрицательных на четных позициях. "на парных позициях масива" означает именно четные смещения? Будет лучше вводить строку, а потом ее всю сразу конвертировать. Тогда числа могут быть больше чем из одной цифры.
спс за ссылку! В следующий раз учту...просто на момент написания программы было уже много много за полночь...и я соображал очень туго...я решил упростить немного себе задачу...я пока учусь... парных=четных, украинский дает о себе знать а с конвертацией всей строки я обязательно сделаю...даже интересно