Хостинг портала RFpro.ru: Московский хостер Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64 РАССЫЛКИ ПОРТАЛА RFPRO.RU Чемпионы рейтинга экспертов в этой рассылке Номер выпуска: | 1350 | Дата выхода: | 02.06.2010, 01:00 | Администратор рассылки: | Лысков Игорь Витальевич, Модератор | Подписчиков / экспертов: | 260 / 62 | Вопросов / ответов: | 4 / 4 | IRC-канал по теме: | #assembler | Вопрос № 178678: Уважаемые эксперты! Помогите, пожалуйста, написать код для программы в А51. Условие задачи прилагаю: Если можно, с коментариям... Вопрос № 178697: Здравствуйте уважаемы эксперты! Прошу помощи в решение такой задачки: Сформировать файл со строками, состоящими из ИМЯ, ОТЧЕСТВО, ФАМИЛИЯ. Создать этот файл самому и заполнить его данными по своей группе. Организовать вывод на экран всех полны... Вопрос № 178698: Здравствуйте уважаемы эксперты! Помогите пожалуйста написать программу: Задана строка символов. Составить программу, выясняющую, имеется ли в ней все буквы из слова "end". Причем порядок наличия символов в проверяемой строке должен б... Вопрос № 178701: Здравствуйте уважаемые эксперты! Помогите пожалуйста с таким заданием: Нужно поэлементно вычесть с одного массива 8 битных чисел другой(мне с массивами как-то не приходилось работать ) Вопрос № 178678: Уважаемые эксперты! Помогите, пожалуйста, написать код для программы в А51. Условие задачи прилагаю:
Если можно, с коментариями. Спасибо. Отправлен: 27.05.2010, 01:31 Вопрос задал: Крупицын Игорь Викторович, Посетитель Всего ответов: 1 Страница вопроса » Отвечает Лысков Игорь Витальевич, Модератор : Здравствуйте, Крупицын Игорь Викторович. Вот Вам программа. Естественно, с комментариями. По другому мы не отвечаем :) Учитываем, что адрес состоит из двух байт, поэтому сохраняем оба байта адреса. Удачи!
Код: mov sp, #70h ;переносим вершину стека mov dptr, #array ;адрес, где исходный массив mov r2, #len ;количество элементов исходного массива mov r3, #0 ;посчитаем число нулевых элементов mov r6, #0 ;сохраненный мл байт адреса во внешней памяти для записи результата mov r7, #0 ; ст байт адреса loop: ;цикл clr a ;поготовимся для чтения из программной памяти movc a, @a+dptr ;читаем очередной элемент jnz next ;если не нуль, то обходим mov r4, dpl ;сохраним мл байт адреса в исходном массиве mov r5, dph ; ст байт mov dpl, r6 ;мл байт адреса, куда пишем mov dpl, r7 ; ст байт mov a, r4 ;мл байт адреса нулевого элемента movx @dptr, a ;сохраним inc dptr ;для следующего mov a, r5 ;ст байт адреса нулевого элемента movx @dptr, a ;сохраним inc dptr ;для следующего inc r3 ;считаем mov r6, dpl ;сохраним адрес внешней памяти mov r7, dph mov dpl, r4 ;восстановим мл байт адреса в исходном массиве mov dph, r5 ; ст байт next: inc dptr ;адрес следующего элемента исходного массива djnz r2, loop ;r4=r4-1; циклим, пока r4!=0
jmp $ ;задача решена, циклимся на одном месте
array: db 1,0,0,2,3,4,5,0,0,2,0,6 len equ $-array ;длина массива end
----- Удачи! Ответ отправил: Лысков Игорь Витальевич, Модератор Ответ отправлен: 27.05.2010, 11:12 Номер ответа: 261707 Украина, Кировоград Тел.: +380957525051 ICQ # 234137952 Mail.ru-агент: igorlyskov@mail.ru Абонент Skype: igorlyskov
Оценка ответа: 5 Комментарий к оценке: Огромное спасибо! Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"? | Отправить SMS #thank 261707 на номер 1151 (Россия) | Еще номера » | Вопрос № 178697: Здравствуйте уважаемы эксперты! Прошу помощи в решение такой задачки:
Сформировать файл со строками, состоящими из ИМЯ, ОТЧЕСТВО, ФАМИЛИЯ. Создать этот файл самому и заполнить его данными по своей группе. Организовать вывод на экран всех полных имён людей, имеющих задаваемое с клавиатуры имя.
Прошу написать все с комментариями чтоб понятно было) Программа Tasm. Отправлен: 27.05.2010, 16:48 Вопрос задал: Петров Юрий Иванович, Посетитель Всего ответов: 1 Страница вопроса » Отвечает amnick, Студент : Здравствуйте, Петров Юрий Иванович.
Программа приведена в приложении. Файл с данными должен быть создан предварительно. Если необходимо, то можно добавить и создание файла. Компилировать в COM-файл.
Пример данных:
Код: Иван Петрович Сидоров неверная строка Николай Сергеевич, Смирнов... Иван Андреевич Лисов Петр Николаевич Иванов Строка "неверная строка" будет пропущена при разборе файла (меньше 3-х слов). Если в строке больше 3-х слов, то разбор файла прекращается. Максимальный размер файла - 40К (программа проверяет, но я эту часть не тестировал).
С вопросами обращайтесь в мини-форум.
Успехов! Приложение: Ответ отправил: amnick, Студент Ответ отправлен: 27.05.2010, 23:04 Номер ответа: 261721 Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"? | Отправить SMS #thank 261721 на номер 1151 (Россия) | Еще номера » | Вопрос № 178698: Здравствуйте уважаемы эксперты! Помогите пожалуйста написать программу:
Задана строка символов. Составить программу, выясняющую, имеется ли в ней все буквы из слова "end". Причем порядок наличия символов в проверяемой строке должен быть обратным их порядку в "end".
В ассемблере я не очень, так что прошу с подробными комментами! Программа Tasm. Отправлен: 27.05.2010, 16:51 Вопрос задал: Петров Юрий Иванович, Посетитель Всего ответов: 1 Страница вопроса » Отвечает Airyashov, Студент : Здравствуйте, Петров Юрий Иванович. если Я правильно понял задачу, то так
Код: .model small ; модель пямяти для программы типа EXE .286 ; разрешить использовать команда 80286 .stack 200h ; сегмент стека
.data ; сегмент данных
mR_Yes db 'Yes',10,13,'$' ; строка вывода если условие выполняется mR_No db 'No',10,13,'$' ; строка вывода если условие не выполняется
MyStr db 'sdfdgawfekldjklnss' ; заданная строка SizeS=$-MyStr ; длина строки
mGood db 10,13,'Работа программы окончена! ',10,13,'$' ; строки с сообщениями об успешном завершении программы
.code ; сегмент кода
@start: ; точка входа в программу mov ax,@data; иници ализация семента данных mov ds,ax mov es,ax mov cx,SizeS ; cx=длина строки mov dx,offset mR_No ; занести в dx адрес строки с предполагаемым результатом mov di,offset MyStr ; di=адрес заданной строки mov al,'d' ; al='d' repne scasb ; поиск символа в строке je @next1 ; нашли продолжить поиск jmp @no ; если не нашли переход @next1: mov al,'n' ; al='n' repne scasb ; поиск символа в строке je @next2 ; нашли продолжить поиск jmp no @next2: mov al,'e' ; al='e' repne scasb ; поиск символа в строке jne @no ; не нашли переход mov dx,offset mR_Yes ; занести в dx адрес строки с полученным результатом
@no: ; вывод результата mov ax,0900h ; вывести заголовок для ввода элемента массива int 21h ; вызов DOS @end_prog: mov ax,0900h ; вывести заголовок для ввода элемента массива mov dx, offset mGood ; адрес выводимой строки int 21h ; вызов DOS mov ax,0c07h ; ожидаем нажатие клавиши int 21h ; вызов DOS ;выход из программы mov ax,4c00h; функция DOS завершение программы int 21h ; вызов DOS end @start Ответ отправил: Airyashov, Студент Ответ отправлен: 27.05.2010, 20:48 Номер ответа: 261719 Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"? | Отправить SMS #thank 261719 на номер 1151 (Россия) | Еще номера » | Вопрос № 178701: Здравствуйте уважаемые эксперты! Помогите пожалуйста с таким заданием: Нужно поэлементно вычесть с одного массива 8 битных чисел другой(мне с массивами как-то не приходилось работать ) Причем сначала вычетание происходит обычными командами, потом значение обеих массивов восстанавливаются до тех, которые вначале были и уже после этого происходит такое же вычетание, только командами MMX. Ввод и вывод элементов массива реализовывать не нужно, я это сам сделаю, cамое главное, чтобы сам процес происходил в памяти и работу пока я продемонстрирую в отладчике, например AFDPro. Если можно с комментариями, спасибо большое Отправлен: 27.05.2010, 17:43 Вопрос задал: Мироненко Николай Николаевич, Практикант Всего ответов: 1 Страница вопроса » Отвечает Лысков Игорь Витальевич, Модератор : Здравствуйте, Мироненко Николай Николаевич. Пара замечаний: 1) Боюсь, что Вам не получится использовать Tasm для ассемблирования программы. Увы, Tasm остановился в развитии до появления MMX. Он их не понимает! Придется использовать Masm, и то пропатченный до версии 6.12! Или писать 32-битную программу, Masm32 прекрасно понимает MMX. 2) Смотреть под досовскими отладчиками будет весьма сложно! Они ведь тоже не понимают MMX! Вот такие пирожки... А теперь сама программа:Код: .586 .MMX assume cs:CSEG,ds:CSEG
CSEG segment use16 start: mov ax, CSEG ;проиницируем сегментные регистры mov ds, ax mov es, ax
mov cx, len ;длина массива lea di, s1 ;адреса строк lea si, s2 SubLoop: ;цикл вычитания по-байтно lodsb ;читаем очередной байт вычитаемого sub [di], al ;отнимаем inc di ;инкремент адреса уменьшаемого/разности loop SubLoop
;восстановим исхоный массим, для этого сложим с вичитаемым mov cx, len lea di, s1 lea si, s2 AddLoop: lodsb add [di], al inc di loop AddLoop
;проделаем то же самое, используя MMX mov cx, len ;число байт shr cx, 3 ;8 байт за 1 раз lea si, s1 ;адреса строк lea di, s2 MMXSubLoop: movq MM0, qword ptr [si] ;грузим 8 байт [si] в MM0 movq MM1, qword ptr [di] ;грузим 8 байт [di] в MM0 psubb MM0, MM1 ;отнимаем по-байтно [si]-[di] сразу все 8 байт movq qword ptr [si], MM0 ;пишем результат на место [si] (уменьшаемое/разность) add si, 8 ;на следующие 8 байт add di, 8 loop MMXSubLoop emms ;завершаем работу с MMX
mov ax,4c00h int 21h ;будем считать s1-s2 s1 db 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8 len equ $-s1 s2 db 0ffh ,0ffh,1,0ffh,2,0ffh,3,0ffh db 0feh,010h,3,011h,2,1,3,4 CSEG ends
end start
----- Удачи! Ответ отправил: Лысков Игорь Витальевич, Модератор Ответ отправлен: 30.05.2010, 23:14 Номер ответа: 261767 Украина, Кировоград Тел.: +380957525051 ICQ # 234137952 Mail.ru-агент: igorlyskov@mail.ru Абонент Skype: igorlyskov
Оценка ответа: 5 Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"? | Отправить SMS #thank 261767 на номер 1151 (Россия) | Еще номера » | Оценить выпуск » Нам очень важно Ваше мнение об этом выпуске рассылки! Скажите "спасибо" эксперту, который помог Вам! Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА на короткий номер 1151 (Россия) Номер ответа и конкретный текст СМС указан внизу каждого ответа. Полный список номеров » * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов) ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются. *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании. |
Комментариев нет:
Отправить комментарий