[Asembler] Liczba bitowa i przesuwanie

0

Witam jak napisać w Masm32 liczbę zeby wyświetlała sie w sposób bitowy a konkretnie musze zrobić:

Wykonać operacje przesuwania i rotacji bitów.
Liczbę testową 10100110001110000111100000111110b zapisać w sekcji danych korzystając z formatu
liczb binarnych.
Wyświetlić liczbę testową, oraz liczby po każdemu przesuwaniu.

A muszę go przesunąć w lewo CFc4, w prawo a2.

gdzie:

CFc – cykliczne przez znacznik CF
a – arytmetyczne
„liczba” – liczba bitów.

0

Musisz wypisywać całą liczbę bit po bicie od najstarszego do najmłodszego

0

enter 32,0
lea eax,[ebp-32]

mov ecx,32
x:
mov byte [eax+ecx-1],'0'
bt dword [liczba],ecx
adc byte [eax+ecx-1],0
loop x

push eax
push f
call [printf]
add esp,8

leave

...

f db '%.32s',0
liczba dd 10100110001110000111100000111110b

0

enter i bt... nie obraź się ale nawet najstarsi pracownicy Intela nie pamiętaja kiedy się tak pisało.

0

hmm? enter afaik jest stosunkowo nowa instrukcja.
bt kopiuje bit do CF, oczywiscie lepsze byloby cos w stylu or (mov al,[bufor+offset] / mov al,30h / one_bit_or al,[liczba+bit] / mov [bufor+offset],al) ale niestety tak sie nie da.

moja wiedza asemblera nie jest ogromna, pewnie sa jakies instrukcje ktore lepiej sobie z tym radza, i mam nadzieje ze ktos napisze to lepiej :)

0
ten zuy napisał(a)

enter i bt... nie obraź się ale nawet najstarsi pracownicy Intela nie pamiętaja kiedy się tak pisało.

zgadzam się z tym ale też nie do końca... "enter rozmiar, wartość" rzeczywiście jest obecnie zastępowany czasami przez push bp/mov bp, sp/sub sp, "rozmiar" ale co do bt: jeżeli nie znasz maski bitowej (później używanej w and) to jest to chyba jedyne wyjście...

1 użytkowników online, w tym zalogowanych: 0, gości: 1