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

пятница, 3 июня 2011 г.

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

 
Если выпуск не отображается, вы можете прочесть его на сайте Отказаться от рекламы
  
  
Эксклюзивные бренды по клубным ценам!
  
  
Вспомни детство! Вспомни детство!
Аппарат для приготовления сахарной ваты - отличное угощение!

  Все дело в размере! Все дело в размере!
Easy Curves - первый тренажер для женской груди!

  Худеть не напрягаясь - легко! Худеть не напрягаясь - легко!
Теряйте лишние килограммы с поясом для похудения Vibra Tone.

 
  

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

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

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

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

Boriss
Статус: Академик
Рейтинг: 2670
• повысить рейтинг »
Жерар
Статус: Профессор
Рейтинг: 2425
• повысить рейтинг »
Абаянцев Юрий Леонидович aka Ayl
Статус: Профессионал
Рейтинг: 2246
• повысить рейтинг »

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

Номер выпуска:1458
Дата выхода:03.06.2011, 18:33
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:215 / 63
Вопросов / ответов:1 / 1

Вопрос № 183398: Здравствуйте, уважаемые эксперты! Прошу Вас помочь в написании этой программы: Дана двухбайтовая двоичная строка. Сформировать новую строку, в которой каждый бит строки заменен суммой по модулю 2 данного бита и двух его соседей справа. Cпасибо.


Вопрос № 183398:

Здравствуйте, уважаемые эксперты! Прошу Вас помочь в написании этой программы: Дана двухбайтовая двоичная строка. Сформировать новую строку, в которой каждый бит строки заменен суммой по модулю 2 данного бита и двух его соседей справа.
Cпасибо.

Отправлен: 29.05.2011, 18:14
Вопрос задал: Илья Андреевич (Посетитель)
Всего ответов: 1
Страница вопроса »


Отвечает Лысков Игорь Витальевич (Старший модератор) :
Здравствуйте, Илья Андреевич!
Вот Вам программа, решающая Вашу задачу

Код :
;Дана двухбайтовая двоичная строка. Сформировать новую строку,  ;в которой каждый бит строки заменен суммой по модулю 2  ;данного бита и двух его соседей справа  .model small   .stack 100h   .data bstring  dw 1011001111100010b ;наша строка ;подпрограммы отработки для каждого бита bitProgram dw bit_0_Pr,    bit_1_Pr,    bit_15_2_Pr, bit_15_2_Pr    dw bit_15_2_Pr, bit_15_2_Pr, bit_15_2_Pr, bit_15_2_Pr    dw bit_15_2_Pr, bit_15_2_Pr, bit_15_2_Pr, bit_15_2_Pr    dw bit_15_2_Pr, bit_15_2_Pr, bit_15_2_Pr, bit_15_2_Pr sSrc  db 'Source string: $' sXored  db 0dh,0ah,'Xored string:  $' sAny  db 0dh,0ah,'Press any key$'   .code main proc  mov ax, @DATA  mov ds, ax  ;настроим сегмент данных   mov di, bstring ;входная двоичная строка  xor cx, cx  ;номер бита  xor bx, bx  ;выходная двоичная строка BitsLoop:  mov si, cx  ;сформируем смещение п/п для бита  shl si, 1  ;по 2 байта  call bitProgram[si] ;отработаем, в результате, в ax новый бит  or bx, ax  ;формируем выходную строку побитно  inc cx  ;по всем битам  cmp cx, 16  ;0-15  jb BitsLoop   lea dx, sSrc ;выведем исходную строку  mov ah, 9  int 21h  mov ax, bstring ;строка-слово  call PrintBin ;выведем в виде строки бит   lea dx, sXored ;результат  mov ah, 9  int 21h  mov ax, bx  ;выходная строка  call PrintBin   lea dx, sAny ;press any key  mov ah, 9  int 21h   mov ah, 0  ;ждем any key  int 16h   mov ax,4c00h ;выход в ДОС  int 21h main endp  ;п/п возвращает в ax новое значение бита, номер которого в cx, в di - исходная строка bit_15_2_Pr proc  ;подпрограмма xor-а бита 2-15 с двумя соседями справа  dec cx  ;возьмем "соседа соседа"  dec cx  ;cx - его номер  mov ax, di  ;исходная строка  shr ax, cl  ;бит 0 - значение бита "соседа соседа"   inc cx  ;номер бита "соседа"  mov si, di  ;исходная строка  shr si, cl  ;бит 0 - значение бита "соседа"  xor ax, si  ;ax.0 = xor битов соседей справа  bit_current:  inc cx  ;текущий бит  mov si, di  shr si, cl  ;бит 0 - значение текущего бита  xor ax, si  ;ax.0 = xor всех битов   and ax, 1  ;оставим только один 0 бит  shl ax, cl  ;и задвинем его на свое место  ret bit_15_2_Pr endp  ;п/п возвращает в ax новое значение бита, номер которого в cx, в di - исходная строка bit_1_Pr proc  ;подпрограмма xor-а бита 1 с соседом справа  dec cx  ;номер бита "соседа"  mov ax, di  ;исходная строка  shr ax, cl  ;бит 0 - значение бита "соседа"   jmp bit_current ;обработаем текущий бит bit_1_Pr endp  ;п/п возвращает в ax значение 0 бита (он не меняется, у него нет соседей) bit_0_Pr proc  mov ax, di  and ax, 1  ret bit_0_Pr endp  ;п/п вывода слова ax в виде последовательности бит PrintBin proc  mov cx, 16  ;число бит  mov si, ax  ;сохраним в si  mov ah, 2  ;ф-я вывода символа на экран PrintBitLoop:  rcl si, 1  ;сдвинем старший бит в С  mov dl, '0'  ;символ '0'  adc dl, 0  ;добавим к '0' бит С, получим '0' или '1'  int 21h  ;выведем  loop PrintBitLoop   mov dl, 'b'  ;в конце добавим 'b'  int 21h  ret PrintBin endp   end main 


