Инвертировать в числе указанные разряды - Assembler

Узнай цену своей работы

Формулировка задачи:

У меня задание: В числе Х инвертировать указанные разряды, вывести новое число Х Который день я сижу в интернете и пытаюсь понять как хотя бы начать это делать. Я изучила логические операции, которые, возможно, там понадобятся. Но понимаю, что смогу сделать программу только для уже известного мне числа и для определённого количества разрядов. Как бы "статично". А задание как бы "динамично". И я не знаю как к нему подступить. Подскажите пожалуйста -- с чего начать?

Решение задачи: «Инвертировать в числе указанные разряды»

textual
Листинг программы
var s:string[16];
    x:word;
begin
readln(x);
readln(s);
 asm
 cld
 lea si,s+1
 mov cx,16
  @Cycle:
  lodsb
  rcr al,1
  rcl bx,1
  loop @Cycle
 xor x,bx
 end;
writeln(x);
readln;
end.

Объяснение кода листинга программы

  1. Переменная s объявлена как строка на 16 символов.
  2. Переменная x объявлена как слово (16 бит).
  3. Программа считывает значение переменной x из стандартного ввода.
  4. Программа считывает строку из стандартного ввода в переменную s.
  5. Начинается ассемблерный блок.
  6. Устанавливается направление данных на чтение (cld).
  7. Устанавливается индексный регистр si на первое значение в строке s (lea si,s+1).
  8. Устанавливается счётчик циклов на 16 (mov cx,16).
  9. Начинается цикл, который повторяется 16 раз (label @Cycle).
  10. В каждом цикле происходит считывание байта из строки s в регистр al (lodsb).
  11. Регистр al инвертируется с помощью операции rcr (rcr al,1).
  12. Регистр bx инвертируется с помощью операции rcl (rcl bx,1).
  13. Выполняется проверка на выход из цикла (loop @Cycle).
  14. Результат инвертирования записывается в переменную x (xor x,bx).
  15. Завершается ассемблерный блок.
  16. Выводится значение переменной x на стандартный вывод (writeln(x)).
  17. Программа ожидает ввода данных с клавиатуры (readln).
  18. Завершается основная программа (end).
  19. Ввод данных завершён (readln;).
  20. Программа завершена (end).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы