думаю,что Вы очень хорошо знакомы с ядром Линукс. поэтому Вам будет очень просто объяснить мне то, что я сам понять не могу.
section .data
var db 'hi LOR'
section .text
global _start
_start:
//в регистр eax я помещаю номер системного вызова. системный возов,, это обращение пользовательской программы к ядру. потому что сама она не недалена такими полномочиями.
имеет системные вызовы как 1-закрытие файла, 3 -чтение , 5-открытие и тд
mov ebx, 1
в регистр ebx для этой программы я помещаю дискрептор файла.
каждый процесс имеет свой уникальный номер, который называется дискрептор. ребята это из головы. я могу нагородить тут. поэтому пожалуйста поправте и объясните. только правда не смейтесь. отнеситесь серьезно даже к такой глупости, если находите..
и так каждый процесс имеет свой уникальный номер, то есть дискрептор. в Линуксе все файл, поэтому зовется дискрептор файла. в оболочке по умолчание открыты три файла : стандартный ввод(0) , вывод(1) и поток ошибок(2).
так как я хочу вывести на экран hi LOR то буду использовать дискрептор 1
mov ebx, 1
mov ecx, var-из этого регистра будет прочитано то что лежало в var
mov edx, 10 -длинна слова в байтах. ну я с запасом взял
int 0x80 -прерывание
mov eax, 1 -закрытие...
int 0x80
прерывание это команда ядру исполнить то что было написанно до него. вернее выше его.
но как это прочитать?
то есть системный вызов обратится к ядру, для того чтобы оно взяло из регистра ecx то что там лежит, так как в регистре ebx у нас 1то есть это дискрептор на вывод. значит надо вывести то что лижет в ecx. если бы в ebx лежало 0 то системный вызов ,который хранится в eax, обратился к ядру для того чтобы произошла запись в edx, так как 0 это системный вызов ввода. но о чем говорят тогда 4 или 3 которые лежат в eax? если я говорю mov eax , 4 mov ebx 1 то это значит системный возов на запись и дискрептор на вывод. не логично. записать что? ведь в eax хранится в данном случае номер системного вызова 4 на запись. значит моя программа обращается к ядру чтобы оно сделало запись. а дискрептор файла говорит куда? то есть дискрептор говорит на вывод, а это экран. так?