![]() |
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;
-------------------- - Где я?
- Во тьме. - В какой тьме? - Во тьме твоего мозга. |
![]() ![]() |
Dark |
![]()
Сообщение
#2
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 408 Пол: Мужской Репутация: ![]() ![]() ![]() |
Посмотрел я насчет возврата в функцию, и увидел следующее,
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. Спасибо всем! -------------------- - Где я?
- Во тьме. - В какой тьме? - Во тьме твоего мозга. |
![]() ![]() |
![]() |
Текстовая версия | 24.07.2025 14:15 |