Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

RusFAQ.ru: программирование на языке Assembler

Выпуск № 740
от 11.06.2004, 13:20

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 5446
Отправлено ответов: 14936
Активность: 274.2 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Стас
Статус: Опытный
Общий рейтинг: 129.55
[Подробней >>]
Евгений Иванов
Статус: Профессиональный
Общий рейтинг: 134.4
URL: Super Assembler Software
Телефон: НСС +7 831 3107039
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 116.68
[Подробней >>]
 
Snowm@n
Статус: Опытный
Общий рейтинг: 111.84
[Подробней >>]
thinker
Статус: Начальный
Общий рейтинг: 104.51
[Подробней >>]
flasher
Статус: Начальный
Общий рейтинг: 104.31
[Подробней >>]
 
Dragoon
Статус: Доверительный
Общий рейтинг: 108.68
[Подробней >>]
ASMодей
Статус: Профессиональный
Общий рейтинг: 111.56
[Подробней >>]
VOVAN
Статус: Опытный
Общий рейтинг: 105.57
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 5412. Подробное описание вопроса 5408. Пишу маленький сканер определённого порта в локалке. так вот, застр... (ответов: 2)
Вопрос № 5413. здрасьти! я вот тут подумал: вот допустим в паскале командой inline(), можно прям в кад вставлять ку... (ответов: 5)
Вопрос № 5415. Не могли бы вы опубликовать на сайте помощь со всеми дополнениями в виде Help'а... (ответов: 1)
Вопрос № 5416. Здравствуйте уважаемый Евгений Иванов. Почему Вы так не равнодушны моим вопросам? :} Я вить пытаюсь ... (ответов: 1)
Вопрос № 5417. Здравствуйте. Спасибо вам за прошлые ответы. Вопрос: У меня окно не хочет перерисовываться, когда я ... (ответов: 2)
Вопрос № 5418. Стас, спасибо тебе что ты пытаешся помочь мне, но кажется Ты не поняли вопроса.., или я не доходчиво... (ответов: 1)
Вопрос № 5419. Добрый вечер! Как следует понимать кэширование страниц памяти. Значит ли это, что страница полно... (ответов: 1)
Вопрос № 5420. Я программирую на VB а ASM знаком совсем немного, но хочу выучить, так вот проблема состоит в том чт... (ответов: 1)
Вопрос № 5422. не могу отправить писмо набронное в ворде просто виснит все и мае мыло не отпровляет не чего и не ко... (ответов: 1)
Вопрос № 5425. И установлена защита от не санкционированного доступа к диску Примерную технологию защиты я прочита... (ответов: 2)
Вопрос № 5426. Здраствуйте. Как правильно офромить структуру PAINTSTRUCT, masm32 выводит сообщение : def32.inc erro... (ответов: 2)
Вопрос № 5427. Здравствуйте эксперты... Напишите, пожалуйста, на ASM\'e алгоритм очистки экрана в MS-DOS… Заранее б... (ответов: 6)

Вопросов: 12, ответов: 25


 Вопрос № 5412

Подробное описание вопроса 5408.
Пишу маленький сканер определённого порта в локалке.
так вот, застрял там, где определёет мой ip, и с этого ip начинает сканить.
xor ecx, ecx
invoke gethostbyname, offset bufmyIP
mov eax, [eax+12]
mov eax, [eax]
mov eax, [eax]
mov ip, eax
mov ecx, ip
add eax, ecx ; тут почему-то показывает 0.0.0.0
push eax

invoke WSAStartup, 101h,offset wsadata
mov sin.sin_family, AF_INET
mov sin.sin_port, 139 shl 8
call inet_addr
mov ecx, 255
p.s. в tasm'e совсем ламерок, так что сорри.



Вопрос отправлен: 06.06.2004, 10:10
Отправитель: Flashik

[Следующий вопрос >>] [Список вопросов]

Отвечает Стас

Здравствуйте, Flashik!
Попробуй так.
Твой IP показывает?

Приложение:

Ответ отправлен: 06.06.2004, 15:40
Отправитель: Стас


Отвечает Евгений Иванов

Приветствую Вас, Flashik!
Подумай сто раз - потом делай.
Тут ошибка вроде видна сразу. В чём вопрос то?!
* EMan: -=- Любовь существует! =-=


Ответ отправлен: 06.06.2004, 13:59
Отправитель: Евгений Иванов


 Вопрос № 5413

