Поиск:

Ответ в темуСоздание новой темы Создание опроса
> массив, проблема с  
:(
    Опции темы
susanin
Дата 22.4.2007, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 7



вобщем такое задание: необходимо в массиве сосчитать количество чисел, которые больше 20 но меньше 50 и занести это их число в ВХ.... я набросал такой текст программки...но работает она неправилно....помогите пожалуйста исправить проблемку.....  где то в метках у меня ошибка, но вот как это исправить не пойму...
Код

Sseg    SEGMENT    STACK    'stack'
        DB    256    DUP    (?)
    Sseg    ENDS
; Сегмент данных
    Dseg    SEGMENT    'data'
     mas dw 5, 7, 10 ,22, 30
     kol dw  5

    Dseg    ENDS

    ; Сегмент кода
    Cseg    SEGMENT    'code'
    ASSUME    CS:Cseg, DS:Dseg, SS:Sseg
    Main PROC FAR
; настройка сегмента данных
        PUSH    DS         ; Занесение DS в стек
        MOV    AX, 0         ; Обнуление AX
        PUSH    AX         ; Занесение нуля в стек
        MOV    AX, Dseg ; Настройка DS на сегмент данных
        MOV    DS, AX

        MOV CX, kol ;заносим в CX кол-во повторов
        LEA SI,mas ;заносим в SI адрес первого элемента массива
        XOR BX,BX   ;обнуляем ВХ
cycle:  
        MOV AX,[SI]  ;заносим в АХ первый элемент
        CMP AX,20   ;сравниваем первое число с 20
        JG metka    ;если оно больше, то переходим к метке
incr:        INC SI ;пеерходим к следующему элементу
metka:              ;метка проверки <50
        CMP AX,50    ;сравниваем число с 50
        JG  incr ;если больше то переходим к метке увеличения элемента
       
        INC BX      ;в противном случае инкрементируем ВХ
       LOOP cycle    ;СХ--
  ;**************************************
       MOV AX, 4C00h
       int 21h
    Main    ENDP
    Cseg    ENDS
        END    Main

PM MAIL   Вверх
DemonFF
Дата 23.4.2007, 07:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.4.2007
Где: Минск.

Репутация: нет
Всего: нет



Код

Sseg    SEGMENT    STACK    'stack'
        DB    256    DUP    (?)
    Sseg    ENDS
; Сегмент данных
    Dseg    SEGMENT    'data'
     mas dw 5, 7, 10 ,22, 30
     kol dw  5

    Dseg    ENDS

    ; Сегмент кода
    Cseg    SEGMENT    'code'
    ASSUME    CS:Cseg, DS:Dseg, SS:Sseg
    Main PROC FAR
; настройка сегмента данных
        PUSH    DS         ; Занесение DS в стек
        MOV    AX, 0         ; Обнуление AX
        PUSH    AX         ; Занесение нуля в стек
        MOV    AX, Dseg ; Настройка DS на сегмент данных
        MOV    DS, AX

        MOV CX, kol ;заносим в CX кол-во повторов
        LEA SI,mas ;заносим в SI адрес первого элемента массива
        XOR BX,BX   ;обнуляем ВХ
cycle:  
        MOV AX,[SI]  ;заносим в АХ первый элемент
        CMP AX,20   ;сравниваем первое число с 20
        JNA incr    ;если оно не больше, то переходим к метке incr
        CMP AX,50    ;сравниваем число с 50
        JNB  incr ;если не меньше, то переходим к метке incr
        INC BX      ;в противном случае инкрементируем ВХ
incr:
    ADD SI,2 ;пеерходим к следующему элементу
       LOOP cycle    ;СХ--
  ;**************************************
    ;перед завершением работы программы в bx содержится
    ;количество элементов массива, удовлетворяющих условие
    MOV AX, 4C00h
       int 21h
    Main    ENDP
    Cseg    ENDS
        END    Main

PM MAIL ICQ   Вверх
susanin
Дата 23.4.2007, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 7



DemonFF , спасибо!
П.С. тема закрыта!  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0476 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.