Nasm
10 отговора
325 прегледа
Nasm
hi!
imam vupros(i) za netwide assembler:
1) za6to neba4ka slednoto:
mov register-x, var[si]
2) kakwo prawi org i za6to pri promiana se promenia nqkoi instrukcii.
... To be continue
"640 kB са достатъчни на всекий за всичко" - Бил Гейтс
imam vupros(i) za netwide assembler:
1) za6to neba4ka slednoto:
mov register-x, var[si]
2) kakwo prawi org i za6to pri promiana se promenia nqkoi instrukcii.
... To be continue
"640 kB са достатъчни на всекий за всичко" - Бил Гейтс
Re: Nasm
А какво точно означава първото? На мен този асемблерен код ми изглежда неграмотно написан, но като знам че NASM е писан от ентусиасти, нищо чудно и да работи. Все пак:
1) RFM.
2) Направи го по-най простия начин, като тестваш с различни данни за да си сигурен какво става. Избягвай Debuggers при тестването, ползвай собствен (проверен!) тестов код.
3) Ако пак не работи, RFM.
4) Ако не успяваш да откриеш грешка, значи има бъг в NASM. Няма да е за пръв път, има и други. Пишеш Bug Report и го пращаш на разработчиците, постваш го и тук.
За org пак RFM. Не го помня, но мисля че с
ORG Num
си оставяш Num на брой байтове преди кода, които можеш да ползваш за оперативна памет.
А за променянето на инструкции мисля че бъркаш, ама де да знам... може и да е недокументирана функция.
Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
1) RFM.
2) Направи го по-най простия начин, като тестваш с различни данни за да си сигурен какво става. Избягвай Debuggers при тестването, ползвай собствен (проверен!) тестов код.
3) Ако пак не работи, RFM.
4) Ако не успяваш да откриеш грешка, значи има бъг в NASM. Няма да е за пръв път, има и други. Пишеш Bug Report и го пращаш на разработчиците, постваш го и тук.
За org пак RFM. Не го помня, но мисля че с
ORG Num
си оставяш Num на брой байтове преди кода, които можеш да ползваш за оперативна памет.
А за променянето на инструкции мисля че бъркаш, ама де да знам... може и да е недокументирана функция.
Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
Re: Nasm
Не бъркай ORG с DB.
ORG не "оставя" байтове. И не променя размера на кода. Единственото, което променя, е вътрешна за асемблера променлива, указваща текущия адрес на който се извършва асемблирането.
Промяната, която mialy наблюдава, не е в самите инструкции, а в операндите им, указващи адреси в паметта, тъй като те се променят щом използваш ORG.
ORG не "оставя" байтове. И не променя размера на кода. Единственото, което променя, е вътрешна за асемблера променлива, указваща текущия адрес на който се извършва асемблирането.
Промяната, която mialy наблюдава, не е в самите инструкции, а в операндите им, указващи адреси в паметта, тъй като те се променят щом използваш ORG.
Re: Nasm
Сигурно си прав, ORG така и не го разбрах какво ТОЧНО означава. Помня само, че .COM файлове на DOS почваха с ORG 100.
Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
Re: Nasm
Там това беше отместването на първата инструкция като почнеш да пишеш. Самата ОС там я търси и съответно от там трябва да почнеш. Сигурно и тук е за това.
System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_
System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_
Re: Nasm
Duncan Griffin, мога да ти кажа че "първото" е правилно написано (можеш да го откриеш в кн. Програмиране на Асемблер от Волфганг Линк на стр. 184, пък и аз съм го пробвал на Macro Assembler-a на Macro$oft, опа Micro$oft). До колкото знам се нарича индексно адресиране.
Какво подяволите е RFM?
"640 kB са достатъчни на всекий за всичко" - Бил Гейтс
Какво подяволите е RFM?
"640 kB са достатъчни на всекий за всичко" - Бил Гейтс
Редактирано от mialy на
Re: Nasm
e.... mi ORG ti zadava otmestvane v nekakav segment!
primerno isklas da napises nesto koeto da zapocva ot dares edi kav si... lagas
ORG edi kvo si
inace neznam kak se darji tozi assembler!
spomena koito imam ot nego e ce direktivite sa mu malko tazlicni ot topicnite INTEL ASM/MASM/TASM
no mai e edinstvennoto sredstvo za "Normalno" pisa ne na assembler za linux!
za razlika ot GNUASM koito si e pozvolil da promenia sintaksisa na instrukciite kakto si iska!!!!!
primerno isklas da napises nesto koeto da zapocva ot dares edi kav si... lagas
ORG edi kvo si
inace neznam kak se darji tozi assembler!
spomena koito imam ot nego e ce direktivite sa mu malko tazlicni ot topicnite INTEL ASM/MASM/TASM
no mai e edinstvennoto sredstvo za "Normalno" pisa ne na assembler za linux!
za razlika ot GNUASM koito si e pozvolil da promenia sintaksisa na instrukciite kakto si iska!!!!!
Re: Nasm
... To Be Continue ...
Та ето го и продължението ...
Как се работи с различни сегменти в Net Assembler-a (NASM). Моля Ви не ми пишете нещо от рода: "В Насм, работата със сегменти е по рачлично от МАСМ или ТАСМ, за да знаеш, виж документацията му...". Това вече съм го чувал. Искам да видя малък пример.
Случайно адресирането не се ли получава от Сегмен:Отместване, та ако Сегмент:= 0000h , не се ли получава нов 'модул' в модела Large или Hugе, ако Сегмент:= 0001h (като естествено отместването е от 0h..FFFFh (1 .. 65536 / 1024 = 64KB - един сегмент)????
А Как се пуска защитния режим на Intel x86 CPU's?? Т.е. Как от реален режим (напр. от ДОС) да се зареди защитен (или от BIOS-a)?
Та ето го и продължението ...
Как се работи с различни сегменти в Net Assembler-a (NASM). Моля Ви не ми пишете нещо от рода: "В Насм, работата със сегменти е по рачлично от МАСМ или ТАСМ, за да знаеш, виж документацията му...". Това вече съм го чувал. Искам да видя малък пример.
Случайно адресирането не се ли получава от Сегмен:Отместване, та ако Сегмент:= 0000h , не се ли получава нов 'модул' в модела Large или Hugе, ако Сегмент:= 0001h (като естествено отместването е от 0h..FFFFh (1 .. 65536 / 1024 = 64KB - един сегмент)????
А Как се пуска защитния режим на Intel x86 CPU's?? Т.е. Как от реален режим (напр. от ДОС) да се зареди защитен (или от BIOS-a)?
Редактирано от mialy на
Re: Nasm
az licno nikoga ne sma polzval tozi nacin na zapisvane an instrukciata
az poslvam ot tozi tip
MOV AX,[BX+AAAAA]
NASM neznam kakvo misli po vaprosa...
az poslvam ot tozi tip
MOV AX,[BX+AAAAA]
NASM neznam kakvo misli po vaprosa...
Re: Nasm
Мен ме притесни var[si], щото нищо не ми говори.
За сегментите и изобщо всички останали неща на NASM хвани прочети документацията. Не зная от кога се занимаваш с програмиране, но явно още не си разбрал, че повече от 80% от работата на програмиста се състои в четене, и това четене не може да се замени просто с питане.
Затова и ти казах по-рано, че първия отговор на въпроса ти е RFM. Специално за NASM документацията идва и в txt и в html за да четеш както ти е удобно.
===============================================
File: nasm.info, Node: Top, Next: Chapter 1, Prev: (dir), Up: (dir)
This file documents NASM, the Netwide Assembler: an assembler
targetting the Intel x86 series of processors, with portable source.
* Menu:
* Chapter 1:: Introduction
* Chapter 2:: Running NASM
* Chapter 3:: The NASM Language
* Chapter 4:: The NASM Preprocessor
* Chapter 5:: Assembler Directives
* Chapter 6:: Output Formats
* Chapter 7:: Writing 16-bit Code (DOS, Windows 3/3.1)
* Chapter 8:: Writing 32-bit Code (Unix, Win32, DJGPP)
* Chapter 9:: Mixing 16 and 32 Bit Code
* Chapter 10:: Troubleshooting
* Appendix A:: Intel x86 Instruction Reference
* Index::
===============================================
Големината на документацията в txt е половин мегабайт, мислиш ли че ще успееш да се справиш с NASM без да я прегледаш?
За защитения режим помня, че се включва като се сетне един бит в един от системните регистри на процесора, мисля че беше CR3. Това едва ли ще ти свърши някаква работа обаче, щото преди това трябва да подготвиш сума работи които вече не помня. Ако не ги подготвиш ще рестартираш машината с вкюлчването на PM.
За РМ и изобщо за архитектурите на процесорите източниците на информация са developer SDK-тата на Intel и AMD. Преди ги пращаха на дискове за тяхна сметка, ама сега вече не го правят, вероятно заради многобройните поръчки от източна европа...
На Intel има manuals за всички по-нови процесори и някой от по-старите в техния literacy center на [линк]. За AMD не съм сигурен къде, но все някъде трябва да ги има.
Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
За сегментите и изобщо всички останали неща на NASM хвани прочети документацията. Не зная от кога се занимаваш с програмиране, но явно още не си разбрал, че повече от 80% от работата на програмиста се състои в четене, и това четене не може да се замени просто с питане.
Затова и ти казах по-рано, че първия отговор на въпроса ти е RFM. Специално за NASM документацията идва и в txt и в html за да четеш както ти е удобно.
===============================================
File: nasm.info, Node: Top, Next: Chapter 1, Prev: (dir), Up: (dir)
This file documents NASM, the Netwide Assembler: an assembler
targetting the Intel x86 series of processors, with portable source.
* Menu:
* Chapter 1:: Introduction
* Chapter 2:: Running NASM
* Chapter 3:: The NASM Language
* Chapter 4:: The NASM Preprocessor
* Chapter 5:: Assembler Directives
* Chapter 6:: Output Formats
* Chapter 7:: Writing 16-bit Code (DOS, Windows 3/3.1)
* Chapter 8:: Writing 32-bit Code (Unix, Win32, DJGPP)
* Chapter 9:: Mixing 16 and 32 Bit Code
* Chapter 10:: Troubleshooting
* Appendix A:: Intel x86 Instruction Reference
* Index::
===============================================
Големината на документацията в txt е половин мегабайт, мислиш ли че ще успееш да се справиш с NASM без да я прегледаш?
За защитения режим помня, че се включва като се сетне един бит в един от системните регистри на процесора, мисля че беше CR3. Това едва ли ще ти свърши някаква работа обаче, щото преди това трябва да подготвиш сума работи които вече не помня. Ако не ги подготвиш ще рестартираш машината с вкюлчването на PM.
За РМ и изобщо за архитектурите на процесорите източниците на информация са developer SDK-тата на Intel и AMD. Преди ги пращаха на дискове за тяхна сметка, ама сега вече не го правят, вероятно заради многобройните поръчки от източна европа...
На Intel има manuals за всички по-нови процесори и някой от по-старите в техния literacy center на [линк]. За AMD не съм сигурен къде, но все някъде трябва да ги има.
Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
Re: Nasm
ORG не задажа никакъв указател и не заделя никакви байтове ORG идва от Origin тожа всъщност е директива към компилатора която му казва да построява (build-va) по-нататък все едно следващата инструкция (label) започва от зададения origin.Тва е реално при промяна на Origin-a се променят само операндите на JUMP-овете или въобще кадето си ползвал label след Org-a ,а също така и ако изрично си задавал директиви за спазване на alignment може да бъде вкаран/изкаран някой друг NOP 