Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.36.141] |
|
Сообщ.
#1
,
|
|
|
вопрос ткаой
есть регистры в которые можно отправлять во вопрос а что вних отправлять я имею ввиду что и вкокой регистр есть ли какое ибудь разделение и 2) когда пишут проги под дос то объявляют func какието в 16-тиричном виде где можно узнать что за func за что отвеяает |
Сообщ.
#2
,
|
|
|
Это ячейки памяти в самом проце для хранения переменных размерами в слово (2байта).
Доступ к ним гораздо быстрее, чем к ОЗУ. Можно работать как с целым регистром, так и с младшим и старшим его байтами(справедливо не для всех регистров) Бывают: 1.общего назначения (AX,BX,CX,DX и др.) 2.сегментные (CS,DS,SS,ES) 3.Указатель команд IP ( В нем адрес текущей исполняемой команды. изменение его ведет к переходу, т.е. GOTO) 4.Регистр флагов Данные в них не отправляют, а записывают. Например так MOV AX,BX ;-Записать в AX содержимое BX А ты вопрос носом набивал ? |
Сообщ.
#3
,
|
|
|
Добавлю ещё, что младший байт регистра AX - это AL, старший - AH. Для BX, CX и DX - это BL/BH, CL/CH и DL/DH. Другие регистры не имеют однобайтовых аналогов, так сказать. Регистр CX обычно используется как счётчик, а AX - как основной при использовании некоторых инструкций (команд то бишь).
Есть ещё регистры SI и DI, они используются для чтения/записи/копирования/сравнения участков памяти. Регистр BP обычно используют внутри процедур для доступа к параметрам и локальным переменным (в подробности вдаваться не буду). Есть ещё регистр SP, который указывает на вершину стека (т.е. на посленее записанное в стек значение). Регистр SS определяет сегмент стека (т.е. вершина стека - SS:SP). Регистр DS обычно используется для доступа к памяти, собственно, как и регистр ES. Но при доступе к памяти, если адрес НЕ содержит [BP], то по умолчанию используется сегмент DS, иначе (если содержит) - SS. Регистр CS указывает на сегмент выполняемого кода, IP - на текущую команду. Но! Если ты напишешь в исходнике IP (mov ax,ip ; push ip и т.д), то ассемблер тебя не поймёт. Регистр IP читается/изменяется только при помощи JMP,Jcc,LOOP,CALL,RET,POP(послеCALL) и т.п. Регистр флагов показывает результат выполнения предыдущей команды (правда, не все команды изменяют его значение). Для доступа к нему используются PUSHF/POPF,SAHF/LAHF. В принципе (хотя даже и без принципа , любой регистр можно использовать там, где захочется, кроме регистров SS,SP,CS,IP, их лучше просто так не трогать. Но если написано в документации, что LOOP использует CX, значит LOOP будет использовать именно CX Кстати, в процессорах 80386 и старше регистры (кроме сегментных!) имеют размер не 2, а 4 байта и называются EAX,EBX,ESI и т.д. Для доступа к младшему слову используются AX,BX,SI..... Т.е. EAX состоит из AX и старшей части (которая названия не имеет). А AX, в свою очередь, из AL и AH. Не хочу тебя пугать, но сопроцессор тоже имеет свои регистры( ST(n) ). Есть также и управляющие регситры CRx, DRx, TRx. Есть регистры MMX )) Вот такие вот ватрухи, панимаишь..... )) |
Сообщ.
#4
,
|
|
|
Чуть не забыл.... На счёт func...
Ты, наверное, имеешь в виду конструкции типа... mov ax,201h mov cx,.... mov dx,.... int 13h Да? (кстати, этот пример лучше не пробовать, опасно для жизни . По этому делу есть множество документаций, таких как TechHelp (можно, кстати, на FileSearch.ru найти), Ralf Brown's Interrupt List: ftp://ftp.cs.cmu.edu/afs/cs.cmu.edu/user/ralf/pub/interrupt-list/ Ну и напоследок..... УДАЧИ !!!!!!!!! |