кана Блогове

На петия ден.
За думите и двойни думи
(формати за данни)

Не казвам, че тази тема е най-трудно, но фактът, че тя е най-сложното - това е 100%.

Това, което пиша тук е доста здраво за възприемане, но всичко ще се установят във времето. Не се обезкуражавайте, ако изведнъж в тази глава, може да изглежда, че сглобяването е много сложно, мисля за този фокус.







Не всеки шофьор знае, че за да може машината се върви напред, колелото на мястото на контакт с пътя трябва да се върнем. Докато тази информация е била съобщена на всеки шофьор и всеки човек. Е, вози колата и дискове, каква е разликата, когато спининг колела. Необходимо е да се знае, само при смяна на волана, за да не се обърка ориентацията на каучук, или по време на ремонт.

Приблизително същата информация ще бъде представена в тази глава. На практика всичко бързо научих, ако трябва да се справят с родния код и данни.

Sailor, трябва да знаете вашия приятел (от страна на потенциален враг), е по-добре от себе си.

Binaries са организирани в групи от по осем, тези звена се наричат ​​байта. Помниш ли ме?

Байт - минимален разчетна единица двоичен армия. Помниш ли ме?

2 байта са организирани в една дума (дума).

4 байта са организирани в двойна дума (DWORD и пълен - двойна дума).

DWORD - е най-честата набор от битове в Win32-програми. Тъй като:

В предишната програма, ние сме изправени тук с реда:

"D", тук просто замени DWORD.

Остава един въпрос за малко: защо Disassembler байта инструкции операнди процесори, които виждаме отразява ценностите на операнди в команди Асма?

Не забравяйте, че моряк, изпълними файлове са много хитри. С цел да се обърка врага от байтове по реда на тяхното старшинство, всеки цялата бойна единица, независимо дали става дума (2 байта), DWORD (4 байта), QWORD (8 байта), байтове са изградени от младши до старши, по дяволите ги скъсам!

И действието е както следва:

В дебъгер го виждате по този начин:

Ние пише и чете текст-европейски - от ляво на дясно. Но за номерата повечето хора използват арабски запис - от дясно на ляво (въпреки че броят на чета глупаво от високопоставени фигури =).

За голямо огорчение, програмисти смесен формат дисплей данни бяха приети. Всеки байт се извежда от Арабската система, както и цяла група от байтове - от европеец. Оказва се, че на екрана ще видим друг рекорд. Ако програма-Disassembler и дебъгер възприемат група от байтове като цяло число, то се показва арабски писмен вид, като в колоната команди Assembler: 04 Март 1 февруари, а ако става въпрос само за няколко байта, а след това ще видим европейски рекорд, само по отношение на писмото, получено от байта, както е показано по-горе: 01 02 03 04. Всичко това е само въпрос на екран, или в документите. Например, ако използвате записват цифрови стойности от долния десен ъгъл на екрана, за да в горния ляв ъгъл (от дясно на ляво, отдолу нагоре), а след това нищо не е нужно да се обърне! Това е, ако записът е бил приет, "всичко е наред" или "остави всичко", че тези проблеми не биха били най-малко.







Да предположим, че вкара тук следния ред:

Сега обясня накратко.

След като сме определили размера на дума (или и двете Hiew'e "w"), ние имаме един вид цяло.

Ето как линията ще изглежда в Hiew'e:

Колоната за операнди - като влязохме (броят BBAAh). Но в колона от байтове виждаме огледало подреждане на байта операнди - 00 08, AA BB.

И с подобно разположение DWORD. Да кажем, че:

Въпросът, който най-вероятно произхожда изобщо (и аз съм се познае, че много хора в неприличен вид) ". В смисъл, в какво?"

Мисля, че много читатели ще напълно обърквам, има само една утеха: да се премине на байтове в главата не е необходимо. За да се получи цялостен от байт или, обратно, цифрите допринасят байта, което е достатъчно, за да промените режима на дисплея в програмата. Нещо повече, с лесно програмиране, можете да забравите за тези мъдрости и не забравяйте, само от време на време.

Всичко, от теорията на цикъла и имаше само една купчина от тях, ще говорим утре.

Sailor! Аз някак си не забеляза, че сте развили бутона F10!

Ако искате да бъде капитан на собствения си кораб, дори и без Хиперсистемата, трябва да отстраняване на грешки и отстраняване на грешки.

Вдругиден ще видя отражението си в F10-на клавиатурата си, или ще те капка в най-близкия изоставена планета.

И това беше забавно да се окаже натиск върху бутона F10, шофиране дебъгер следната програма (prax03.com).

то Пълнен себе си, само така можете да научите.

В Hiew'e тя трябва да изглежда така:

Но това не е всичко, сега се преминава към Hex-режим (F4) и да завърши програмата на следващия байт след целия код. Това ще бъде "данни".

В действителност, всички тези пространства (20 ч) програма не се нуждае. Но когато гледате програма в дебъгер, те ще ви помогнат.

Когато съобщенията за грешки могат да се появяват на екрана за. Фигура добре с тях. Ако CV опция Screen Swap не е изключено, че е необходимо да се направи.

В резултат на тази програма, - дисплей линии по диагонал от горния ляв ъгъл до долния десен ъгъл.

Има много нови неща и се надявам, че ще бъде интересно да знам как новият екип и JNE работата на СМР.

Опитайте сами да разберете какво се случва в програмата на практика. Както написах, прекъсване (команда INT), когато пишете програми Win32, ние няма да се използва. Така че не може да се повтарям тях. Достатъчно е да се знае, че това е полезно съчетания, някои от които все още се намира в BIOS (основна входно / изходна система - на базовата входно / изходна система).

Аз съм принуден да ги използват само за програмата беше пълна и може ясно да се научат основните инструкции за сглобяване.

В този пример ще участва вътр 10h за почистване на екрана (AL = 3) и за разположението на текста на курсора (AH = 2). Така INT 21h за показване на текст на екрана. Всички други прекъсвания в уроците ще бъдат не повече. За тях през годините, казва достатъчно.

Ето как програмата следва да се тълкува (само да кажа - около етикета ще ти обясня по-късно).

Преди анализа на тази програма, аз искам да говоря за основните понятия в програмирането - цикли.

<<предыдущая глава      следующая глава>>