Re: помогите новичку FASM syntax
Posted: Sat Oct 02, 2010 3:52 am
чёта дело как то не движется,
прочитал кучу всякой литературы, но результата как такового не получил,
в некоторых учебниках даже про синтаксис(начало всех начал) ничего не пишут,
прям так сразу и ляпают давайте напишем драйвер для микрочипа CX-52,
прям с первой страницы, а про описание команд вообще уж нечего говорить,
(команда *** - делает *****, вбиваешь эту команду в код и компилятор пишет ошибку)
посмотрев на это безобразие понимаешь,
что ASM максимально приближен к машинному коду только тем что там постоянно встречаются слова из 3-х букв,
а в хекс(поидее машинном) коде встречаются слова из 2-х букв
Рассмотрим простейшую команду ассемблера:
На машинном языке это будет выглядеть так:
8B – это код операции. Теперь рассмотрим еще один пример:
А на машинном языке ей соответсвует:
Код операции – B9
скажите где достать список команд процессора IA-32(с объяснениями)
и где объясняется логика обработки программного кода(процессором),
в принципе если вспомнить начальную школу, то
любое математическое вычисление происходит благодаря 2-м действиям - это
+ плюс
и
- минус
так же в математике есть такие действия как сравнение т.е.
= равно
< меньше
> больше
любая логика начинается с одного простого действия
? если
любая обработка данных происходит благодаря простому перебору этой информации т.е.
чтобы обработать предположим строку нужно "откусывать" от строки,
предположим по 8 бит до тех пор пока она не закончится,
при этом каждый раз когда откусывается 8 бит над этими 8б производится какие либо действия
в принципе если рассматривать простейшую работу процессора, то всё что ему необходимо это:
память в которой находится программный код
память в которой хранятся данные т.е. переменные
механизм который производит пробор по программному коду
механизм выполняющий команды (среди них все выше упомянутые и команда перехода по коду "jmp")
память кода программы -> пробор по коду -> команды -> память данных
и соответственно в механизме пробора кода есть свой алгоритм по которому он выполняет команды
например "весь программный код делится на сегменты а сегменты делятся на функции(sub)" - это часть алгоритма,
в принципе примерно так, если в чём то ошибаюсь поправьте
и если на всё это дело посмотреть немного другим образом всё действительно просто т.е.
если писать + 10,12; а не add 10,12;
если - 30,12; а не sub 30,12;
если = x,y; а не cmp x,y;
..................................
т.е. заменить непонятные 3-х значные слова на понятные символы (хотябы),
и становится понятно, почему действие (y=x*10/12) не может быть записано в одну строчку
и многие другие вещи становятся как то значительно проще
прочитал кучу всякой литературы, но результата как такового не получил,
в некоторых учебниках даже про синтаксис(начало всех начал) ничего не пишут,
прям так сразу и ляпают давайте напишем драйвер для микрочипа CX-52,
прям с первой страницы, а про описание команд вообще уж нечего говорить,
(команда *** - делает *****, вбиваешь эту команду в код и компилятор пишет ошибку)
посмотрев на это безобразие понимаешь,
что ASM максимально приближен к машинному коду только тем что там постоянно встречаются слова из 3-х букв,
а в хекс(поидее машинном) коде встречаются слова из 2-х букв
Рассмотрим простейшую команду ассемблера:
Code: Select all
mov ebx, eax
Code: Select all
8B D8
Code: Select all
mov ecx, 128
Code: Select all
B9 00000080
скажите где достать список команд процессора IA-32(с объяснениями)
и где объясняется логика обработки программного кода(процессором),
в принципе если вспомнить начальную школу, то
любое математическое вычисление происходит благодаря 2-м действиям - это
+ плюс
и
- минус
так же в математике есть такие действия как сравнение т.е.
= равно
< меньше
> больше
любая логика начинается с одного простого действия
? если
любая обработка данных происходит благодаря простому перебору этой информации т.е.
чтобы обработать предположим строку нужно "откусывать" от строки,
предположим по 8 бит до тех пор пока она не закончится,
при этом каждый раз когда откусывается 8 бит над этими 8б производится какие либо действия
в принципе если рассматривать простейшую работу процессора, то всё что ему необходимо это:
память в которой находится программный код
память в которой хранятся данные т.е. переменные
механизм который производит пробор по программному коду
механизм выполняющий команды (среди них все выше упомянутые и команда перехода по коду "jmp")
память кода программы -> пробор по коду -> команды -> память данных
и соответственно в механизме пробора кода есть свой алгоритм по которому он выполняет команды
например "весь программный код делится на сегменты а сегменты делятся на функции(sub)" - это часть алгоритма,
в принципе примерно так, если в чём то ошибаюсь поправьте
и если на всё это дело посмотреть немного другим образом всё действительно просто т.е.
если писать + 10,12; а не add 10,12;
если - 30,12; а не sub 30,12;
если = x,y; а не cmp x,y;
..................................
т.е. заменить непонятные 3-х значные слова на понятные символы (хотябы),
и становится понятно, почему действие (y=x*10/12) не может быть записано в одну строчку
и многие другие вещи становятся как то значительно проще