WMmail.ru - сервис почтовых рассылок

среда, 30 октября 2013 г.

RFpro.ru: Ассемблер? Это просто! Учимся программировать

 
Если выпуск не отображается, вы можете прочесть его на сайте Отказаться от рекламы
  
  
Новая MMORPG! Dark Age – невероятный мир, захватывающие бои. Играй бесплатно!
  
  
Изучаете английский, но результата нет? Изучаете английский, но результата нет?
Мы знаем, что делать! Виртуальный репетитор английского языка. И это бесплатно!

  Выбери свой подарок. Выбери свой подарок.
Мобильный маркетинг с выгодой!

   Russound Мультирум Russound 858 Russound Мультирум Russound 858
Купить за 3410 руб. Подробнее...

 
  

  Мои подписки      Мои группы      Мои новости     
        Автор 
Калашников О.А.
      
  
Компьютеры и интернет   →   Софт   →   Программирование   →   RFpro.ru: Ассемблер? Это просто! Учимся программировать
  
RFpro.ru: Ассемблер? Это просто! Учимся программировать
 
 

Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Советник
Рейтинг: 10653
• повысить рейтинг »
Коцюрбенко Алексей aka Жерар
Статус: Советник
Рейтинг: 3992
• повысить рейтинг »
Абаянцев Юрий Леонидович aka Ayl
Статус: Профессионал
Рейтинг: 1762
• повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Assembler (Ассемблер)

Номер выпуска:1550
Дата выхода:31.10.2013, 02:30
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:45 / 23
Вопросов / ответов:1 / 1

Консультация # 187594: Здравствуйте,уважаемые эксперты. Нужно написать программу,желательно используя MASM. Даны две строки: строка1 "F4D531675F637A9745967E883A7AB18E" строка2 "0123456789ABCDEFGHJKLMNPQRTUVWXY" Строку1 нужно разбить на 16 двухбайтных слов и с каждым из слов провести логическую операцию И (AND) c 8000001Fh,тут ж...


Консультация # 187594:

Здравствуйте,уважаемые эксперты.
Нужно написать программу,желательно используя MASM.
Даны две строки:
строка1 "F4D531675F637A9745967E883A7AB18E"
строка2 "0123456789ABCDEFGHJKLMNPQRTUVWXY"

Строку1 нужно разбить на 16 двухбайтных слов и с каждым из слов провести логическую операцию И (AND) c 8000001Fh,тут же прибавляя к
каждому из 16 получившихся значений единицу.Каждый получившийся р-тат-- это смещение в строке2,по которому нужно взять символ,и,когда их наберётся 16,в виде строки вывести на экран (в данном случае это "LMH7Y3TP5NX8TTHE").
Спасибо.

