Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ассемблер _ оптимизация кода

Автор: Dark 28.05.2003 6:17

Вопрос в следующем, как лучше, и чем(в сравнении):

Занесение в регистр es адреса буфера видеопамяти:


; 1
push 0a000h
 pop es
 xor di, di

; 2
mov ax, 0a000h
 mov es, ax
 xor di, di

; 3
const vadr: pointer = ptr($a000,0);
; ...
les di, vadr


и как мне в асме присвоить значение функции, т.е.

вместо

function a: byte;
begin
a:=4;
end;


чтото типа

function a:byte;
begin
asm
a:=4;   !!!!!!!!!!!!!!!!!! не проходит.... а как ???
end;
end;

Автор: Dark 28.05.2003 6:19

извините, во втором случае второго вопроса имелось ввиду


чтото типа  

function a:byte; 
begin
asm
mov bl,4
move byte ptr a,bl;   !!!!!!!!!!!!!!!!!! не проходит.... а как  
end;
end;

Автор: GLuk 28.05.2003 20:18

Значение типа Byte - Word, возвращается в AL - AX соответственно. Все это очень легко можно посмотреть в TD. Остальные посмотри сам... ;)

А по поводу эффективности кода - в зависимости от проца (лично я всегда употребляю mov ax,0A000h)

А размер меньше у push ...

Смотри расклад тиков на 286-386-486 процы (на 8086 push 0A000h не покатит)

Цитата
++++++++++++++++++++++++++
+ Command + Size + 286-386-486  +
++++++++++++++++++++++++++
PUSH 0A000h (3 байта):  3-2-1
POP ES (1):  5-7-3                    
----------------------------------------
MOV AX,0A000h (3): 2-2-1
MOV ES,AX (2): 2-2-3

Автор: Shadow 28.05.2003 21:50

:D
-=-=
везде употребляется

mov ax,0a000h
mov es,ax


Push
иногда когда выбора другого нету

Автор: Dark 31.05.2003 20:07

Посмотрел я насчет возврата в функцию, и увидел следующее,
1. При вызове в функцию резервируются в стеке 4+размер значения функции байта.
2. Тогда, в BX находится адрес возврата в стеке
3. а в SP - адрес, куда кладется то самое, искомое значение
т.е.

function a:word;
begin
asm
mov bx,sp
move word ptr ss:[bx],5 {напрямую в ss:sp возвращать нельзя...}
end;
end;


4. если ничего не возвращать, то вернется значение CS.

Спасибо всем!

Автор: how long does propecia take to w 31.10.2021 2:44

Cheapest Levitra Professional

Автор: where can i buy stromectol in th 6.11.2021 8:34

Dosis Kamagra