Помощь - Поиск - Пользователи - Календарь
Полная версия: 32 двух разрядные регистры????
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
Shadow
:D
------
Ням а скажите кто нибудь
можно в Паскале использовать 32 разрядные регистры когда пишешь чтонибудь на ASM
------
например типа

mov eax,0a000h
mov ecx,120

и.т.д
GLuk
Если использовать мнемонику асма, то нет. Напрямую в кодах - можно.

Использую новые возможности... :smile.gif
mj
Так в обычном режиме выполнения процессор не может использовать 32 битные регистры smile.gif
А в защищёном режиме может быть и Pascal будет переваривать 32 битные регистры...
Shadow
:D
----
например если
дать команду
.386 то можно давать команды типа
mov ebx,eax
причем не переводя в защищенный режим
----
ozzy
В ТМТ точно можно. А в БП? Не уверен
Shadow
:D :D
----
я пошол другим путем
----
создал на ASM OBJ с етим 32 регистром
---
и присобачил его в Паскаль
так что есть у меня тепрь точка
на 16 млн цветов
----
AlaRic
Молодец  ;)
mj
Цитата
:D
----
например если
дать команду
.386 то можно давать команды типа
mov ebx,eax
причем не переводя в защищенный режим
----

Я всегда думал что .386 это директива, при которой asm автоматически переводит процессор в защищённый режим когда это требуется...
Shadow
а можно
в самом начале перед
.MODEL SMALL
.486p
что значит 486 пень
mj
Цитата
а можно
в самом начале перед
.MODEL SMALL
.486p
что значит 486 пень

.486 это деректива разрешающая команды 486 процессора, в отличии от .386 изменений в программу не вносит...
Shadow
да согласен
----
и так до конца
---
птом у меня где-то была инфа
по MMX технологии
mj
MMX от простых отличается вроде 64 битным сопроцессором...
Shadow
:D
---
угу
плюс команды
-=-=-=-
вроде
mj
Ну конечно новые команды, надо же как то с этим 64 битным сопроцессором работать...
Shadow
mov ah,89h
mov bl,20h
mov bh,28h
mov ax,////
mov ds,ax
mov si,0
lea cx,
int 15h
перевод в защищенный режим
mj
Цитата
1: mov ah,89h
2: mov bl,20h
3: mov bh,28h
4: mov ax,////
5: mov ds,ax
6: mov si,0
7: lea cx,
8: int 15h
перевод в защищенный режим

Тут явно есть ошибка...
Даже не ошибка, а бессмысленная команда...
Shadow
:D
--
ето один из способов перевода
---
вообще существует один из регистров установка бита которого и отвечает за
реальный или защищенный режим
---
ето не моя инфа
Юров учебник для вузов
и для того чобы перевести
этих команд конечно не достаточно
---
компьютер нужно подоготовить
там целая страница
---
просто то что дал ето утрированная инфа
---
GLuk
Цитата
Тут явно есть ошибка...
Даже не ошибка, а бессмысленная команда...


По-моему должно быть так:
1: mov ah,89h - перевести в защищенный режим
2: mov bl,20h  - смещение к вектору 0-го прерывания
3: mov bh,28h - смещение к вектору 8-го прерывания
;4: mov ax,//// - хрень???
;5: mov ds,ax
;6: mov si,0 - DS:SI - ???
;7: lea cx, - точно хрень... вообще в CX должно быть смещение куда происходит джамп после перехода в ЗР.
::::: NEW ::::::
7.5:lea si,GDTTable
7.6:push ds/pop es - ES:SI - таблица глобальных дескрипторов, как раз таки сформированная юзером...
7.7:mov cx,OFFSET ???
8: int 15h
перевод в защищенный режим
Shadow
ети хрени не мои :-[
GLuk
А я и не говорю этого (насчет хреней). Между прочим не знал, что поддержка установки PM есть в BIOS... smile.gif
Shadow
:D
-------
вот Пирогов и Юров в етих книгах все ето описывается
-------
кстати посмотри в Экслибрисе
блин язык сломаешь
;D
BlackShadow
2 MJ:
 При всём уважении - ты несёшь бред. Размерность регистра никак не зависит от режима работы процессора.

2 всем:
 BP не позволяет использовать что-либо выходящее за рамки 286-ого, используя встроенный ассемблер. TMT и FPC делают это прекрасно.
Dark
Между прочим, 32 разряда моно использовать и в обыкновенном TP без всякого PM.
  Для этого перед командой ставится машинный код 66h.
Я покажу это на примере процедуры очистки экрана в реж. 320*200:procedure clscr(col:byte);
begin
 asm
   push 0a000h
   pop es
   xor di,di
   mov cx,16000           {64000/4}
   db 66;xor ax,ax        {xor eax,eax}
   mov al,col                  {al=col}
   mov ah,al                   {ah=col}  {eax=0;0;col;col}
   mov bx,ax                   {sohranyaiu ax}
   db 66h;shl ax,16         {shl eax,eax}{eax=col;col;0;0}
   mov ax,bx                    {eax=col;col;col;col}
@l1:
    db 66h;stosw              {stosd}
loop @l1
 end;
end;
GLuk
Цитата
2 всем:
 BP не позволяет использовать что-либо выходящее за рамки 286-ого, используя встроенный ассемблер. TMT и FPC делают это прекрасно.


Ответ уже был дан (причем в этом же топике :P)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.