Дата отправки: 27.10.2013, 15:16
Вопрос задал: Сергей (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Лысков Игорь Витальевич (Старший модератор):

Здравствуйте, Сергей!
Т.к. в данном примере число исходных данных ровно столько, сколько надо,
то проверка на 16 байт отсутствует. Это легко добавляется.
Демонстрируется сама идея обработки данных.
Примерно так:

Код :
 	.386 model	flat, stdcall option	casemap :none   ;подключаем необходимые inc-файлы include \masm32\include\windows.inc ;include \masm32\include\user32.inc include \masm32\include\kernel32.inc  ;и библиотеки ;includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib  ;прототипы функций StdOut		PROTO	:DWORD, :DWORD GetNibble	PROTO GetNum		PROTO CalcText	PROTO	:DWORD, :DWORD, :DWORD  ;стек 	.stack	1024  ;сегмент данных 	.data sMD5	db	"F4D531675F637A9745967E883A7AB18E" lenMD5	equ	($-sMD5)/2		;количество данных sData	db	"0123456789ABCDEFGHJKLMNPQRTUVWXY" sTitle	db	"Decoding text: "  	.data? sText	db	256 dup (?)	  ;сегмент кода 	.code main	proc local	hOutPut:DWORD		;описатель стандартного выходного устройства ;получаем handle устройства 	invoke	GetStdHandle, STD_OUTPUT_HANDLE 	mov	hOutPut, eax  ;выводим "Decoding text: " 	invoke	StdOut, hOutPut, addr sTitle  	invoke	CalcText, addr sMD5, lenMD5, addr sText 	 ;выведем строку 	invoke	StdOut, hOutPut, addr sText ;выход	 	invoke	ExitProcess, NULL main	endp  GetNibble	proc		;hex-символ в hex-число 0-f 	lodsb 	sub	al, '0'	 	cmp	al, 9		;0-9 ? 	jbe	GetNibbleRet 	sub	al, 'A'-'0'-0ah	;A-F GetNibbleRet: 	ret GetNibble	endp  GetNum	proc			;два hex-символа в байт 	call	GetNibble 	shl	al, 4 	mov	ah, al 	call	GetNibble 	or	al, ah 	ret GetNum	endp  CalcText	proc uses esi ecx edi, pMD5:DWORD, iCount:DWORD, pText:DWORD 	mov	esi, pMD5	;адрес массива 	mov	ecx, iCount	;его длина 	mov	edi, pText CalcTextLoop: 	call	GetNum 	and	eax, 0000001fh 	mov	al, sData[eax] 	stosb 	loop	CalcTextLoop 	mov	byte ptr [edi], 0	;закроем строку нулем для вывода 	ret CalcText	endp  ;вывод строки на стандартное выходное устройство ;параметр - адрес строки StdOut		proc hOutPut:DWORD, lpszText:DWORD ;локальные переменные в стеке LOCAL	bWritten:DWORD		;количество выведенных символов LOCAL	len:DWORD		;длина строки  ;получаем длину строки 	invoke	lstrlen, lpszText 	mov	len, eax  ;выводим 	invoke	WriteFile, hOutPut, lpszText, len, ADDR bWritten, NULL  ;возвращаем количество выведенных символов 	mov eax, bWritten 	ret StdOut	endp  	end	main 

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 28.10.2013, 01:38
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


 
 
Комментировать выпуск
     В избранное

Прошлые выпуски
RFpro.ru: Ассемблер? Это просто! Учимся программировать    30 октября 2013, 02:04
RFpro.ru: Ассемблер? Это просто! Учимся программировать    26 октября 2013, 20:34
RFpro.ru: Ассемблер? Это просто! Учимся программировать    18 октября 2013, 17:33

Все выпуски рассылки
 
 

Subscribe рекомендует
 
Компьютеры и интернет  →   рассылки   и   группы
  
Единство всего мира и понимание его
Единство всего мира - это идея признанная наукой экологией более полувека. Однако, впервые эта идея была обнародована более 3300 лет тому назад в пятикн...
Темы: 1203   Участники: 1730
  Откровенно и с юмором о сетевом бизнесе
А некдоты и юмор о себе и не только. В ыявление и преодоление недостатков в бизнесе. Т резвый взгляд в будущее. О бмен опытом между коллегами разных компаний. Правила публикаций здесь Блог администратора Сайт модератора.
Темы: 457   Участники: 3164
  Уникальные новости от Свободного Журналиста
Я - свободный журналист. Моя работа - дать Вам пищу для ума. Испытываете инфо-голод? Вкусности здесь! Цель создания группы: публикация качественной, инт...
Темы: 64   Участники: 1193
 
 
 
Подписан адрес: admin10383.deep@blogger.com
Код этой рассылки: comp.prog.assembler
Архив рассылки
Отписаться:  На сайте  Почтой
Поддержка подписчиков
Убрать рекламу
Другие рассылки этой тематики
Другие рассылки этого автора
 
Рассылка производится: Subscribe.Ru / ЗАО «Интернет-Проекты» / О компании / Политика конфиденциальности

Комментариев нет:

Отправить комментарий