Я хочу поменять местами два бита.Как это сделать? - PullRequest
1 голос
/ 07 марта 2019

Мне задают вопрос, в котором я должен написать программу так, чтобы последний бит адреса смещения первого сегмента становился первым битом адреса смещения второго сегмента. Например, если мне дается ABCDH, то адрес смещения второго адреса должен быть DCBAH. Я просто сосредоточен на обмене адресом смещения и пока игнорирую базовый адрес:

MOV AX,ABCDH
ROR AX,16  ;    this will rotate the value of AX 16 times

Теперь у нас есть CDABH. Теперь я хочу поменять местами D и C. Я застрял в этой точке. Буду ли я использовать команду SAR?

1 Ответ

3 голосов
/ 10 марта 2019
MOV AX,ABCDH
ROR AX,16  ;    this will rotate the value of AX 16 times

Теперь у нас есть CDABH

Регистр AX содержит 16 бит.Когда вы поворачиваете эти 16 битов 16 раз, вы получаете то же значение, с которого вы начали!

Например, если мне дается ABCDH, тогда адрес смещения второго адреса должен быть DCBAH

Итак, вы хотите перейти от ABCDh к DCBAh.

Регистр AX разделен на 2 половины.Низшая половина называется AL, а верхняя половина - AH.Вы можете работать с этими половинами независимо.

Инструкция mov ax, 0ABCDh помещает значение 0ABh в AH и помещает значение 0CDh в AL.

mov     ax, 0ABCDh  ; AH = 0ABh AL = 0CDh
rol     al, 4       ; AH = 0ABh AL = 0DCh 
rol     ah, 4       ; AH = 0BAh AL = 0DCh
xchg    al, ah      ; AH = 0DCh AL = 0BAh

Теперь, наконец, AX=0DCBAh.


Все вышеперечисленное касается 4-битных величин.Мы называем эти отрывки.
Вы можете записать свое шестнадцатеричное значение 0ABCDh, используя двоичное представление, подобное 1010101111001101b.Вы можете видеть, что есть 16 бит.

Выровненные группы битов имеют специальные имена:

  • каждые 4 бита образуют полубайт , вы можете видеть, что есть 4 полубайта.(1010 1011 1100 1101)
  • каждые 8 ​​бит образуют байт , вы можете видеть, что есть 2 байта.(10101011 11001101)
  • каждые 16 битов составляют слово , вы можете видеть, что есть 1 слово.(1010101111001101)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...