здрасьти!
я вот тут подумал: вот допустим в паскале командой inline(), можно прям в кад вставлять куски на ассемблере, я вот и думаю как оно работает?
допустим там деректива mov ax,1234, вот отукуда мы знаем что до этого в ax не хранились какие-нибудь критические данные или этот регистр используется какой-то процедурой, получается мы запорем выполнение проги, или как??
спасибо



Вопрос отправлен: 06.06.2004, 10:32
Отправитель: очень хочу научиться

[Следующий вопрос >>] [Список вопросов]

Отвечает Стас

Здравствуйте, очень хочу научиться!
Когда паскаль видит что ты написал inline он сохраняет все что ему надо дальше исполняет твой код затем восстанавливает стек и регистры. Испортить ты можешь только если будешь с памятью баловаться.

Ответ отправлен: 06.06.2004, 11:58
Отправитель: Стас


Отвечает Ayl

Доброе время суток, очень хочу научиться!
А это гарантируется разработчиками компилятора. Дело в том, что в Паскале нет регистровых переменных, они все находятся в памяти (сегменте данных либо стека для локальных). Поэтому в начале любого оператора регистры ax, bx, cx, dx, di и si доступны для использования. Регистры, значения которых нужно сохранять - это cs, ds, ss, sp и bp. Регистр es, если не ошибаюсь, тоже может использоваться без сохранения.
С inline ситуация ровно такая же, как и с оператором asm. Просто в ранних версиях не было встроенного ассемблера, только оператор inline. Сейчас в нем нужды практически нет, есть встроенных асм и есть модификатор процедуры assembler.


Ответ отправлен: 07.06.2004, 12:37
Отправитель: Ayl


Отвечает Snowm@n

Доброе время суток, очень хочу научиться!
А вот как раз для этого надо в начале процедуры сохранять все изменяемые в процедуре регистры (в нашем случае push ax), а в конце восстанавливать (pop ax).

Ответ отправлен: 06.06.2004, 14:23
Отправитель: Snowm@n


Отвечает Евгений Иванов

Здравствуйте, очень хочу научиться!
Не-а, просто Паскакаль сделает push, pop. ;))
* EMan: -=- Любовь существует! =-=


Ответ отправлен: 06.06.2004, 14:00
Отправитель: Евгений Иванов


Отвечает thinker

Приветствую Вас, очень хочу научиться!
Всё правильно.

Ответ отправлен: 08.06.2004, 20:30
Отправитель: thinker


 Вопрос № 5415

Не могли бы вы опубликовать на сайте помощь со всеми дополнениями в виде Help'а



Вопрос отправлен: 06.06.2004, 14:21
Отправитель: Shans

[Следующий вопрос >>] [Список вопросов]

Отвечает flasher

Здравствуйте, Shans!
Какой именно помощи Вы ждёте?
Если то что я думаю, то Вам нуно читать faq'и, которые на wasm.ru

Ответ отправлен: 06.06.2004, 14:58
Отправитель: flasher


 Вопрос № 5416

Здравствуйте уважаемый Евгений Иванов.
Почему Вы так не равнодушны моим вопросам? :}
Я вить пытаюсь чему-нибудь научится. (иногда с Ващей помощю).
А Вы всё время почему-то отвечайте агресивно, не в тему, да ещё и с замечаниями на праваписания и т.д.
Я вить не сделал Вам нечего плохого, пожайлуста больще не отвечайте на мои вопросы.
С уважением, Flashik.



Вопрос отправлен: 06.06.2004, 15:05
Отправитель: Flashik

[Следующий вопрос >>] [Список вопросов]

Отвечает Евгений Иванов

xor ecx, ecx
invoke gethostbyname, offset bufmyIP
mov eax, [eax+12]
mov eax, [eax]
mov eax, [eax]
mov ip, eax
mov ecx, ip
add eax, ecx ; тут почему-то показывает 0.0.0.0
push eax
И что ты здесь пытаешься сделать?
Во первых, в соглашении win32 сказано, что регистр ECX будет испорчен любой
подпрограммой. Теперь посмотри на свой кусок кода и подумай, сильно подумай
;)
Во вторых, что это за переменная IP?
Какого чёрта ты заносишь его в ECX?
Ну я вижу, тебе Стас написал программу...
Но ведь ты же не собираешься всю жизнь делать так, чтобы за тебя писали программы?
Я не собираюсь за тобой слюни подтирать.
Этому ты должен научиться сам.
А не показывай свою неграмотность здесь ;)
и не обижайся, просто такие вопросы любого сделают философом.
Удачи!

