Вопрос № 35003: Есть какой-либо способ проверить содержимое параметров командной строки в МАСМ32,
типа ds:80h не используя функцию GetCommandLine?
И второе 417h всё ещё в силе? или и для этого тоже существует соответствующая
функция?
..Вопрос № 35004: Такой вот вопрос:
имеется резидентный обработчик и надо проверить нажата-ли комбинация Alt-X (код - 2d00h)
Проверять нажата-ли Shift,Caps Lock,... умею, а вот с остальным никак???
..Вопрос № 35026: И всё-таки не моглибы вы мне написать простенький обработчик на нажатие клавиш Alt-X(2d00h)(Если да, то пишет "Y",если нет,то - "N")?...Вопрос № 35032: Добрый день. Вот пишу тпкой код.
mov ax,0x0ffff
mov es,ax
mov si, table
mov di, 0x10
mov cx, 0x18 ;; Размер ядра в двойных словах
rep movsb
table:
dw....
Товесть я хочу штоб эти данные были ...
Вопрос № 35.003
Есть какой-либо способ проверить содержимое параметров командной строки в МАСМ32,
типа ds:80h не используя функцию GetCommandLine?
И второе 417h всё ещё в силе? или и для этого тоже существует соответствующая
функция?
Отвечает: Евгений Иванов
Здравствуйте, Яковлев Сергей Павлович!
Программирование для win32 совершенно другой принцип использует. Там нет ничего (или желательно от этого уйти) от ДОСА. Есть подпрограммы и обычное линейное адресное простарнство. Выделяешь память (или лучше использовать пространство локальных переменных в подпрограмме) и вызываешь функцию, которая заполняет тебе её параметрами командной строки. Всё очень просто.
Для работы с клавиатурой используются соответствующие подпрограммы и ловушки.
Приятного и увлекательного изучения WIN32!
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 08.02.2006, 12:48
Вопрос № 35.004
Такой вот вопрос:
имеется резидентный обработчик и надо проверить нажата-ли комбинация Alt-X (код - 2d00h)
Проверять нажата-ли Shift,Caps Lock,... умею, а вот с остальным никак???
Отправлен: 08.02.2006, 12:27
Вопрос задал: Ig0rSV (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Евгений Иванов
Здравствуйте, Ig0rSV!
Фиксируешь нажатие X, и проверяешь флажки нажатых управляющих клавиш.
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 08.02.2006, 12:51
Вопрос № 35.026
И всё-таки не моглибы вы мне написать простенький обработчик на нажатие клавиш Alt-X(2d00h)(Если да, то пишет "Y",если нет,то - "N")?
Отправлен: 08.02.2006, 15:50
Вопрос задал: Ig0rSV (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Евгений Иванов
Здравствуйте, Ig0rSV!
вот небольшой пример. универсальный.
очень простой.
int_16h_entry:
pushf
or ah,ah
jz go_16
cmp ah,10h
jz go_16
exit_16:
popf
db 234
old_16_int dd 0
loc_9:
; mov wptr [ds:out_sch1],0
jmp work ;#
work:
push ds 40h
pop ds
test bptr [ds:17h],4
pop ds
jz ret_16
or al,al
jnz ret_16
loc_9_9:
push ax
mov al,1
call goto_proc
pop ax
jc ret_16
mov bptr [ds:work-1],256-(ret_16-work)
push es
pusha
mov al,0
call goto_proc
ret_conv_string:
loc_12:
popa
xor ax,ax
mov bptr [ds:work-1],al
pop es
ret_16:
pop ds
popf
iret
tabl_goto0 db 1Eh ;A
dw ascii_table
db 23h ;H
dw converter
db 20h ;D
dw convert_dec
db 21h ;F
dw convert_hex
db 2Eh ;C
dw convert_char_d
db 2Fh ;V
dw convert_char_h
db 12h ;E
dw convert_d_char
db 13h ;R
dw convert_h_char
db 0
;███ GOTO_PROC ██████████████████████████████████████████████████████████████
;IN:AL=0-вызов подпрограммы,=1-проверка правильности.
;AH-скан-код.
proc goto_proc ;=2ac
push si ax
mov si,ofs tabl_goto0
c102a:
lods bptr [cs:si]
or al,al
jz c302a
cmp al,ah
jz c202a
inc si
inc si
jmp c102a
c202a:
lodsw
mov si,ax
pop ax
cmp al,1
jc c252a
pop si
ret
c252a:
push ax
call si
c302a:
pop ax si
stc
ret
endp
proc int_16
pushf
call [cs:old_16_int]
ret
endp
Прикреплённый файл: Загрузить >> Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа. --------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 08.02.2006, 16:12
Вопрос № 35.032
Добрый день. Вот пишу тпкой код.
mov ax,0x0ffff
mov es,ax
mov si, table
mov di, 0x10
mov cx, 0x18 ;; Размер ядра в двойных словах
rep movsb
table:
dw....
Товесть я хочу штоб эти данные были в начале первого мегабайта: ffff0+10=100000h. table - это таблица дескрипторов. Потом пишу вот
lgdt [gd_reg]
gd_reg:
dw 8192
dd 0x0100000
Не работает. Если пробою например в область 800кбб то начинает работать. Почему я немогу в реальном режиме попасть на первый мегабайт памяти?
Отправлен: 08.02.2006, 18:49
Вопрос задал: OlegMA (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Евгений Иванов
Здравствуйте, OlegMA!
Потому что как минимум это всё стандартизировано. Есть драйвер HMA, есть HIMEM.
Есть также gate a20, тебе нужно открыть его.
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 08.02.2006, 19:22
Отвечает: skif quest
Здравствуйте, OlegMA!
В Real Mode мы можем адресовать память до мегабайта. Это из-за разрядности регистров. Чтобы получить память выше, перейди в Protect Mode, или Unreal Mode.
PS загрузчик пишеш?
Ответ отправил: skif quest (статус: 1-ый класс)
Отправлен: 09.02.2006, 08:01