Nasm

10 отговора 325 прегледа
#1

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 са достатъчни на всекий за всичко" - Бил Гейтс
Отговор
в отговор на mialy #2

Re: Nasm

А какво точно означава първото? На мен този асемблерен код ми изглежда неграмотно написан, но като знам че NASM е писан от ентусиасти, нищо чудно и да работи. Все пак:

1) RFM.
2) Направи го по-най простия начин, като тестваш с различни данни за да си сигурен какво става. Избягвай Debuggers при тестването, ползвай собствен (проверен!) тестов код.
3) Ако пак не работи, RFM.
4) Ако не успяваш да откриеш грешка, значи има бъг в NASM. Няма да е за пръв път, има и други. Пишеш Bug Report и го пращаш на разработчиците, постваш го и тук.

За org пак RFM. Не го помня, но мисля че с

ORG Num

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

Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
Отговор
в отговор на Duncan Griffin #3

Re: Nasm

Не бъркай ORG с DB.
ORG не "оставя" байтове. И не променя размера на кода. Единственото, което променя, е вътрешна за асемблера променлива, указваща текущия адрес на който се извършва асемблирането.
Промяната, която mialy наблюдава, не е в самите инструкции, а в операндите им, указващи адреси в паметта, тъй като те се променят щом използваш ORG.

Отговор
в отговор на Pesho® #4

Re: Nasm

Сигурно си прав, ORG така и не го разбрах какво ТОЧНО означава. Помня само, че .COM файлове на DOS почваха с ORG 100.

Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
Отговор
в отговор на Duncan Griffin #5

Re: Nasm

Там това беше отместването на първата инструкция като почнеш да пишеш. Самата ОС там я търси и съответно от там трябва да почнеш. Сигурно и тук е за това.


System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_
Отговор
в отговор на Duncan Griffin #6

Re: Nasm

Duncan Griffin, мога да ти кажа че "първото" е правилно написано (можеш да го откриеш в кн. Програмиране на Асемблер от Волфганг Линк на стр. 184, пък и аз съм го пробвал на Macro Assembler-a на Macro$oft, опа Micro$oft). До колкото знам се нарича индексно адресиране.

Какво подяволите е RFM?

"640 kB са достатъчни на всекий за всичко" - Бил Гейтс

Редактирано от mialy на

Отговор
в отговор на Colombino #7

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!!!!!

Отговор
в отговор на mialy #8

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)?

Редактирано от mialy на

Отговор
в отговор на mialy #9

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...

Отговор
в отговор на mialy #10

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 не съм сигурен къде, но все някъде трябва да ги има.

Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
Отговор
в отговор на CALL-151 #11

Re: Nasm

ORG не задажа никакъв указател и не заделя никакви байтове ORG идва от Origin тожа всъщност е директива към компилатора която му казва да построява (build-va) по-нататък все едно следващата инструкция (label) започва от зададения origin.Тва е реално при промяна на Origin-a се променят само операндите на JUMP-овете или въобще кадето си ползвал label след Org-a ,а също така и ако изрично си задавал директиви за спазване на alignment може да бъде вкаран/изкаран някой друг NOP

Отговор