* EMan: -=- Любовь существует! =-=


Ответ отправлен: 06.06.2004, 16:45
Отправитель: Евгений Иванов


 Вопрос № 5417

Здравствуйте. Спасибо вам за прошлые ответы.
Вопрос: У меня окно не хочет перерисовываться, когда я вызываю UpdateWindow (WM_PAINT не посылается, проверял). Как лечить?



Вопрос отправлен: 06.06.2004, 17:31
Отправитель: UKY

[Следующий вопрос >>] [Список вопросов]

Отвечает Евгений Иванов

Приветствую Вас, UKY!
UpdateWindow вызываешь правильно? с номером окна, который надо обновить?
* EMan: -=- Любовь существует! =-=


Ответ отправлен: 07.06.2004, 13:21
Отправитель: Евгений Иванов


Отвечает Dragoon

Добрый день, UKY!
Использовать InvalidateRect или посылать WM_Paint напрямую


Ответ отправлен: 09.06.2004, 23:02
Отправитель: Dragoon


 Вопрос № 5418

Стас, спасибо тебе что ты пытаешся помочь мне, но кажется Ты не поняли вопроса.., или я не доходчиво обяснил.
Мне нужно было засунуть ip в ecx.
Вот полный код:


Приложение:


Вопрос отправлен: 06.06.2004, 20:27
Отправитель: Flashik

[Следующий вопрос >>] [Список вопросов]

Отвечает Стас

Доброе время суток, Flashik!
По моему ты не понял моего ответа... :)
Какая разница, у меня в EAX твой IP, сделай MOV ECX,EAX - вот у тебя и в ECX. Если хочешь и в "IP dd 0" командой mov ip,eax.
Проблема как я понял у тебя в том, что gethostbyname возвращает 0 вместо IP. А для того чтобы он вернул твой IP и нужно СНАЧАЛА сделать WSAStartup. Что и показывает мой пример.

Ответ отправлен: 07.06.2004, 00:55
Отправитель: Стас


 Вопрос № 5419

Добрый вечер!
Как следует понимать кэширование страниц памяти. Значит ли это, что страница полностью содержится в L1 или L2 процессора. Если да, то как туда можно запихнуть 4mb страницу, если, например у меня, только 256kb кеш второго уровня.



Вопрос отправлен: 06.06.2004, 21:19
Отправитель: Alexej

[Следующий вопрос >>] [Список вопросов]

Отвечает ASMодей

Доброе время суток, Alexej!
Вообще под кэшированием можно понимать многое, но я думаю, что речь идет
про ассоциативный буфер трансляции страниц (он же TLB). Этот буфер находится
в кэш-памяти процессора и в нем хранятся записи, описывающие страницы памяти,
которые недавно использовались. Таким образом экономится процессорное время -
для обращения к странице памяти не нужно заново просматривать всю страничную
структуру.


Ответ отправлен: 08.06.2004, 08:05
Отправитель: ASMодей


 Вопрос № 5420

Я программирую на VB а ASM знаком совсем немного, но хочу выучить, так вот проблема состоит в том что мне необходимо скопировать загрузочные сектора жёсткого диска в какую ни будь директорию, а потом при надобности восстановить из под DOSа. Не могли бы вы подкинуть исходничек решающий данную проблему, или подсказать где это можно узнать.
Спасибо за внимание,c уважением Призрак



Вопрос отправлен: 07.06.2004, 00:57
Отправитель: Phantom

[Следующий вопрос >>] [Список вопросов]

Отвечает Стас

Приветствую Вас, Phantom!
Что читать будем?
BOOT, MASTER BOOT или все подряд?
Вот простенькие чтение MBR и запись MBR.

Приложение:

Ответ отправлен: 07.06.2004, 22:33
Отправитель: Стас


 Вопрос № 5422

не могу отправить писмо набронное в ворде
просто виснит все и мае мыло не отпровляет не чего и не кому
напишите свой емайл адрес куда могу отправить на прямую



Вопрос отправлен: 07.06.2004, 09:47
Отправитель: Dark_Monarh

[Следующий вопрос >>] [Список вопросов]

Отвечает Dragoon

Добрый день, Dark_Monarh!
Для начала выучи русский

Ответ отправлен: 09.06.2004, 23:04
Отправитель: Dragoon


 Вопрос № 5425

