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

суббота, 26 октября 2013 г.

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

 
Если выпуск не отображается, вы можете прочесть его на сайте Отказаться от рекламы
  
  
Оборотни против вампиров! Dark Age - новая MOORPG. Огромный мир, захватывающие сражения!
  
  
Сайт медицинской организации Сайт медицинской организации
идеи, советы, готовые решения

   Klipsch Всепогодная акустика Klipsch AW 400 Klipsch Всепогодная акустика Klipsch AW 400
Купить за 4575 руб. Подробнее...

   Boston Acoustics Всепогодная акустика Boston Acoustics Boston Acoustics Всепогодная акустика Boston Acoustics
Купить за 10300 руб. Подробнее...

 
  

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

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

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

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

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

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

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

Консультация # 187584: Уважаемые эксперты! Пожалуйста, ответьте на вопрос:Здравствуйте. Необходимо написать программу, которая удовлетворяет данному условию: В сегменте данных задан массив из 10 однобайтовых чисел. Написать процедуру вычисления среднего арифметического этих чисел. Результат вычисления вывести на монитор в символьной форме. Программа должна со...


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

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:Здравствуйте. Необходимо написать программу, которая удовлетворяет данному условию: В сегменте данных задан массив из 10 однобайтовых чисел. Написать процедуру вычисления среднего арифметического этих чисел. Результат вычисления вывести на монитор в символьной форме. Программа должна состоять из сегментов данных, кода и стека.

Нужно использовать 32-х разрядные API функции, 32-х разрядные регистры, предпочтительно использовать ассемблер MASM

Дата отправки: 23.10.2013, 19:54
Вопрос задал: Посетитель - 397588 (Посетитель)
Всего ответов: 2
Страница онлайн-консультации »


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

Здравствуйте, Посетитель - 397588!
Вот Вам программа. Будут вопросы, спрашивайте в мини-форуме.
Но сначала постарайтесь разобраться самостоятельно. smile

Код :
;----------------------------------------------------------------- ;В сегменте данных задан массив из 10 однобайтовых чисел.  ;Написать процедуру вычисления среднего арифметического этих чисел.  ;Результат вычисления вывести на монитор в символьной форме.  ;Программа должна состоять из сегментов данных, кода и стека. ;----------------------------------------------------------------- 	.386 ;модел памяти и соглашение для передачи параметров,  ;необходимые для работы в среде Windows 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 CalcMiddle	PROTO	:DWORD, :DWORD  ;стек 	.stack	1024  ;сегмент данных 	.data ;данные, считаем беззнаковыми A	db	123, 23, 67, 0, 34, 45, 3, 2, 1, 35 lenA	equ	($-A)		;количество данных sMiddle	db	'Middle = ',0	;строка для вывода format	db	'%d',0ah,0	;формат для преобразования числа в строку  ;сегмент кода 	.code main	proc local	buffer[64]:byte			;буфер для преобразования числа в строку  ;выводим "Middle = " 	invoke	StdOut, addr sMiddle	  ;считаем среднее арифметическое, результат в EAX 	invoke	CalcMiddle, addr A, lenA 	 ;преобразуем число в строку 	invoke	wsprintf, addr buffer, addr format, eax ;выведем строку-число 	invoke	StdOut, addr buffer ;выход	 	invoke	ExitProcess, NULL main	endp  ;подсчет среднего арифметического ;параметры: адрес массива беззнаковых байт и длина массива ;результат в EAX ;используемые регистры EBX, ECX, EDX в начале сохраняются в стеке,  ;перед выходом восстанавливаются CalcMiddle	proc uses ebx ecx edx, pArray:DWORD, iCount:DWORD 	mov	edx, pArray	;адрес массива 	mov	ecx, iCount	;его длина 	xor	eax, eax	;накапливаемая сумма CalcSumLoop: 	movzx	ebx, byte ptr[edx]	;преобразовываем очередной байт в DWORD 	inc	edx		;смещаем адрес на следующий элемент 	add	eax, ebx	;накапливаем сумму 	loop	CalcSumLoop	;по всем 	cdq			;подготавливаемся к делению eax -> edx:eax 	div	iCount		;edx:eax / iCount, EAX - искомое среднее арифметическое 				;EDX - остаток, его мы отбрасываем 	ret CalcMiddle	endp  ;вывод строки на стандартное выходное устройство ;параметр - адрес строки StdOut		proc lpszText:DWORD ;локальные переменные в стеке LOCAL	hOutPut	:DWORD		;описатель стандартного выходного устройства LOCAL	bWritten:DWORD		;количество выведенных символов LOCAL	len:DWORD		;длина строки  ;получаем handle устройства 	invoke	GetStdHandle, STD_OUTPUT_HANDLE 	mov	hOutPut, eax  ;получаем длину строки 	invoke	lstrlen, lpszText 	mov	len, eax  ;выводим 	invoke	WriteFile, hOutPut, lpszText, len, ADDR bWritten, NULL  ;возвращаем количество выведенных символов 	mov eax, bWritten 	ret StdOut	endp  	end	main

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

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


Консультирует Зенченко Константин Николаевич (Модератор):

Здравствуйте, Посетитель - 397588!

Смотрите приложение.
Использованы только функции описанные в методичке.
ps:вопросы задавайте в мини-форум.
Удачи!

Приложение:

Консультировал: Зенченко Константин Николаевич (Модератор)
Дата отправки: 24.10.2013, 17:32
Рейтинг ответа:

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


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

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

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


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

Прошлые выпуски
RFpro.ru: Ассемблер? Это просто! Учимся программировать    18 октября 2013, 17:33
RFpro.ru: Ассемблер? Это просто! Учимся программировать    10 сентября 2013, 23:03
RFpro.ru: Ассемблер? Это просто! Учимся программировать    27 июля 2013, 22:32

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

Subscribe рекомендует
 
Компьютеры и интернет  →   рассылки   и   группы
  
Учимся работать в компьютерных программах
Приветствуем Вас в группе " Учимся работать в компьютерных программах "! Интересные ресурсы: Личный блог Владимира Хомиченко Портал по Joomlа joomla-sec...
Темы: 9497   Участники: 37102
  Русские на Украине-взгляд на Россию!
Пишем обо всем: когда и как оказались вне России, проблемные семейные, религиозные, политические, денежные, любовные... За Россией наблюдаем, сопереживаем, любим, радуемся, осуждаем..... Хотим быть вместе...
Темы: 1225   Участники: 1150
  Рукоделие
Всё самое полезное о рукоделии! Уроки, описания, советы, схемы, книги! Вязание, шитьё, вышивание, обработка кожи, лепка, макраме, валяние, ткачество, ко...
Темы: 46509   Участники: 94226
 
 
 
Подписан адрес: admin10383.deep@blogger.com
Код этой рассылки: comp.prog.assembler
Архив рассылки
Отписаться:  На сайте  Почтой
Поддержка подписчиков
Убрать рекламу
Другие рассылки этой тематики
Другие рассылки этого автора
 
Рассылка производится: Subscribe.Ru / ЗАО «Интернет-Проекты» / О компании / Политика конфиденциальности

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

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