Хостинг портала RFpro.ru: Московский хостер Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64 РАССЫЛКИ ПОРТАЛА RFPRO.RU Лучшие эксперты данной рассылки Номер выпуска: | 1454 | Дата выхода: | 30.05.2011, 03:00 | Администратор рассылки: | Лысков Игорь Витальевич (Старший модератор) | Подписчиков / экспертов: | 216 / 64 | Вопросов / ответов: | 2 / 2 | Вопрос № 183311: Здравствуйте, уважаемые эксперты! Прошу Вас помочь в написании этой программы: Дана двухбайтовая двоичная строка. Найти в ней все сочетания из трех единиц (сочетание 11111 считать за три повторения). Задача для TASM, model small. Как ... Вопрос № 183321: Добрый день, уважаемые эксперты! Прошу помочь с программой, не могу понять, как её реализовать: Матрица (размерность 4х4). Найти номера строк, в которых есть числа, кратные пяти, и сформировать из них отдельный массив (номера не должны повторятьс... Вопрос № 183311: Здравствуйте, уважаемые эксперты! Прошу Вас помочь в написании этой программы: Дана двухбайтовая двоичная строка. Найти в ней все сочетания из трех единиц (сочетание 11111 считать за три повторения). Задача для TASM, model small. Как я понимаю, можно двигать младший бит в CF. Но не могу понять как настроить счетчики. Заранее спасибо. Отправлен: 24.05.2011, 14:07 Вопрос задал: Валитов Ринат Харисович (Посетитель) Всего ответов: 1 Страница вопроса » Отвечает Airyashov (Студент) : Здравствуйте, Валитов Ринат Харисович! вариант решения
Код : .model small ; модель пямяти для программы типа EXE stack 100h ; сегмент стека data ; сегмент данных Sbit dw 1111011100011111b ; битовая строка code ; сегмент кода start: ; точка входа в программу mov ax,@data; инициализация семента данных mov ds,ax xor cx,cx ; cx=0 тут считаем кол-во групп mov dx,Sbit ; данные, загрузим битовую строку в регистр mov ax, 111b ; ax=группа которую ищем next: mov bx,dx ; поместить строку во временный регистр and bx,ax ; сдклать логическое И с группой cmp bx,ax ; сравнить группу и результат предыдущей операции jne @net_sovp ; если не совпадают переход inc cx ; иначе, увеличить счетчик net_sovp: shl ax,1 ; сдвинуть группу на разряд влево jnc @next ; проверяем, все ли групы прошли, нет продолжить цикл ; кол-во групп в cx mov ax,4c00h ; номер функции DOS и параметр, завершить программу, код ошибки 0 int 21h ; вызов DOS end @start ; точка входа Ответ отправил: Airyashov (Студент) Ответ отправлен: 25.05.2011, 13:50 Номер ответа: 267371 Россия, Казань Адрес: Казань ICQ # 317748666 Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"? | Отправить SMS #thank 267371 на номер 1151 (Россия) | Еще номера » | Вопрос № 183321: Добрый день, уважаемые эксперты! Прошу помочь с программой, не могу понять, как её реализовать: Матрица (размерность 4х4). Найти номера строк, в которых есть числа, кратные пяти, и сформировать из них отдельный массив (номера не должны повторяться). Матрицы для меня темный лес на АСМе. Все это дело на TASM Большое спасибо. Отправлен: 24.05.2011, 19:43 Вопрос задал: Сонечкин Илья Федорович (Посетитель) Всего ответов: 1 Страница вопроса » Отвечает Лысков Игорь Витальевич (Старший модератор) : Здравствуйте, Сонечкин Илья Федорович! Предлагаю такой вариант решения. Вообще говоря, можно было воспользоваться тем, 4 - степень двойки, деление релизовать через сдвиг, но я сделал через деление, как более универсальный способ
Код : .model small N equ 4 .data array dw 125, 34, 67, 5 dw 1, 3, 98, 100 dw 4, 64, 67, 3 dw 78, 9, 10, 2 div5 dw N dup (?) ;сюда запишем номера строк элементов матрицы, кратных 5 count dw ? ;их количество .code main proc mov ax, @DATA mov ds, ax mov es, ax lea di, div5 ;адрес, куда писать xor bx, bx ;база матрицы, одновременно индекс строки mov cx, N ;число строк mov count, 0 ;число чисел, кратных 5 mov bp, 5 ;будем делить на 5 RowLoop: ;цикл по строкам push cx ;сохраним счетчик строк mov cx, N ;число элементов в строке xor si, si ;индекс в строке ColLoop: ;цикл по колонкам в строке mov ax, array[bx+si] ;очередной элемент cwd ;превращаем в двойное слово dx:ax idiv bp ;делим на 5 test dx, dx ;проверяем остаток jnz next ;не делится нацело - пропускаем cmp count, 0 ;если еще ничего нет, je SaveRow ; то сразу пишем ;проверим, чтобы номера строк не повторялись push di ;сохраним использованные регистры push cx mov ax, bx ;сформируем номер строки 0-4 mov cl, N*2 ;разделим на длину строки в байтах div cl ;разделится нацело, поэтому ah=0 mov cx, count ;число запомненных номеров строк lea di, div5 ;адрес номеров строк repne scasw ;ищем, пока не равно pop cx pop di jz next ;нашли - пропускаем элемент в строке SaveRow: ;сохраняем mov ax, bx ;сформируем номер строки 0-3 mov cl, N*2 div cl ;ax = 0, 1, 2, 3 stosw ;и сохраняем inc count ;считаем jmp NextRow ;дальше идти нет смысна - переходим на следующую строку next: ;на следующий элемент в строке inc si ;у нас слова, по 2 байта inc si ;2 inc-а короче, чем add si,2 loop ColLoop ;по колонкам NextRow: ;переходим на следующубю строку add bx, N*2 ;смещаем базу на 4 элементов pop cx ;восстанавливаем счетчик строк loop RowLoop ;по всем строкам mov ax, 4c00h ;выходим в ДОС int 21h main endp end main ----- Люби своего ближнего, как самого себя Ответ отправил: Лысков Игорь Витальевич (Старший модератор) Ответ отправлен: 25.05.2011, 14:33 Номер ответа: 267373 Украина, Кировоград Тел.: +380957525051 ICQ # 234137952 Mail.ru-агент: igorlyskov@mail.ru Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"? | Отправить SMS #thank 267373 на номер 1151 (Россия) | Еще номера » | Оценить выпуск » Нам очень важно Ваше мнение об этом выпуске рассылки! Скажите "спасибо" эксперту, который помог Вам! Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА на короткий номер 1151 (Россия) Номер ответа и конкретный текст СМС указан внизу каждого ответа. Полный список номеров » * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов) ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются. *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании. |
Комментариев нет:
Отправить комментарий