Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

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


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

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

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

Асмик Гаряка
Статус: Академик
Рейтинг: 10288
∙ повысить рейтинг »
Коцюрбенко Алексей aka Жерар
Статус: Академик
Рейтинг: 3890
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2404
∙ повысить рейтинг »

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

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

Консультация # 185720: Здравствуйте, уважаемые эксперты! Прошу вас написать программу вот с таким заданием: Дано 32-битное слово, поменять местами 15 и 16 биты. Как она будет выглядеть в программе, я не понимаю, так что помогите решить, желательно к каждой строке комментарии. п.с. Ассемблер : TASM Размер переменных: двойное слово 32-битные ...


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

Здравствуйте, уважаемые эксперты! Прошу вас написать программу вот с таким заданием:

Дано 32-битное слово, поменять местами 15 и 16 биты.

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

п.с.
Ассемблер : TASM
Размер переменных: двойное слово
32-битные регистры используем.
Число прописываем сами в файле asm

Заранее спасибо.

Дата отправки: 31.03.2012, 01:56
Вопрос задал: Yankov Dmitry (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


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

Здравствуйте, Yankov Dmitry!
Программа сделана универсально, может менять местами любые два бита
Кроме того, сделана из расчета, что биты считаются с 0,
Т.е., меняя биты 15 и 16, мы поменяем местами старший бит младшего слова
и младший бит старшего.
Если Вы считаете биты с единицы, т.е. нужно поменять местами два старших бита
младшего слова, то поменяйте в программе номера бит на 14 и 15
Удачи в понимании ассемблера! smile

Код :
	.model	small
	.data
num	dd	00000000000000001101010110101010b

	.code
	.386
start:
	mov	ax, @data
	mov	ds, ax

	mov	eax, num	;наше число
	mov	cl, 15		;номер первого бита (счет с 0)
	mov	ch, 16		;номер второго бита (счет с 0)
	call	ChangeBits	;меняем биты в eax
	mov	num, eax	;сохраняем результат

	mov	ax, 4c00h
	int	21h

;меняем местами два бита врегистре eax, 
;номера бит заданы в cl и ch
ChangeBits	proc
;сформируем маску первого бита
	mov	edx, 1		;поставим 1 в нужную позицию
	shl	edx, cl		;номер бита будет число, на которое надо сдвинуть
;сформируем маску второго бита
	mov	cl, ch		;его номер	
	mov	ebx, 1
	shl	ebx, cl		;маска бита в ebx
;сформируем общую маску двух бит
	or	edx, ebx

;проверим, какие биты на указанных местах
	mov	ecx, eax	;наше число
	and	ecx, edx	;оставляем только нужные биты
	jz	CBret		;если оба нуля, то менять местами не надо
	cmp	ecx, edx	;если равны маске, значит оба единицы, 
	jz	CBret		;также не меняем
	xor	eax, edx	;если разные, то операцией xor с единицами меняем местами
CBret:
	ret
ChangeBits	endp

	end	start

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

5
нет комментария
-----
Дата оценки: 31.03.2012, 21:29

Рейтинг ответа:

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


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

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

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



В избранное