• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Assembler nie rozumiem pewnego fragmentu kodu

Object Storage Arubacloud
0 głosów
412 wizyt
pytanie zadane 2 listopada 2016 w Assembler przez Patryk Rafał Bywalec (2,700 p.)
witam czy może mi ktoś wytłumaczyć pogrubiony fragment kodu ? bo nie bardzo go rozumiem 

.386
.MODEL FLAT, STDCALL

includelib E:\masm32\lib\user32.lib
includelib E:\masm32\lib\kernel32.lib

STD_OUTPUT_HANDLE equ -11

ExitProcess PROTO :DWORD
GetStdHandle PROTO :DWORD
WriteConsoleA PROTO :DWORD, :DWORD, :DWORD, :DWORD, :DWORD

.DATA
	varA DWORD 1
	varB DWORD 2
	varC DWORD 3
	
	array BYTE 0, 0, 0, 0, 0, 0

	lenght DWORD 0
	rout DWORD 0

	hout DWORD 0
	temp DWORD 0

.CODE
	main proc

	mov eax, 1
	mov ebx, varA
	mul ebx
	mov temp,eax
	mov eax, 4
	mov ebx, varB
	mul ebx
	mov ebx, varC
	sub eax,ebx
	add temp,eax

	mov eax,temp
	mov ebx,10d
	mov ecx,0
// od tego miejsca nie rozumiem
	petla:
		xor edx,edx // może mi ktoś wyjaśnić dlaczego taki zapis
		div ebx tu wiem skracam liczbę dzieląć przez 10
		add dl,30h tu nie bardzo wiem
		mov array[ecx],dl tu wstawiam do tablicy 
		inc ecx
	cmp eax,0
	jnz petla
	mov lenght, ecx

	push STD_OUTPUT_HANDLE
	call GetStdHandle
	mov hout,eax

	push 0
	push rout
	push lenght
	push OFFSET array
	push hout
	call WriteConsoleA
	push 0
		call ExitProcess
	main endp
END

 

1 odpowiedź

+1 głos
odpowiedź 2 listopada 2016 przez jpacanowski VIP (101,940 p.)

xor edx,edx

xor edx, edx to samo co mov edx, 0

Po prostu szybsze niż mov rejestr, 0, gdzie to zero musi być często zapisane 4 bajtami zerowymi. Tak więc i krótsze. Można też sub rej, rej co też będzie szybsze od mov rej, 0

Dzisiaj taka optymalizacja nie ma już praktycznie znaczenia przy dzisiejszych procesorach.

komentarz 2 listopada 2016 przez Patryk Rafał Bywalec (2,700 p.)

dzięki rozumiem a to add dl,30h to dl to co to jest rejestr jakiś jak tak to do czego ?

komentarz 2 listopada 2016 przez jpacanowski VIP (101,940 p.)

EDX (32 bity) = DX (młodsze 16 bitów) + starsze 16 bitów

DX = DH (starsze 8 bitów) + DL (młodsze 8 bitów)

komentarz 2 listopada 2016 przez Patryk Rafał Bywalec (2,700 p.)
można jaśniej ?
komentarz 2 listopada 2016 przez jpacanowski VIP (101,940 p.)

To jest bardzo jasne... 16-bitowy rejestr DX, dzieli się na DH (starsze 8 bitów) + DL (młodsze 8 bitów).

W sumie, powtórzyłem to co napisałem wyżej. To są podstawy.

http://www.bogdro.ciki.me/dos/a_kurs01.htm
-> [Język asembler i rejestry procesora]

Podobne pytania

+2 głosów
1 odpowiedź 395 wizyt
pytanie zadane 2 marca 2022 w Assembler przez Dorian Bajorek Dyskutant (7,920 p.)
0 głosów
2 odpowiedzi 352 wizyt
pytanie zadane 5 czerwca 2022 w Assembler przez niezalogowany
0 głosów
1 odpowiedź 652 wizyt

92,536 zapytań

141,377 odpowiedzi

319,454 komentarzy

61,922 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...