И установлена защита от не санкционированного доступа к диску
Примерную технологию защиты я прочитал на http://www.vcl.ru/html/dos/progr1/ch1.html
Но там написано совсем не то что мне хотелось бы
Мне нужно записать и считать конкретный сектор и дорожку не используя прерывание БИОС int. 13h а сделать это на прямую при помощи программирование портов, это только один выход, прямого доступа к диску из под Windows по крайне мере я вижу только его
продолжение следуе



Вопрос отправлен: 07.06.2004, 10:53
Отправитель: Dark_Monarh (Dark_Monarh@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Dragoon

Здравствуйте, Dark_Monarh!
перейди в Ring 0. Там программирование портов доступно


Ответ отправлен: 09.06.2004, 23:31
Отправитель: Dragoon


Отвечает Стас

Здравствуйте, Dark_Monarh!
Че так ошибок много? Учишся плохо?
К перепрошивке биос ты лучше не лезь, одно не верное движение и комп - труп. Реанимировать конечно можно, но можно и спалить совсем.
К тому же делается это для разных мамок по разному.
И почему творчески не подойти к защите программы?
Почему сразу запись|чтение сектора?
Человеку уже и отформатировать винт нельзя!
И вообще зачем и от кого защищаем программу?
От копирования одно, от запуска не теми, не в то время другое... и т.д.

Ответ отправлен: 07.06.2004, 23:35
Отправитель: Стас


 Вопрос № 5426

Здраствуйте.
Как правильно офромить структуру PAINTSTRUCT, masm32 выводит сообщение :
def32.inc error A2163: non-benign structure redefinition: incorrect initializers: PAINTSRUCT
Вот сама paintstruct:
PAINTSTRUCT STRUCT
hdc DWORD ?
fErase DWORD ?
rcPaint RECT <>
fRestore DWORD ?
fIncUpdate DWORD ?
rgbReserved BYTE 32 dup(?)
PAINTSTRUCT ENDS


Приложение:


Вопрос отправлен: 07.06.2004, 11:40
Отправитель: Семен

[Следующий вопрос >>] [Список вопросов]

Отвечает Евгений Иванов

Доброе время суток, Семен!
пиши RECT
* EMan: -=- Любовь существует! =-=


Ответ отправлен: 07.06.2004, 13:22
Отправитель: Евгений Иванов


Отвечает Стас

Доброе время суток, Семен!
Redefinition означает переопределение. Т.е. у тебя уже где то описывается структура PAINTSTRUCT.
Решение - удали её из Def.inc.
Кроме того у тебя:
1) ps_ PAINSTRUCT пропустил T в PAINTSTRUCT;
2) push offset rect - а должно быть push offset rc.
3) Конструкция "cmp wp_uMsg,wm_close; jnz not_close" никогда не позволит сработать проц. "paint_". Закоментируй их.
4) напиши завершение процедуры _paint (leave, ret 16), а то у тебя все обрывается на "call EndPaint".


Ответ отправлен: 07.06.2004, 21:42
Отправитель: Стас


 Вопрос № 5427

Здравствуйте эксперты...
Напишите, пожалуйста, на ASM\'e алгоритм очистки экрана в MS-DOS…
Заранее благодарю…



Вопрос отправлен: 07.06.2004, 13:13
Отправитель: Serega

[Следующий вопрос >>] [Список вопросов]

Отвечает Ayl

Доброе время суток, Serega!
А в каком режиме - текстовом или графическом?
Если в текстовом, то либо так (экран 80*25, режим 3):
push 0b800h
pop es
xor di, di
mov ax, 1f20h
mov cx, 2000
rep stosw
либо с помощью функций 6 или 7 10-го прерывания - прокрутка окна. Там если указать в качестве кол-ва строк 0 будет выполнена очистка.
В графическом режиме чкть сложнее.


Ответ отправлен: 07.06.2004, 14:20
Отправитель: Ayl


Отвечает Евгений Иванов

