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

четверг, 21 апреля 2016 г.

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

 
Если выпуск не отображается, вы можете прочесть его на сайте
  

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

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

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

Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 349
• повысить рейтинг »
Куликов Роман Евгеньевич
Статус: 1-й класс
Рейтинг: 0
• повысить рейтинг »
Козлова Ольга Александровна
Статус: 1-й класс
Рейтинг: 0
• повысить рейтинг »

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

Номер выпуска:1601
Дата выхода:21.04.2016, 16:51
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:18 / 7
Вопросов / ответов:1 / 2

Консультация # 189200: Здравствуйте! Прошу помощи в следующем вопросе: Дано число в двоичном виде. Поменять местами пятый бит с седьмым . Результат разделить на 8 и проинвертировать. Прошу помощи т.к ни черта ни черта не смыслю в ассемблере....

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

Здравствуйте! Прошу помощи в следующем вопросе:
Дано число в двоичном виде. Поменять местами пятый бит с седьмым . Результат разделить на 8 и проинвертировать.
Прошу помощи т.к ни черта ни черта не смыслю в ассемблере.

Дата отправки: 15.04.2016, 18:30
Вопрос задал: romanevdokimov1 (Посетитель)
Всего ответов: 2
Страница онлайн-консультации »


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

Здравствуйте, romanevdokimov1!
Держите программку

Код (Assembler) :: выделить код
  	.186			;чтобы можно было использовать сдвиги  				; на больше, чем один бит  code segment   assume cs:code  main:  	mov bl, 10001001b	;исходный байт  	call print_bits		;выведем на экран  	call change_bits	;меняем местами 5 и 7 биты (считаем с 0!)  	call print_bits		;выведем на экран, что получилось    	shr  bl, 3		;разделим на 8 сдвигом вправо на 3 бита  	call print_bits		;выведем на экран, что получилось  	not  bl			;инвертируем биты  	call print_bits		;выведем на экран, что получилось    	mov ah, 0		;ждем нажатие на клавишу  	int 16h  	mov ax,4c00h		;выход  	int 21h    print_bits	proc		;вывод побитно байта bl  	push bx			;сохраним в стеке  	mov  cx, 8		;8 бит  	mov  ah, 2		;ф-я вывода на экран  print_bits_loop:  	shl  bl, 1		;старший бит уходит в С  	mov  dl, '0'		;или '0' или '1'  	adc  dl, 0		;добавим бит С  	int  21h		;выводим  	loop print_bits_loop	;по всем битам  	mov  dl, 0dh		;перевод строки  	int  21h  	mov  dl, 0ah  	int  21h  	pop  bx  	ret  print_bits	endp    change_bits proc		;обмен 5 и 7 битами в байте bl  	mov al, bl  	shr al, 2		;бит 7 сдвигаем на место 5 бита  	and al, 00100000b	;выделяем по маске 5 бит  	mov ah, bl  	shl ah, 2		;бит 5 сдвигаем на место 7 бита  	and ah, 10000000b	;выделяем по маске 7 бит  	and bl, 01011111b	;обнуляем старые 5 и 7 биты  	or  bl, al		;добавляем старый 7 на месте 5 бита  	or  bl, ah		;добавляем старый 5 на месте 7 бита  	ret  change_bits endp  code ends  	end main  

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

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


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

Здравствуйте, romanevdokimov1!

Самая сложная часть, обмен битов сделана только операциями сдвигов.

Код (Assembler) :: выделить код
model	tiny  code  org	100h  start:	mov	bx,10000000b;  	call	@@00  	rol	bx,1  	call	@@00  	rol	bl,1  	call	@@00  	rol	bl,1  	call	@@00  	ror	bx,1  	call	@@00  	ror	bl,1  	call	@@00  	rol	bh,1  	call	@@00  	ror	bx,1  	call	@@00  	sub	bx,8  	call	@@00  	xor	bx,0FFh  ;вывод слова  @@00:	mov	di,bx  	mov	al,10  	int	29h  	mov	al,13  	int	29h  	call	@@01  @@01:	mov	al,' '  	int	29h  	mov	cx,8  @@02:	xor	al,al  	shl	di,1  	adc	al,'0'  	int	29h  	loop	@@02  	ret  end start

Меняя значение того или иного бита, можно посмотреть как он движется в слове.
Удачи!

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

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


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

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

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

 
     Прошлые выпуски
RFpro.ru: Ассемблер? Это просто! Учимся программироватьRFpro.ru: Ассемблер? Это просто! Учимся программироватьRFpro.ru: Ассемблер? Это просто! Учимся программироватьВсе выпуски рассылки
 
 
Subscribe.Ru / АО «Интернет-Проекты» / О компании / Политика конфиденциальности

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

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