![]() |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
![]() ![]() |
![]() |
IVR |
![]() ![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 8 Репутация: ![]() ![]() ![]() |
Извините. что я так вломился в ваш форум!
У меня есть проблемы с вызовом процедур с параметрами. Вот в чем дело: ;Допустим такая процедура.
PROC LaLaLa f:byte ;f-параметр.
ret
ENDP LaLaLa
;дальше программа
; ....
mov [f],2
call LaLaLa
; а надо мне вдроде этого:
call LaLaLa,2
По сути дела первый вызов процедуры не имеет никаких параметров. Мы все "параметры" задали выше. А втророй не компилируется. Так как же сделать процедуру чтобы вызов был как второй пример? |
Dark |
![]()
Сообщение
#2
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 408 Пол: Мужской Репутация: ![]() ![]() ![]() |
Аргументы можно передавать 3 путями :
как ты и предложил через переменную через регистр - то же самое фактически ![]() и через стек В паскале, да и на сколько я знаю в других языках все релизовано через стек т.е. push 1_param
push 2_param
...
push n-1_param
push n_param
call LaLaLa
а в процедуре PROC LaLaLa
;------------------------начало функции----------------------
push bp // сохраняем BP
mov bp,sp // записываем верхушку стека
;-----------------------------------------------------------------
mov ax,[bp+4] // n_param
mov ax,[bp+6] // n-1_param
mov ax,[bp+8] // n-2_param
mov ax,[bp+10] // n-3_param
;------------------------конец функции-----------------------
mov sp,bp // восстанавливаем sp
pop bp // и значение старого bp
;-----------------------------------------------------------------
ret
ENDP LaLaLa
если что не ясно - спрашивай. ![]() -------------------- - Где я?
- Во тьме. - В какой тьме? - Во тьме твоего мозга. |
Dark |
![]()
Сообщение
#3
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 408 Пол: Мужской Репутация: ![]() ![]() ![]() |
А чтобы был как второй пример - это уже макроассемблер :P
-------------------- - Где я?
- Во тьме. - В какой тьме? - Во тьме твоего мозга. |
IVR |
![]()
Сообщение
#4
|
Группа: Пользователи Сообщений: 8 Репутация: ![]() ![]() ![]() |
У тебя нет примеров этих самых процедур. С макро-параметрами, что бы я научился. Очень интересно! :o
|
IVR |
![]()
Сообщение
#5
|
Группа: Пользователи Сообщений: 8 Репутация: ![]() ![]() ![]() |
В TASM можно инициализировать графический режим?
P.S. Недавно сделал процедуру для перевода компютера в режим пониженного энерго потребления под DOS. Кому надо, просите. |
Dark |
![]()
Сообщение
#6
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 408 Пол: Мужской Репутация: ![]() ![]() ![]() |
можно
![]() mov ax,13h int 10h - это режим 320*200 выход из режима mov ax,3h int 10h глянь еше на мою обучалку :D Тебе нужен пример со стеком? или макросом - макрос он тока в MASM по моему так же есть про VESA - походи по форуму "ассемблер" там поищи =) -------------------- - Где я?
- Во тьме. - В какой тьме? - Во тьме твоего мозга. |
IVR |
![]()
Сообщение
#7
|
Группа: Пользователи Сообщений: 8 Репутация: ![]() ![]() ![]() |
VGA_BASE equ 03c0h ; or 2c0h for secondary VGA
VGA_TSIDX equ VGA_BASE+04h
VGA_TSDATA equ VGA_BASE+05h
TS_REG equ 1
TS_GREEN equ 20h
CRTC_BASE equ 03d4h ; CGA mode
CRTC_REG equ 17h
CRTC_GREEN equ 80h
PROC EnergyLow
mov dx, VGA_TSIDX
mov al, TS_REG
out dx, al
inc dx
in al, dx
mov bl, al
dec dx
mov al, TS_REG
out dx, al
inc dx
mov al, bl
or al, TS_GREEN
out dx, al
mov dx, CRTC_BASE
mov al, CRTC_REG
out dx, al
inc dx
in al, dx
and al, NOT CRTC_GREEN
out dx, al
mov ah, 0
int 16h
mov dx, VGA_TSIDX
mov al, TS_REG
out dx, al
inc dx
in al, dx
mov bl, al
dec dx
mov al, TS_REG
out dx, al
inc dx
mov al, bl
and al, NOT TS_GREEN
out dx, al
mov dx, CRTC_BASE
mov al, CRTC_REG
out dx, al
inc dx
in al, dx
or al, CRTC_GREEN
out dx, al
ret
ENDP EnergyLow
Сообщение отредактировано: volvo - 6.11.2009 19:58 |
IVR |
![]()
Сообщение
#8
|
Группа: Пользователи Сообщений: 8 Репутация: ![]() ![]() ![]() |
Как создать библеотеку импорта?
|
![]() ![]() |
![]() |
Текстовая версия | 29.07.2025 14:27 |