Поиск:

Ответ в темуСоздание новой темы Создание опроса
> подсчёта ненулевых элементов в участке памяти 
:(
    Опции темы
xpamoi
Дата 20.1.2010, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Требуется:
Написать подпрограмму для подсчёта количества ненулевых элементов в участке памяти сегмента данных, начало задано в регистре SI, конец в регистре DI,количество ячеек поместить в регистре Cx. 
есть у кого нить что ни будь похожее?! шаблоны или с это отрасли?!
PM MAIL Skype   Вверх
iff
Дата 20.1.2010, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


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

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



Код

;Используются cx, di, si,ax
;При передачи управления коду, написанноме ниже требуется, что бы ax содержал 00
        mov     cx, di
        sub     cx, si
        inc     cx
a10:    cmp     byte ptr [si], 00
        je      a20
        inc     ax
a20:    inc     si
        loop    a10
        mov     cx, ax


Это сообщение отредактировал(а) iff - 21.1.2010, 16:29


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
Mikl_
Дата 21.1.2010, 04:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(xpamoi)
Написать подпрограмму для подсчёта количества ненулевых элементов в участке памяти сегмента данных, начало задано в регистре SI, конец в регистре DI,количество ячеек поместить в регистре Cx.
Код
xor bx,bx; в BX будет счетчик ненулевых элементов сейчас BX=0
    mov al,0; обнулим AL
    push ds ; es=ds
    pop es
    mov cx,di; в CX количество байт которые требуется обработать
    sub cx,si
    mov di,si
    cld 
a1:    repe scasb ; ищем ненулевые элементы
    inc bx; если нашли -- увеличим счетчик
    test cx,cx
    jnz a1; пока в CX не ноль продолжаем цикл
    mov cx,bx
 smile iif всё работает правильно smile 

Это сообщение отредактировал(а) Mikl_ - 22.1.2010, 06:40
PM MAIL   Вверх
iff
Дата 21.1.2010, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


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

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



Код

mov cx,di; в CX количество байт которые требуется обработать
sub cx,si

Это не правильно. Допустим, что начало (SI) содержит 2, конец (DI) - 3. Тогда вы будете проверять 1-у ячейку, хотя нудно 2-е (ячейку 2 и 3)

Проверил сейчас вашу и мою программы в debug, выша не работает, в своей я обнаружил ошибку, после исправления которой всё зароботало как надо.

Это сообщение отредактировал(а) iff - 21.1.2010, 16:35


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

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

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


 




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


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

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