Добрый день, Serega!
;Программа очистки экрана по нажатию F11.Иванов Евгений <> @ 14.8.1998
.386p
jr equ jmp short
ofs equ offset
wptr equ word ptr
bptr equ byte ptr
Model tiny
Assume CS:F11,DS:F11
F11 segment 'code' use16
Org 256
start:
db 19 dup(144)
jr m101a
dat equ $
data1 db 1eh,0,26h,0,63h,2eh,6ch,26h,73h,1fh,0dh,0
int9_entry:
cmp bptr [cs:(data1-dat+11)],0
jnz m15i9
push ax
in al,96
cmp al,57h
jz m10i9
pop ax
m15i9:
db 0EAh,0,0,0,0
m10i9:
push ds si di es cx cs
pop ds
mov bptr [ds:(data1-dat+11)],1ch
push 40h
pop es
mov cx,12
mov si,ofs data1-dat
mov di,1ah
cld
rep movsb
in al,97
or al,128
out 97,al
and al,127
out 97,al
mov al,32
out 32,al
mov bptr [ds:(data1-dat+11)],0
pop cx es di si ds ax
iret
len_resid equ $-data1
m101a:
mov bx,[ds:2ch]
sub bx,1000h
mov ds,bx
xor si,si
mov cx,65500
cld
m52a:
lodsb
cmp al,'M'
jz m102a
m72a:
loop m52a
m12a:
push cs
pop ds
jmp dos
m142a:
pop si cx
jmp m72a
m102a:
mov bx,88
push cx si
m162a:
mov cx,bx
m172a:
lodsb
cmp al,'='
jz m202a
loop m172a
jmp m142a
m212a:
pop bx ds
push dx
jmp m162a
m202a:
pushf
push si
std
sub si,2
mov di,ofs d1+5
mov bx,cx
mov cx,6
repz cmpsb
lahf
pop si
popf
sahf
jnz m162a
pop dx
push ds bx
mov bx,dx
mov bx,wptr [bx]
mov ds,bx
mov bx,wptr [ds:2ch]
dec bx
mov ds,bx
mov ax,wptr [ds:1]
mov cx,wptr [ds:3]
sub ax,cx
dec ax
dec ax
cmp ax,bx
jnz m212a
cmp bptr [ds:0],'M'
jnz m212a
cmp cx,(len_resid/16)+1
jc m212a
pop bx ds cx
add dx,17
mov cl,4
shr dx,cl
mov cx,ds
add cx,dx
push cs
pop ds
mov dx,ofs dhelp
mov ah,9
int 33
mov ax,3509h
int 33
mov wptr [m15i9+1],bx
mov wptr [m15i9+3],es
mov es,cx
mov si,ofs data1
mov di,0
mov cx,len_resid
push es
rep movsb
mov ax,2509h
mov dx,ofs int9_entry-dat
pop ds
int 33
jmp m12a
dos:
mov ah,4ch
int 33
d1 db 'PROMPT'
dhelp db 10,13,'Для очистки экрана нажмите F11 ',10,13,36
db '@21'
F11 Ends
End start


а если серъёзно, то вот:
push es
push 0B800h
pop es
sub di,di
mov cx,80*25
sub ax,ax
rep stosw
pop es
* EMan: -=- Любовь существует! =-=


Ответ отправлен: 07.06.2004, 20:53
Отправитель: Евгений Иванов


Отвечает VOVAN

Добрый день, Serega!
что-то типа этого. Хотя не проверял, писал навскидку. Может там ah al местами надо будет поменять.

Приложение:

Ответ отправлен: 07.06.2004, 14:57
Отправитель: VOVAN


Отвечает Snowm@n

Доброе время суток, Serega!
На ASM'е пишутся не алгоритмы а программы :)
Алгоритм забей нулями область памяти по адресу B800h:0000h длиной 80*25*2 байт

Ответ отправлен: 07.06.2004, 22:04
Отправитель: Snowm@n


Отвечает Стас

Здравствуйте, Serega!
push es
mov ax,0b800h
mov es,ax
xor di,di
mov ax,1f20h
mov cx,80*25*2
cld
rep stosb
pop es

Ответ отправлен: 07.06.2004, 21:41
Отправитель: Стас


Отвечает thinker

Доброе время суток, Serega!
Что-то вроде:
.386
mov CX, 80*25*2/4
push 0B800h
pop ES
xor DI,DI
xor EAX,EAX
cld
rep stosd


Ответ отправлен: 08.06.2004, 20:29
Отправитель: thinker



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (21)
C / C++ (13)
Perl (1)
Builder / Delphi (18)
Pascal (22)
Basic / VBA (3)
Java / JavaScript (4)
PHP (14)
Криптография (9)
WinAPI (11)
Радиоэлектроника (9)
Пользователю
Windows 95/98/Me (35)
Windows NT/2000/XP (53)
"Железо" (32)
Поиск информации (15)
Администратору
Windows NT/2000/XP (28)
Linux / Unix (11)
Юристу
Гражданское право (12)
Семейное право (8)
Трудовое право (11)
КоАП (7)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу


В избранное