Size: a a a

Ассемблер

2021 March 26

ST

Saenro T in Ассемблер
Смотря что у тебя на протяжении всего цикла происходит с eax. Если записи в него нет, то можно вывести за цикл.
Можно ещё вместо этих двух команд поставить две эти команды: movzx eax, al inc esi;
А вообще mov eax, 0 — пятибайтовая команда, xor eax, eax — всего два байта.
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
Alexander Morozov
Что-то я запутался в 32-х разрядном ассемблере, помогите!

Дан массив байт, надо в цикле прочесть байты, преобразовав каждый в двойное слово. Важно, то, что байты надо трактовать как беззнаковые числа.

    mov esi,buff
   mov ecx,buff_size
cicle:
   mov eax,0 ; Очищаем старшую часть регистра
   lodsb
   ... ; Здесь используем eax
   loop cicle

так?
я думаю что задача состоит в том, что нужно менять местами старшую младшую часть двухбайтового числа. еапример

1,0,3,7... в памяти они все также лежат. если сразу брать два байта и делать и знего число-слово, то в хексе получится 0х0001. но спаренные два байта то имеют хекс 0х0100.
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
ааа, нето. надо байт просто расширять до слова.
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
создай массив вдвое больше, обнули его и скопируй каждый байт в четную позицию массива
источник

ST

Saenro T in Ассемблер
Ему dwordы нужны
источник

ST

Saenro T in Ассемблер
Но сохраняет он наверняка stosd'ом, или аналогом. Если вообще нужно сохранять.
источник

A

Aleksandr in Ассемблер
Lodsb+stosd?
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
Saenro T
Ему dwordы нужны
показалось ворды.
источник

ST

Saenro T in Ассемблер
Aleksandr
Lodsb+stosd?
Ну, он же преобразовывает байт в dword
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮bot
создай массив вдвое больше, обнули его и скопируй каждый байт в четную позицию массива
тоже самое только копировать в каждый 4й байт
источник

A

Aleksandr in Ассемблер
Saenro T
Ну, он же преобразовывает байт в dword
Так все верно же тогда
источник

AM

Alexander Morozov in Ассемблер
У меня просто были сомнения в том, не вызовет ли команда lodsb расширения знака на старший байт/слово/dword, подобно тому, как это происходит в PDP11. Похоже, что нет.
источник

D

Den in Ассемблер
и еще вроде 0 только eax очистит, rax не очистит если в старшей половине что-то будет так что лучше ксором наверное привыкнуть пользоваться?
источник

A

Aleksandr in Ассемблер
xor тоже почистит только указанную часть
источник

A

Aleksandr in Ассемблер
Но у нас речь о двордах, так что часть RAX выше EAX нас не интересует
источник

D

Den in Ассемблер
а вот кстати, хотел спросить мож есть какая-то комманда для чистки всех регистров типа как pusha popa только для чистки всех регистров или лучше четырех ходовых
источник

A

Aleksandr in Ассемблер
нету. Но можешь создать себе область с нулями и делать из нее POPA(D)
источник

D

Den in Ассемблер
а, тож вариант! 😁
источник

ST

Saenro T in Ассемблер
Den
а вот кстати, хотел спросить мож есть какая-то комманда для чистки всех регистров типа как pusha popa только для чистки всех регистров или лучше четырех ходовых
А зачем их вообще чистить? Может это лишние операции?
источник

D

Den in Ассемблер
Saenro T
А зачем их вообще чистить? Может это лишние операции?
а я вот вчера когда делал, квадрат, в статике в эмуляторе все норм было а в досбоксе первая строка сьезжала, а когда обнулил нормально стало
источник