![]() |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
![]() |
Dark |
![]()
Сообщение
#1
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 408 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вопрос в следующем, как лучше, и чем(в сравнении):
Занесение в регистр 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;
-------------------- - Где я?
- Во тьме. - В какой тьме? - Во тьме твоего мозга. |
![]() ![]() |
GLuk |
![]()
Сообщение
#2
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 775 Пол: Мужской Репутация: ![]() ![]() ![]() |
Значение типа 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 |
![]() ![]() |
![]() |
Текстовая версия | 25.07.2025 11:15 |