Вывод программы:

Код :
Source string: 1011001111100010b Xored string:  0001101110101110b Press any key

-----
Люби своего ближнего, как самого себя

Ответ отправил: Лысков Игорь Витальевич (Старший модератор)
Ответ отправлен: 31.05.2011, 12:45
Номер ответа: 267484
Украина, Кировоград
Тел.: +380957525051
ICQ # 234137952
Mail.ru-агент: igorlyskov@mail.ru

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 267484 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


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

    Прошлые выпуски
    RFpro.ru: Ассемблер? Это просто! Учимся программировать    02 июня 2011, 17:03
    RFpro.ru: Ассемблер? Это просто! Учимся программировать    01 июня 2011, 04:04
    RFpro.ru: Ассемблер? Это просто! Учимся программировать    31 мая 2011, 03:34

    Все выпуски рассылки
     
     
      
    Здоровая пища: миф или реальность? Здоровая пища: миф или реальность?
    Аэрогриль Flavorwave Turbo Oven - новое слово в кухонном досуге!

      Надоела сутулая спина и обвислый живот? Надоела сутулая спина и обвислый живот?
    Тренажер Ab Rocket - великолепный пресс всего за несколько недель!

      Скачай журнал "Всемирный следопыт" Скачай журнал "Всемирный следопыт"
    8 городов на воде. 5 открытий Моне. Химера Ремарка.

     
      

    Subscribe рекомендует
     
    Компьютеры и интернет  →   рассылки   и   группы
      
    Игры Алавар
    Новые игры Фабрики игр Алавар
    Подписчиков: 62
      Как заработать в интернете.
    Как заработать деньги в глобальной сети. Все способы зарабатывания денег посредством интернета. Советы и рекомендации для новичков интернет-бизнеса.
    Подписчиков: 350
      Клуб профессиональных программистов
    Рассылка клуба профессиональных программистов "Весельчак У". Новости клуба и форума. Авторские статьи членов клуба. Свежие поступления в нашу библиотеку.
    Подписчиков: 1360
     
     
     
    Подписан адрес: admin10383.deep@blogger.com
    Код этой рассылки: comp.prog.assembler
    Архив рассылки
    Отписаться:  На сайте  Почтой
    Поддержка подписчиков
    Убрать рекламу
    Другие рассылки этой тематики
    Другие рассылки этого автора
     
    Рассылка производится: Subscribe.Ru / ЗАО «Интернет-Проекты» / О компании / Политика конфиденциальности

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

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