Size: a a a

Ассемблер

2020 December 21

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
movzx, movsx — это зависит от того, кстати, знаковый результат хочешь получить или беззнаковый.
shr — беззнаковый, а знаковый аналог — sar.
источник

ЭR

Эрик Regent in Ассемблер
Ребят, вопрос на засыпку. Умножение без изменения размера результата, кроме как церез цикл суммирования, подскажите
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Эрик Regent
Ребят, вопрос на засыпку. Умножение без изменения размера результата, кроме как церез цикл суммирования, подскажите
imul ax,cx,15
или
imul ax,cx
источник

DR

Dima Richev in Ассемблер
Eugene Krasnikov (ᴊɪɴ x)
Не надо ничего делить.
Смотря как преобразовать ты хочешь.
Вот есть число 0х12345678.
Что нужно получить?

Если 0х5678, то просто читаем из памяти 2 младших байта (mov ax,word [var]), либо movzx eax,word [var] или movsx eax,word [var] или movzx eax,ax (movsx eax,ax).

Если 0х1234, то читаем 2 старших байта: mov ax,[var+2] или movzx eax,word [var+2], либо mov ax,word [var+2]. С регистрами используем сдвиги: shr eax,16.

С fpu всё проще. fld/fst/fstp читают и пишут в той размерности, которую укажешь. Можешь прочитать как qword, а записать как dword.
Немного не понятно. К примеру, нужно из eax(dword) в al (byte)
Что нужно для этого?
Из al в eax понял:
movzx eax, al
источник

ST

Saenro T in Ассемблер
Dima Richev
Немного не понятно. К примеру, нужно из eax(dword) в al (byte)
Что нужно для этого?
Из al в eax понял:
movzx eax, al
На примере какого числа?
источник

DR

Dima Richev in Ассемблер
Saenro T
На примере какого числа?
num     db   ?
num2    dd   0x12345678

Из num2 в num
источник

DR

Dima Richev in Ассемблер
Т.е из dword в byte
источник

ST

Saenro T in Ассемблер
Какую часть из 12345678 ты хочешь в al?)
источник

DR

Dima Richev in Ассемблер
Так там один байт, без разницы. Был бы рад увидеть два варианта
источник

ST

Saenro T in Ассемблер
Shrink right норм вариант?
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Dima Richev
Немного не понятно. К примеру, нужно из eax(dword) в al (byte)
Что нужно для этого?
Из al в eax понял:
movzx eax, al
Ничего не нужно.
В al и так байт от eax.
Если eax=0x12345678, то al=0x78.
источник

ST

Saenro T in Ассемблер
Eugene Krasnikov (ᴊɪɴ x)
Ничего не нужно.
В al и так байт от eax.
Если eax=0x12345678, то al=0x78.
А может ему нужно что-то из середины)
источник

DR

Dima Richev in Ассемблер
А я думал только ax от eax меняется, а al, ah остаются
источник

DR

Dima Richev in Ассемблер
И всё же - а как тогда получить из начала? 0x12
источник

ST

Saenro T in Ассемблер
Dima Richev
И всё же - а как тогда получить из начала? 0x12
Напиши в бинаре число
источник

DR

Dima Richev in Ассемблер
Зачем
источник

ST

Saenro T in Ассемблер
0111 0100 - 0000 0000 - 0110 0000 - 1100 0110 какая часть нужна в al?
источник

DR

Dima Richev in Ассемблер
Было бы легче просто написать ответ, что бы не тратить ни моё ни своё время, а я буду сам разбираться
источник

A

Aleksandr in Ассемблер
Dima Richev
И всё же - а как тогда получить из начала? 0x12
MOV EAX, 0x12345678
SHR EAX, 24
;AL=12
источник

A

Aleksandr in Ассемблер
Ну или вращениями
источник