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

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


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

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

Выпуск № 621
от 21.08.2003, 12:30

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


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

Hangatyr
Статус: Опытный
Общий рейтинг: 113.37
[Подробней >>]
Portnov
Статус: Профессиональный
Общий рейтинг: 108.97
URL: Мой сайтик...
[Подробней >>]
Евгений Иванов
Статус: Профессиональный
Общий рейтинг: 147.94
URL: Super Assembler Software
Телефон: НСС +7 831 3107039
[Подробней >>]
 
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 152.3
URL: Программирование
[Подробней >>]
dimka
Статус: Опытный
Общий рейтинг: 143.82
Телефон: (231)-4-43-85
[Подробней >>]
Greys
Статус: Доверительный
Общий рейтинг: 131.42
[Подробней >>]
 
[L2]Max
Статус: Доверительный
Общий рейтинг: 120.52
[Подробней >>]
_vt
Статус: Профессиональный
Общий рейтинг: 119.23
[Подробней >>]
Tigran K. Kalaidjian
Статус: Профессиональный
Общий рейтинг: 126.77
URL: Методы оптимизации работы ПК
[Подробней >>]
 
masquer
Статус: Профессиональный
Общий рейтинг: 134.84
[Подробней >>]


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

Вопрос № 3933. Здраствуйте! Я по поводу вопроса №3927 (как узнать тип и частоту проца) Может у кого-нибудь есть исх... (ответов: 6)
Вопрос № 3934. Здравствуйте, уважаемые эксперты. Скажите пожалуйста, как под ДОС считать состояние одновре- менно Н... (ответов: 3)
Вопрос № 3935. Здравствуйте уважаемые Эксперты! Если нет возможности использовать команды enter и leave (ebp исполь... (ответов: 3)
Вопрос № 3936. Приветствую всех. 1) У меня мысль появилась купить Покет ПК ну и есс-но возник вопрос про ихние камн... (ответов: 3)
Вопрос № 3937. Доброе время суток! Что такое прерывания РCI BIOS и как ими пользоваться? Можно ли как-то вызывать п... (ответов: 2)
Вопрос № 3938. Всем привет ! Тут кто-то про DDK спрашивал? Вот парочка ссылок. Да простят меня эксперты. 1. Для Win... (ответов: 3)
Вопрос № 3939. Добрый день ! В FAQ остался один вопрос, на который пока не получилось придумать/найти ответ: ------... (ответов: 4)
Вопрос № 3940. В дополнение к вопросу 3921. Все дело в том, что мне нужно создать почтовое сообщение именно в Outlo... (ответов: 2)

Вопросов: 8, ответов: 26


 Вопрос № 3933

Здраствуйте!
Я по поводу вопроса №3927 (как узнать тип и частоту проца)
Может у кого-нибудь есть исходники, которые ето делают?
Где можно узнать как работает cpuid?
Спасибо!



Вопрос отправлен: 16.08.2003, 15:18
Отправитель: Madman (yo-ho@km.ru)

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

Отвечает Hangatyr

Добрый день, Madman!
1. У меня где-то был. Если найду, то скину на мыло.
2. В любом справочнике по командам x86.
кратко так:
помещаешь в eax:
0 - ebx ecx edx будут содержать идентификатор процессора. Например, для AMD -"AuthenticAMD".
1 - eax edx - информация о процессоре.
2 - eax - информация о кэш памяти.


Ответ отправлен: 16.08.2003, 15:44
Отправитель: Hangatyr


Отвечает Portnov

Здравствуйте, Madman!
Исходник простейший выслал на мыло.

Ответ отправлен: 16.08.2003, 17:24
Отправитель: Portnov


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

Здравствуйте, Madman!
CPUID Instruction
-----------------
All newer processors have the CPUID instruction, which helps to identify on
what processor we are. Before using it, we must first determine if it is
supported, by flipping the ID flag (bit 21 of EFLAGS).
pushfd
pop eax
xor eax, 00200000h ; flip bit 21
push eax
popfd
pushfd
pop ecx
xor eax, ecx ; check if bit 21 was flipped
jnz _cpuid_supported
jz _no_cpuid
The only problem may be that NexGen processors do not support the ID flag, but
they do support the CPUID instruction. To determine that, we must hook Invalid
Opcode exception (int6) and execute the instruction. If the exception is
triggered, CPUID is not supported.
Also some early Cyrix processors (namely 5x86 and 6x86) have the CPUID
instruction disabled. To enable it, we must first enable extended CCRregisters
and then enable the instruction, setting bit 7 in CCR4.
; Enable extended CCRs
mov al, 0C3h ; C3 corresponds to CCR3
call ReadCCR
and ah, 0Fh ; bits 7..4 of CCR3 <- 0001b
or ah, 10h
call WriteCCR
; Enable CPUID
mov al, 0E8h ; E8 corresponds to CCR4
call ReadCCR
or ah, 80h ; bit 7 enables CPUID
call WriteCCR
The following functions are used to read/write CCRs:
ReadCCR: out 22h, al ; Select control register
times 3 jmp short $+2
xchg al, ah
in al, 23h ; Read the register
xchg al, ah
ret
WriteCCR: out 22h, al ; Select control register
times 3 jmp short $+2
mov al, ah
out 23h, al ; Write the register
ret
After enabling CPUID we must test if it is supported by flipping the ID flag,
unless of course we have determined that we are not on a 5x86 or 6x86 by
reading DIRs.
Once we have determined that CPUID is supported, we can use it to identify the
processor. The instruction expects EAX to hold a function number and returns
information corresponding to this number in EAX, ECX,EDX and EBX. The two most
important levels are listed below.
level 0 (eax=0) returns:
eax Maximum available level
ebx:edx:ecx Vendor ID in ASCII characters
Intel - "GenuineIntel" (ebx='Genu', bl='G'(47h))
AMD - "AuthenticAMD"
Cyrix - "CyrixInstead"
Rise - "RiseRiseRise"
Centaur - "CentaurHauls"
NexGen - "NexGenDriven"
UMC - "UMC UMC UMC "
level 1 (eax=1) returns:
eax bits 13..12 0 - normal
1 - overdrive
2 - secondary in dual system
bits 11..8 model
bits 7..4 stepping
bits 3..0 revision
If Processor Serial Number is enabled, all 32
bits are treated as the high bits (95..64) of
the number.
edx Processor features (e.g. bit 23 indicates MMX)
There are also other levels, i.e. level 2 returns cache and TLB descriptors,
level 3 the rest of Processor Serial Number.
Other processors (AMD, Cyrix) also support extended levels. The first extended
level is 80000000h and it returns in EAX the maximum extended level. These
extended levels return information specific to that processors, e.g. 3DNow!
support or processor name.
This example code determines MMX support:
; First check maximum available level
xor eax, eax ; eax = 0 (level 0)
cpuid
cmp eax, 0
jng _no_higher_levels
; Now check MMX support
mov eax, 1 ; level 1
cpuid
test edx, 00800000h ; bit 23 is set if MMX is supported
jnz _mmx_supported
jz _no_mmx
As this is not the place for listing all the available information about what
values are returned by CPUID, ID register or DIRs, you should get the most
recent information from the processor vendors:
www.intel.com
www.amd.com
www.cyrix.com
Also you can find very valuable information about the identification topic on:
www.sandpile.org
www.x86.org
www.cs.cmu.edu/~ralf/files.html
;========
Clockrate
---------
Before Pentium, it was difficult to determine the processor clockrate.
It
typically based on sophisticated timing loops, which were often
unreliable.
With Pentium, Intel introduced RDTSC instruction, which returned number
of
clocks since the processor start. The following code illustrates how to use
it.
; Determine RDTSC support (assuming that CPUID is supported)
mov eax, 1
cpuid
test edx, 10h ; bit 4 is set when RDTSC is
supported
jz _no_rdtsc
; Disable all interrupts but timer IRQ0
in al, 21h
mov ah, al
in al, 0A1h
push ax ; Save previous values
mov al, 0FEh
out 21h, al
mov al, 0FFh
out 0A1h, al
; Assuming that timer runs at 55ms periods, get the clockrate
hlt ; Wait for timer
rdtsc ; Read TSC
mov ebx, eax ; Save lo
mov ecx, edx ; Save hi
hlt ; Wait for timer
rdtsc ; Read TSC
sub eax, ebx ; Difference lo
sbb edx, ecx ; Difference hi
; Calculate clockrate in MHz
mov ecx, 54925
div ecx
mov [Clockrate], eax
; Restore interrupt states
pop ax
out 0A1h, al
mov al, ah
out 21h, al
The above code can be run in real mode, V86 mode or protected mode in ring0.


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


Отвечает Bob Johnson

Приветствую Вас, Madman!
> Может у кого-нибудь есть исходники, которые ето делают?
Кусок кода тебе выслал, если нужна полная программа - скачивай с моей страницы.
> Где можно узнать как работает cpuid?
В целом cpuid работает достаточно просто - делаешь:
mov eax, 1
cpuid
после чего набор битов в edx будет определять возможности процессора. Эта команда стала поддерживаться в процессоре pentium, так что определить таким образом 486 не получится.
Основные биты в edx:
15 = 1 если есть команды CMOVcc
19 = 1 если есть CFLUSH
23 = 1 если поддерживается ММХ
25 = 1 если SSE
26 = 1 если SSE2
Полное описание можно найти в manual'ах от Intel и AMD, а также просто в интернете.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 16.08.2003, 16:01
Отправитель: Bob Johnson


Отвечает dimka

Здравствуйте, Madman!
Я уже написал:
Tasm 5.0-> examples->..


Ответ отправлен: 18.08.2003, 12:23
Отправитель: dimka


Отвечает Greys

Добрый день, Madman!
Я тебе уже ответил по поводу cpuid, посмотри ответ на вопрос №3928.
С уважением,GREYS!

Ответ отправлен: 19.08.2003, 20:22
Отправитель: Greys


 Вопрос № 3934

Здравствуйте, уважаемые эксперты.
Скажите пожалуйста, как под ДОС считать состояние одновре-
менно НЕСКОЛЬКИХ нажатых клавиш. Например стрелка Влево+стрелка Вверх.(Понимаю, что через порты, но незнаю как написать код.)



Вопрос отправлен: 16.08.2003, 19:23
Отправитель: Rustem

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

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

Приветствую Вас, Rustem!
Надо сохранять информацию о каждой нажатой клавише в массиве.
Если отжимается, то сбрасывать...
Вот небольшая вырезка из моего эмулятора Спектрума.
Можешь взять полный исходник и саму программу на моём сайте.
Немного изменив, можно использовать - изменить, так как в Спектруме
клавиатура тоже не ахти построена и тоже не все клавиши можно одновременно
считывать. Приходится изголяться и придумывать всякие массивы и т.п.
В IBM скан-коды клавиш передаются по прерыванию номер 9 (аппартн. 1).
Передаётся и нажатие, и отжатие.
Например, если нажмёшь "K" и будешь держать нажатой, а в это время нажмёшь
"M", а потом отожмёшь "M", то такая последовательность:
KK..KKM^M (потом ничего не будет) а когда отожмёшь "K", то код отжатия "K"
пойдёт и всё!
;-------
LastKey db ? ;Scan-код последней клавиши
Array8KeyLine db 8 dup(?) ;"8 линий адресов от клавиатуры"
;------------------------
; Обработчик 9 прерывания
proc Int9Entry
push eax ds DataWork
sub eax,eax
pop ds
Assume DS:DataWork
in al,96
mov [LastKey],al
jmp wptr [cs:eax*2+tKeysJump]
ExitInt9:
in al,97
mov ah,al
or al,128
out 97,al
mov al,ah
jmp $+2
out 97,al
mov al,32
pop ds
out 32,al
pop eax
iret
endp
;Клавиатура
tKeysJump label word
dw kNULL
dw kEsc
dw k1
dw k2
dw k3
dw k4
dw k5
dw k6
dw k7
dw k8
dw k9
dw k0
dw kTire
dw kPlus
dw kBackSpace
dw kTab
dw kQ ;10h
dw kW
dw kE
dw kR
dw kT
dw kY
dw kU
dw kI
dw kO
dw kP
dw kSq1
dw kSq2
dw kEnter
dw kCtrlL
dw kA
dw kS
dw kD ;20h
dw kF
dw kG
dw kH
dw kJ
dw kK
dw kL
dw kPointZap
dw kQuote
dw kTilde
dw kShiftL
dw kSlash
dw kZ
dw kX
dw kC
dw kV
dw kB ;30h
dw kN
dw kM
dw kZap
dw kPoint
dw kDelenie
dw kShiftR
dw kPrintScr
dw kAltL
dw kSpaceBar
dw kCapsLock
dw kF1
dw kF2
dw kF3
dw kF4
dw kF5
dw kF6 ;40h
dw kF7
dw kF8
dw kF9
dw kF10
dw kNumLock
dw kScrollLock
dw kHome7
dw kUp8
dw kPageUp9
dw kMinusGray
dw kLeft4
dw kCenter5
dw kRight6
dw kPlusGray
dw kEnd1
dw kDown2 ;50h
dw kPageDown3
dw kIns0
dw kDelPoint
dw kNULL ;kAltPrintScr ;54h
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL ;60h
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL ;70h
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
dw kNULL
;Отжатие


Ответ отправлен: 16.08.2003, 23:10
Отправитель: Евгений Иванов


Отвечает Bob Johnson

Добрый день, Rustem!
Они будут приходить поочереди - ты можешь написать обработчик 9-го прерывания в нем создать виртуальную таблицу клавиш. Когда тебе будет приходить код, соответствующий нажатию клавишы, ты будешь записывать в таблицу 1 в соответствующее место, когда код отпускания - 0. Тогда такая таблица в любой момент времени будет отражать реальную ситуацию по нажатым клавишам. Максимально количество одновременных нажатых клавиш определяется только самой клавиатурой и может быть до 10 или еще больше (сам видел на очень старой клавиатуре - на более новых 2 - 5, в зависимости от конкретных клавиш).

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 16.08.2003, 20:16
Отправитель: Bob Johnson


Отвечает [L2]Max

„D„Ђ„q„‚„Ќ„z „t„u„~„Ћ, Rustem!
6.1. „K„|„p„r„y„p„„„…„‚„p IBM PC/XT
„R„r„‘„x„Ћ „ѓ „{„|„p„r„y„p„„„…„‚„Ђ„z „Ђ„ѓ„…„‹„u„ѓ„„„r„|„‘„u„„„ѓ„‘ „‰„u„‚„u„x „Ѓ„Ђ„‚„„„Ќ „P„P„I 60h „y
61h („ѓ„}. 5.2). „P„‚„y „~„p„w„p„„„y„y „{„|„p„r„y„Љ„y „Ѓ„‚„Ђ„y„ѓ„‡„Ђ„t„y„„ „p„Ѓ„Ѓ„p„‚„p„„„~„Ђ„u
„Ѓ„‚„u„‚„Ќ„r„p„~„y„u IRQ1, „ѓ„r„‘„x„p„~„~„Ђ„u „ѓ „r„u„{„„„Ђ„‚„Ђ„} Int 9. „E„ѓ„|„y „B„Ќ „‡„Ђ„„„y„„„u
„Ђ„q„‚„p„q„p„„„Ќ„r„p„„„Ћ „Џ„„„Ђ „Ѓ„‚„u„‚„Ќ„r„p„~„y„u „ѓ„p„}„y, „„„Ђ „Ѓ„‚„Ђ„s„‚„p„}„}„p „Ђ„q„‚„p„q„Ђ„„„{„y
„Ѓ„‚„u„‚„Ќ„r„p„~„y„‘ „t„Ђ„|„w„~„p „y„}„u„„„Ћ „ѓ„|„u„t„…„ђ„‹„y„z „r„y„t:
Int_09h:
push ax
push di
push es
in al,60h ;„ѓ„{„p„~. „{„Ђ„t „{„|„p„r„y„Љ„y „y„x „Q„@
les di,buffer ;„p„t„‚„u„ѓ „q„…„†„u„‚„p
stosb ;„ѓ„Ђ„‡„‚„p„~„y„„„Ћ „{„Ђ„t „r „q„…„†„u„‚„u
pop es
pop di
in al,61h ;„r„r„Ђ„t „Ѓ„Ђ„‚„„„p „Q„B
mov ah,al
or al,80h ;„…„ѓ„„„p„~„Ђ„r„y„„„Ћ „q„y„„ "„Ѓ„Ђ„t„„„r„u„‚„w„t„u„~„y„‘ „r„r„Ђ„t„p"
out 61h,al
xchg ah,al ;„r„Ќ„r„u„ѓ„„„y „ѓ„„„p„‚„Ђ„u „x„~„p„‰„u„~„y„u „Q„B
out 61h,al
mov al,20h ;„Ѓ„Ђ„ѓ„|„p„„„Ћ „ѓ„y„s„~„p„| EOI
out 20h,al ;„{„Ђ„~„„„‚„Ђ„|„|„u„‚„… „Ѓ„‚„u„‚„Ќ„r„p„~„y„z
pop ax
iret
„P„u„‚„u„‰„u„~„Ћ „ѓ„{„p„~-„{„Ђ„t„Ђ„r „r„ѓ„u„‡ „{„|„p„r„y„Љ „Ѓ„‚„y„r„u„t„u„~ „r „Ѓ„‚„y„|„Ђ„w„u„~„y„y 1. „B„Ќ
„}„Ђ„w„u„„„u „x„p„Ѓ„‚„u„„„y„„„Ћ „Ѓ„‚„u„‚„Ќ„r„p„~„y„‘ „Ђ„„ „{„|„p„r„y„p„„„…„‚„Ќ „|„y„q„Ђ „}„p„ѓ„{„y„‚„Ђ„r„{„Ђ„z „q„y„„„p
1 „r „‚„u„s„y„ѓ„„„‚„u IMR „{„Ђ„~„„„‚„Ђ„|„|„u„‚„p „Ѓ„‚„u„‚„Ќ„r„p„~„y„z, „|„y„q„Ђ „…„ѓ„„„p„~„Ђ„r„{„Ђ„z „q„y„„„p 6
„Ѓ„Ђ„‚„„„p „Q„B „P„P„I:
in al,21h ;„‰„„„u„~„y„u IMR
or al,2 ;„…„ѓ„„„p„~„Ђ„r„{„p „q„y„„„p 1
out 21h,al ;„x„p„Ѓ„y„ѓ„Ћ IMR
„y„|„y
in al,61h ;„‰„„„u„~„y„u „Q„B
or al,40h ;„…„ѓ„„„p„~„Ђ„r„{„p „q„y„„„p 6
out 61h,al ;„x„p„Ѓ„y„ѓ„Ћ „Q„B
„D„|„‘ „‚„p„x„‚„u„Љ„u„~„y„‘ „‚„p„q„Ђ„„„Ќ „{„|„p„r„y„p„„„…„‚„Ќ „~„u„Ђ„q„‡„Ђ„t„y„}„Ђ „r„Ќ„Ѓ„Ђ„|„~„y„„„Ћ
„Ђ„q„‚„p„„„~„Ќ„u „t„u„z„ѓ„„„r„y„‘.

6.2. „K„|„p„r„y„p„„„…„‚„p IBM PC AT
„B„x„p„y„}„Ђ„t„u„z„ѓ„„„r„y„u „ѓ „{„|„p„r„y„p„„„…„‚„Ђ„z „r PC AT „q„p„x„y„‚„…„u„„„ѓ„‘ „~„p
„}„y„{„‚„Ђ„Ѓ„‚„Ђ„€„u„ѓ„ѓ„Ђ„‚„u Intel 8042; „q„|„p„s„Ђ„t„p„‚„‘ „Џ„„„Ђ„}„… „Ѓ„‚„Ђ„s„‚„p„}„}„y„ѓ„„ „y„}„u„u„„
„s„Ђ„‚„p„x„t„Ђ „q„Ђ„|„Ћ„Љ„y„u „r„Ђ„x„}„Ђ„w„~„Ђ„ѓ„„„y „Ѓ„Ђ „…„Ѓ„‚„p„r„|„u„~„y„ђ „{„|„p„r„y„p„„„…„‚„Ђ„z, „~„u„w„u„|„y „r
PC/XT.
„T„Ѓ„‚„p„r„|„u„~„y„u „{„|„p„r„y„p„„„…„‚„Ђ„z „Ѓ„‚„Ђ„y„x„r„Ђ„t„y„„„ѓ„‘ „Ђ„q„‚„p„‹„u„~„y„u„} „{ „Ѓ„Ђ„‚„„„…
„r„r„Ђ„t„p-„r„Ќ„r„Ђ„t„p 64h. „D„|„‘ „ѓ„Ђ„r„}„u„ѓ„„„y„}„Ђ„ѓ„„„y „ѓ„Ђ „ѓ„„„p„‚„Ќ„}„y „P„^„B„M „t„Ђ„Ѓ„…„ѓ„„„y„}„Ђ
„y„ѓ„Ѓ„Ђ„|„Ћ„x„Ђ„r„p„~„y„u „Ѓ„Ђ„‚„„„p 60h. „E„ѓ„|„y „Ѓ„‚„y„r„u„t„u„~„~„Ќ„u „~„y„w„u „Ѓ„‚„y„}„u„‚„Ќ „~„u
„‚„p„q„Ђ„„„p„ђ„„ „~„p „B„p„Љ„u„z „P„^„B„M, „„„Ђ „y„ѓ„Ѓ„Ђ„|„Ћ„x„…„z„„„u „Ѓ„Ђ„‚„„ 60h.
„P„Ђ„‚„„ 64h „Ѓ„‚„u„t„~„p„x„~„p„‰„u„~ „t„|„‘ „r„Ќ„r„Ђ„t„p „{„Ђ„}„p„~„t „y „t„p„~„~„Ќ„‡ „y „t„|„‘
„‰„„„u„~„y„‘ „ѓ„Ђ„ѓ„„„Ђ„‘„~„y„‘ „{„|„p„r„y„p„„„…„‚„Ќ. „O„q„Љ„p„‘ „ѓ„‡„u„}„p „Ѓ„Ђ„ѓ„Ќ„|„{„y „{„Ђ„}„p„~„t „{„|„p„r„y„p-
„„„…„‚e „„„p„{„Ђ„r„p:
cli ;„x„p„Ѓ„‚„u„„ „Ѓ„‚„u„‚„Ќ„r„p„~„y„z
call wait_kbd ;„Ђ„w„y„t„p„~„y„u „s„Ђ„„„Ђ„r„~„Ђ„ѓ„„„y „{„|„p„r„y„p„„„…„‚„Ќ
mov al,cmd_code ;„{„Ђ„t „{„Ђ„}„p„~„t„Ќ
out 64h,al ;„r„Ќ„r„Ђ„t „r „Ѓ„Ђ„‚„„
sti ;„‚„p„x„‚„u„Љ„u„~„y„u „Ѓ„‚„u„‚„Ќ„r„p„~„y„z
„D„|„‘ „{„Ђ„}„p„~„t, „ѓ„Ђ„Ѓ„‚„Ђ„r„Ђ„w„t„p„ђ„‹„y„‡„ѓ„‘ „q„p„z„„„Ђ„} „t„p„~„~„Ќ„‡, „Џ„„„p „ѓ„‡„u„}„p
„Ѓ„‚„y„~„y„}„p„u„„ „r„y„t:
cli
call wait_kbd
mov al,cmd_code ;„{„Ђ„t „{„Ђ„}„p„~„t„Ќ
out 64h,al
call wait_kbd
mov al,data_value ;„q„p„z„„ „t„p„~„~„Ќ„‡
out 64h,al
sti
„P„‚„Ђ„r„u„‚„{„p „Ђ„w„y„t„p„~„y„‘ „s„Ђ„„„Ђ„r„~„Ђ„ѓ„„„y „{„|„p„r„y„p„„„…„‚„Ќ „}„Ђ„w„u„„ „y„}„u„„„Ћ „r„y„t:
wait_kbd:
mov cx,2500h ;„x„p„t„u„‚„w„{„p „Ѓ„Ђ„‚„‘„t„{„p 10 „}„ѓ„u„{
test_kbd:
in al,64h ;„‰„y„„„p„u„} „ѓ„Ђ„ѓ„„„Ђ„‘„~„y„u „{„|„p„r„y„p„„„…„‚„Ќ
test al,2 ;„Ѓ„‚„Ђ„r„u„‚„{„p „q„y„„„p „s„Ђ„„„Ђ„r„~„Ђ„ѓ„„„y
loopnz test_kbd
ret
„@„r„„„Ђ„‚„p„} „y„x„r„u„ѓ„„„~„Ќ „ѓ„|„u„t„…„ђ„‹„y„u „{„Ђ„}„p„~„t„Ќ „{„Ђ„~„„„‚„Ђ„|„|„u„‚„p „{„|„p„r„y„p„„„…„‚„Ќ
(„Џ„„„Ђ„„ „ѓ„Ѓ„y„ѓ„Ђ„{, „r„u„‚„Ђ„‘„„„~„Ђ, „~„u „Ѓ„Ђ„|„Ђ„~ „y „}„Ђ„w„u„„ „ѓ„Ђ„t„u„‚„w„p„„„Ћ „Ђ„Љ„y„q„{„y, „„. „{.
„ѓ„Ђ„q„‚„p„~ „y„x „‚„p„x„|„y„‰„~„Ќ„‡ „y„ѓ„„„Ђ„‰„~„y„{„Ђ„r):
„K„Ђ„t „{„Ђ„}„p„~„t„Ќ „O„Ѓ„y„ѓ„p„~„y„u
„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ
0FFh „R„q„‚„Ђ„ѓ „{„|„p„r„y„p„„„…„‚„Ќ „y „x„p„Ѓ„…„ѓ„{ „r„~„…„„„‚„u„~„~„u„s„Ђ „„„u„ѓ„„„p.
0FEh „P„Ђ„r„„„Ђ„‚„y„„„Ћ „Ѓ„Ђ„ѓ„|„u„t„~„ђ„ђ „Ѓ„u„‚„u„t„p„‰„….
0FDh „B„Ќ„x„Ђ„r „Ѓ„‚„u„‚„Ќ„r„p„~„y„‘ IRQ1.
0F6h „P„‚„y„r„u„ѓ„„„y „{„|„p„r„y„p„„„…„‚„… „r „y„ѓ„‡„Ђ„t„~„Ђ„u „ѓ„Ђ„ѓ„„„Ђ„‘„~„y„u „y
„‚„p„x„‚„u„Љ„y„„„Ћ „ѓ„{„p„~„y„‚„Ђ„r„p„~„y„u.
0f5h „P„‚„y„r„u„ѓ„„„y „{„|„p„r„y„p„„„…„‚„… „r „y„ѓ„‡„Ђ„t„~„Ђ„u „ѓ„Ђ„ѓ„„„Ђ„‘„~„y„u „y
„x„p„Ѓ„‚„u„„„y„„„Ћ „ѓ„{„p„~„y„‚„Ђ„r„p„~„y„u.
0F4h „R„q„‚„Ђ„ѓ„y„„„Ћ „q„…„†„u„‚ „{„|„p„r„y„p„„„…„‚„Ќ „y „~„p„‰„p„„„Ћ „ѓ„{„p„~„y„‚„Ђ„r„p„~„y„u.
0F3h „H„p„t„p„„„Ћ „x„p„t„u„‚„w„{„… „y „ѓ„{„Ђ„‚„Ђ„ѓ„„„Ћ „r„r„Ђ„t„p „ѓ„y„}„r„Ђ„|„Ђ„r.
„P„u„‚„r„Ђ„~„p„‰„p„|„Ћ„~„Ђ „{„|„p„r„y„p„„„…„‚„p „~„p„‰„y„~„p„u„„ „Ѓ„Ђ„r„„„Ђ„‚„‘„„„Ћ
„~„p„w„p„„„…„ђ „{„|„p„r„y„Љ„… „‰„u„‚„u„x 0,5 „ѓ„u„{ „ѓ„Ђ „ѓ„{„Ђ„‚„Ђ„ѓ„„„Ћ„ђ
10 „Ѓ„Ђ„r„„„Ђ„‚„Ђ„r „r „ѓ„u„{„…„~„t„…. „B„Ќ „}„Ђ„w„u„„„u „y„x„}„u„~„y„„„Ћ „Џ„„„y
„Ѓ„p„‚„p„}„u„„„‚„Ќ, „Ѓ„Ђ„ѓ„|„p„r „ѓ„|„u„t„…„ђ„‹„y„z „q„p„z„„ „t„p„~„~„Ќ„‡:
7 6 5 4 3 2 1 0
„Ў„џ„џ„¦„џ„џ„¦„џ„џ„¦„џ„џ„¦„џ„џ„¦„џ„џ„¦„џ„џ„¦„џ„џ„ў
„ 0 „  „  „  „A„y„„„Ќ:
„¤„џ„џ„Ё„џ„џ„©„џ„џ„Ё„џ„џ„Ё„џ„џ„Ё„¦„џ„Ё„џ„џ„Ё„џ„џ„ё „џ„џ„џ„џ„џ
„  „¤„џ„џ„џ„џ„џ„џ„џ„џ> 0-4:„{„Ђ„|„y„‰„u„ѓ„„„r „Ѓ„Ђ„r„„„Ђ„‚„Ђ„r „r „ѓ„u„{„…„~„t„…
„¤„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ„џ> 5-6:„~„p„‰„p„|„Ћ„~„p„‘ „x„p„t„u„‚„w„{„p „r „}„ѓ„u„{:
00=250, 01=500, 10=750, 11=1000
„K„Ђ„|„y„‰„u„ѓ„„„r„Ђ „Ѓ„Ђ„r„„„Ђ„‚„Ђ„r „x„p„t„p„u„„„ѓ„‘ „ѓ„|„u„t„…„ђ„‹„u„z „„„p„q„|„y„€„u„z:
„Ў„џ„џ„џ„џ„џ„џ„¦„џ„џ„џ„џ„џ„џ„џ„џ„¦„џ„џ„џ„џ„џ„џ„¦„џ„џ„џ„џ„џ„џ„џ„џ„¦„џ„џ„џ„џ„џ„џ„¦„џ„џ„џ„џ„џ„џ„џ„џ„ў
„ „K„Ђ„~„ѓ„„.„ „R„{„Ђ„‚„Ђ„ѓ„„„Ћ„ „K„Ђ„~„ѓ„„.„ „R„{„Ђ„‚„Ђ„ѓ„„„Ћ„ „K„Ђ„~„ѓ„„.„ „R„{„Ђ„‚„Ђ„ѓ„„„Ћ„ 
„Ґ„џ„џ„џ„џ„џ„џ„©„џ„џ„џ„џ„џ„џ„џ„џ„©„џ„џ„џ„џ„џ„џ„©„џ„џ„џ„џ„џ„џ„џ„џ„©„џ„џ„џ„џ„џ„џ„©„џ„џ„џ„џ„џ„џ„џ„џ„§
„  00h „  30.0 „  0Bh „  10.9 „  16h „  4.3 „ 
„  01h „  26.7 „  0Ch „  10.0 „  17h „  4.0 „ 
„  02h „  24.0 „  0Dh „  9.2 „  18h „  3.7 „ 
„  03h „  21.8 „  0Eh „  8.6 „  19h „  3.3 „ 
„  04h „  20.0 „  0Fh „  8.0 „  1Ah „  3.0 „ 
„  05h „  18.5 „  10h „  7.5 „  1Bh „  2.7 „ 
„  06h „  17.1 „  11h „  6.7 „  1Ch „  2.5 „ 
„  07h „  16.0 „  12h „  6.0 „  1Dh „  2.3 „ 
„  08h „  15.0 „  13h „  5.5 „  1Eh „  2.1 „ 
„  09h „  13.3 „  14h „  5.0 „  1Fh „  2.0 „ 
„  0Ah „  12.0 „  15h „  4.6 „  „  „ 
„¤„џ„џ„џ„џ„џ„џ„Ё„џ„џ„џ„џ„џ„џ„џ„џ„Ё„џ„џ„џ„џ„џ„џ„Ё„џ„џ„џ„џ„џ„џ„џ„џ„Ё„џ„џ„џ„џ„џ„џ„Ё„џ„џ„џ„џ„џ„џ„џ„џ„ё
0EEh „^„‡„Ђ („t„|„‘ „t„y„p„s„~„Ђ„ѓ„„„y„{„y). „P„‚„Ђ„ѓ„„„Ђ „r„Ђ„x„r„‚„p„‹„p„u„„ 0„E„Eh.
0EDh „T„Ѓ„‚„p„r„|„u„~„y„u „ѓ„r„u„„„Ђ„t„y„Ђ„t„p„}„y „{„|„p„r„y„p„„„…„‚„Ќ. „D„|„‘ „r„{„|„ђ„‰„u„~„y„‘
„y„|„y „r„Ќ„{„|„ђ„‰„u„~„y„‘ „ѓ„r„u„„„Ђ„t„y„Ђ„t„Ђ„r „Ѓ„Ђ„Љ„|„y„„„u „„„p„{„Ђ„z „q„p„z„„
„t„p„~„~„Ќ„‡:
7 6 5 4 3 2 1 0
„Ў„џ„џ„¦„џ„џ„¦„џ„џ„¦„џ„џ„¦„џ„џ„¦„џ„џ„¦„џ„џ„¦„џ„џ„ў
„ X X X X X „  „  „  „  „A„y„„„Ќ:
„¤„џ„џ„Ё„џ„џ„Ё„џ„џ„Ё„џ„џ„Ё„џ„џ„Ё„¦„џ„Ё„¦„џ„Ё„¦„џ„ё „џ„џ„џ„џ„џ
„  „  „¤„џ„џ> 0: 1 = „r„{„|„ђ„‰„y„„„Ћ ScrollLock
„  „¤„џ„џ„џ„џ„џ> 1: 1 = „r„{„|„ђ„‰„y„„„Ћ NumLock
„¤„џ„џ„џ„џ„џ„џ„џ„џ> 2: 1 = „r„{„|„ђ„‰„y„„„Ћ CapsLock
0DFh „Q„p„x„‚„u„Љ„y„„„Ћ 20-„q„y„„„Ђ„r„…„ђ „p„t„‚„u„ѓ„p„€„y„ђ.
0DDh „H„p„Ѓ„‚„u„„„y„„„Ћ 20-„q„y„„„Ђ„r„…„ђ „p„t„‚„u„ѓ„p„€„y„ђ.
0D1h „H„p„Ѓ„y„ѓ„Ћ „r „Ѓ„Ђ„‚„„ „r„Ќ„r„Ђ„t„p 8042.
0D0h „X„„„u„~„y„u „Ѓ„Ђ„‚„„„p „r„Ќ„r„Ђ„t„p 8042.
0C0h „X„„„u„~„y„u „Ѓ„Ђ„‚„„„p „r„r„Ђ„t„p 8042.
0AEh „Q„p„x„‚„u„Љ„u„~„y„u „{„|„p„r„y„p„„„…„‚„Ќ.
0ADh „H„p„Ѓ„‚„u„‹„u„~„y„u „{„|„p„r„y„p„„„…„‚„Ќ.
0ACh „X„„„u„~„y„u „O„H„T „{„Ђ„~„„„‚„Ђ„|„|„u„‚„p.
0ABh „S„u„ѓ„„ „ѓ„y„~„‡„‚„Ђ„~„y„x„p„€„y„y „y „t„p„~„~„Ќ„‡.
0AAh „B„~„…„„„‚„u„~„~„y„z „„„u„ѓ„„ „{„|„p„r„y„p„„„…„‚„Ќ.


Ответ отправлен: 16.08.2003, 22:57
Отправитель: [L2]Max


 Вопрос № 3935

Здравствуйте уважаемые Эксперты!
Если нет возможности использовать команды enter и leave (ebp используется алгоритмом), насколько законным и безопасным будет такой способ резервирования места в стеке (внутри функции в любой части активно используется стек, за исключением того, часть 2 в результате не меняет ESP, тоесть что она заPUSHила то и заPOPила):
proc GetAPIsAddr,lpDllBase,lpHash,lpCRC32Table
.lpProcsHash dd ?
.oldESP dd ?
enter
... (1)
mov [.oldESP],esp
sub esp,eax
mov [.lpProcsHash],esp
... (2)
mov esp, [.oldESP]
... (3)
return
Заранее благодарю.



Вопрос отправлен: 16.08.2003, 19:45
Отправитель: sba (sba@litech.net)

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

Отвечает Bob Johnson

Доброе время суток, sba!
В принципе, ты вполне можешь обойтись и без ebp - ведь ты всегда знаешь точное значение esp в этом месте, т.е.
proc myrpoc p1 : dword
; здесь offset p1 = esp + 4
push eax
; здесь offset p1 = esp + 8
sub esp, 10h
; offset p1 = esp + 18h
...
к тому же сохранять значение esp необязательно - если ты делаешь ровно столько pop, сколько push и потом сделаешь add esp, __, то оно вернется на начальное значение. Только esp нельзя использовать в качестве индекса при адресации:
mov eax, [esp*2] - такой команды нет.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 16.08.2003, 20:17
Отправитель: Bob Johnson


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

Приветствую Вас, sba!
Ты можешь вообще не использовать EBP для доступа к стеку.
Но EBP регистр сделан специально для высокоуровневых языков прг.
И поддерживается Ассемблером!
И лучше его использовать, но если припёпло, то
используй другой регистр.
Префикс ss: зависит от твоей программы. В win32 не нужен.
proc GetAPIsAddr
lpDllBase = 4
lpHash = 8
lpCRC32Table = 12
lpProcsHash = -4
oldESP = -8
@@len_local = 8
mov ecx, esp
sub esp, @@len_local
mov [ss:ecx.oldESP], ecx
;....... working
mov eax, [ss:ecx.lpDllBase]
add eax, [ss:ecx.lpHash]
;....... working
mov esp, [ss:ecx.oldESP]
ret
endp


Ответ отправлен: 16.08.2003, 23:11
Отправитель: Евгений Иванов


Отвечает _vt

Доброе время суток, sba!
А ты не используй в алгоритме ebp, и проблем не будет... Используй esi или edi... Ну а если твой вариант работает, то и так сойдет...

---===*** Testing E-Man 1.5 ...***===---


Ответ отправлен: 17.08.2003, 13:36
Отправитель: _vt


 Вопрос № 3936

Приветствую всех.
1) У меня мысль появилась купить Покет ПК ну и есс-но возник вопрос про ихние камни. если не ошибаюсь то PXA250 что вы думаете об этом всем.
О структуре. сильно ли отличается.
2) Начал читать одну старую книгу (откопал в библиотеке конгреса :).
на русском. об машинах на перфокартах вроде ЕС называются. интересные факты нашел. помимо абсолютно непонятного мне синтаксиса команд ("add" -> "a" etc.) так eще оказывается в байте не 8 бит, а 9 (9ый - бит нечетности, чтобы в байте всегда было нечетное кол-во бит??? зачем?); 2 байта - не слово, а полуслово, слово же - 4 байта. и т.д. дальше читать не стал все сложно и трудно написано.



Вопрос отправлен: 16.08.2003, 22:36
Отправитель: 00010010 (00010010@nm.ru)

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

Отвечает Tigran K. Kalaidjian

Доброе время суток, 12h!
2) Архитектура такая. Вы бы еще что-нибудь по-старше откопали =)... Ассемблер меняется с изменением структуры процессора и принципов работы с железом. Даже в наше время Вы можете взять 2 новеньких процессора - один от мобильника, другой от калькулятора и сильно удивиться в несоответствии машинных команд.

Приложение:

Ответ отправлен: 17.08.2003, 11:16
Отправитель: Tigran K. Kalaidjian


Отвечает Bob Johnson

Здравствуйте, 00010010!
> так eще оказывается в байте не 8 бит, а 9
Ну-ну... :) "(Am)А снится нам трава, трава у д(E7)ома... Зел(Dm6)еная, вес(E7)елая трав(Am)а..."
> 2 байта - не слово, а полуслово, слово же - 4 байта
А знаешь, вообще, что такое слово? В принципе, слово - это объем информации, которую процессор может прочитать за одно обращение к памяти (если я все правильно помню), т.е. размер слова напрямую зависит от архетектуры, а точнее - определяется ею. На х86 принято считать, что слово - это 16 бит, потому что так было на 8086. Впоследствии, несмотря на то, что теперь процессор считывает по 8 байт за раз, это так и оставили и словом все равно считается 16 бит. И ведь в ассемблере ты пишешь: dw (define word), dd (define doubleword), dq (define quadword) и т.д.
На счет 9-го бита в байте - это не совсем так, вернее совсем не так.
Байт есть, был и будет 8-битным! (хотя я знаю преподавателя, который говорил, что в байте можно представить 250 - 300 различных значений (пользуясь случаем еще раз передам привет будущим студентам 2003 года). В общем, этот 9-й бит предназначен для контроля четности байта, т.е. ты сам сказал, что он делает в байте всегда нечетное число единиц. Зачем - очень просто: если из памяти вдруг будет считан байт с четным числом единиц, то значит произошел сбой памяти и дальнейшие вычисления необходимо прекратить. Сейчас еще в hi-end системах применяют 9-ти разрядную память, а в обычных - уже нет. Видимо среднестатистическая вероятность отказа (сбоя) модуля памяти оказывается слишком низкой, чтобы беспокоиться о таких мелочах.
> 2) Начал читать одну старую книгу (откопал в библиотеке конгреса :).
На тебя ностальгия напала что-ли...

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 17.08.2003, 00:49
Отправитель: Bob Johnson


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

Приветствую Вас, 00010010!
9 бит используется для проверки чётности.
Чтобы понадёжнее хранить в памяти.
Даже сейчас некоторая память идёт с паритетом.
Насчёт байтов, слов - как хочешь назови, а так и останется 32 бита! :-)


Ответ отправлен: 16.08.2003, 23:51
Отправитель: Евгений Иванов


 Вопрос № 3937

Доброе время суток!
Что такое прерывания РCI BIOS и как ими пользоваться?
Можно ли как-то вызывать прерывания из защищенного режима?
Может кто-то знает ссылку на доки по этой теме - пищите!
Спасибо наперед!



Вопрос отправлен: 17.08.2003, 00:22
Отправитель: Madman (yo-ho@km.ru)

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

Отвечает [L2]Max

Приветствую Вас, Madman!
PCI BIOS позволяют получить доступ к информации об адресном пространстве и пространстве ввода - вывода устройств подключенных к шине PCI. Их описание дано в руководстве PhoenixBIOS User's Manual. Самих урл не помню, попробуй в яндексе.
Насчет защищенного режима , то есть точка входа с физическим адресом 0x000FFE6E, она имитирует прерывание 0x1A(собсно прерывание PCI BIOS), но если ты исп. 16- ти разрядную адресацию в защищ. то можешь спокойно пользоваться int 0x1A

Ответ отправлен: 17.08.2003, 06:57
Отправитель: [L2]Max


Отвечает Greys

Здравствуйте, Madman!
>Что такое прерывания РCI BIOS и как ими пользоваться?
Как бы тебе разъяснить попроще, ведь если ты не знаешь о прерываниях, то вряд ли знаешь...(извини опять на лирику потянуло). Ладно будем объяснять напрямую, то есть в лоб(в лоб скажешь,ты что больно,зато понятней... шуткаааааааа!).
Скажу сразу, что вызов прерываний - это вызов подпрограмм,тех же знакомых тебе процедур, представь BIOS операционной системой, которая позволяет тебе не задумаваться о работе с портами, контролерами и другими страшными словами,хотя есть и более страшные слова из ненормативной лексике. Насчет прерываний:
Представь некоторую виртуальную школу:
где как и во всех школах оценки ставят в классный журнал.
Учительница из нулевого класса(в школе, которую я на днях закончил, была так называемая нулевка) решила вызвать к доске ученика который у нее в журнале стоит первым в списке(но в нулевой позиции),(но любит училка методом научного тыка вызывать к доске), но забыла как его зовут, тогда она кричит во все горло классу: "int 1", ученики давно знают свою учительницу и понимают, что должен выйти тот кто в нулевом журнале(во...журнал тотже сегмент!),в нулевой позиции. В этом месте в журнале стоит адрес обработчика прерывания(который занимает 4 байта,пусть будет по вашему 4 веселых буковки), т.е. кто будет выполнять некоторую работу. Например,Маша (0000h:0040h-журнал:позиция) хорошо работает с экраном, так пусть и вкалывает, училке стоит только крикнуть int 10h и дать некоторые инструкции AH=0 - секретный пароль, что конкретней делать(установить видео режим);AL=номер режима и усё шеф! Вот такой вот виртуальный класс попался! Как ты наверное понял int-команда вызова прерываний, хотя если ты знаком с ДОСовскими, то проблем быть не должно.Прерывание int 10h-видео сервис биоса,INT 16h-для работы с клавиатурой и т.д.
>Можно ли как-то вызывать прерывания из защищенного режима?
Можно, но в защищенном режиме есть свои трудности, разберись пока с реальным!
>Может кто-то знает ссылку на доки по этой теме - пищите!
>слазий на http://wasm.ru/
С уважением,GREYS!

Приложение:

Ответ отправлен: 19.08.2003, 22:32
Отправитель: Greys


 Вопрос № 3938

Всем привет !
Тут кто-то про DDK спрашивал?
Вот парочка ссылок. Да простят меня эксперты.
1. Для Win98: http://download.microsoft.com/download/win98SE/Install/Gold/W98/EN-US/98DDK.EXE
Или здесь:
ftp://shelek.no-ip.com/ddk/98ddk.exe
2. Для WinME
ftp://shelek.no-ip.com/ddk/Wme_DDK.exe
3. Для WinNT4 (все сервиспаки)
ftp://shelek.no-ip.com/ddk/nt4ddk.zip
4. Образ диска для DDK Для WinXP:
http://windriver.ssarang.net/pds/DDK_XP.ISO
Или здесь:
ftp://shelek.no-ip.com/ddk/Ddk_xp.iso
5. Для Win2000
ftp://shelek.no-ip.com/ddk/2kddknly.exe
Хотя всё это можно купить на радиорынке...



Вопрос отправлен: 17.08.2003, 11:48
Отправитель: Tigran Kalaidjian

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

Отвечает Tigran K. Kalaidjian

отправил в рассылку

Ответ отправлен: 17.08.2003, 11:55
Отправитель: Tigran K. Kalaidjian


Отвечает dimka

Добрый день, Tigran Kalaidjian!
Ну спасибо!!!!!!


Ответ отправлен: 21.08.2003, 10:45
Отправитель: dimka


Отвечает _vt

Добрый день, Tigran Kalaidjian!
Скажи, пожалуйста, а где это взять, если ограничен в интернете и в городе нет "радиорынка"-в смысле практически ничего полезного по программированию найти нельзя???? :-((

---===*** Testing E-Man 1.5 ...***===---


Ответ отправлен: 17.08.2003, 13:37
Отправитель: _vt


 Вопрос № 3939

Добрый день !
В FAQ остался один вопрос, на который пока не получилось придумать/найти ответ:
--------------
Q: Что надо уметь, чтобы поступить на работу ассемблерщиком?
--------------
Хотелось бы услышать ответы экспертов, особенно Masquer'a
В архиве рассылки не получилось найти, хотя помню что этот вопрос проскакивал.
С уважением
Тигран Калайджян
2:5020/4567.24



Вопрос отправлен: 17.08.2003, 11:54
Отправитель: Tigran Kalaidjian

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

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

Здравствуйте, Tigran Kalaidjian!

  • 1. Хорошая память;
  • 2. Логически мыслить;
  • 3. Стратегически мыслить;
  • 4. Очень хорошо знать математику;
  • 5. Булева алгебра - думать ею;
  • 6. Биты, байты, системы счисления;
  • 7. Низкий уровень программирования;
  • 8. Естественно, знать Ассемблер и его директивы;
  • 9. Знать все алгоритмы по обработке информации;
  • 10. Забыть про мышь и пользоваться клавиатурой!.



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


Отвечает dimka

Доброе время суток, Tigran Kalaidjian!
Надо быть Билл Гейтсом.


Ответ отправлен: 21.08.2003, 10:47
Отправитель: dimka


Отвечает Bob Johnson

Приветствую Вас, Tigran Kalaidjian!
> Q: Что надо уметь, чтобы поступить на работу ассемблерщиком?
Я бы ответил так:
Найти контору, которой это нужно...

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 17.08.2003, 20:55
Отправитель: Bob Johnson


Отвечает masquer

Доброе время суток, Tigran Kalaidjian!
Приятно, хоть и несколько не понятно, за что такая честь :)) (btw, я ассемблерщиком не работаю :))
Мне кажется, что если кто-нибудь при найме на работу скажет, что он знает ассеблер и больше ничего, то шансы найти работу устремятся к нулю. Другое дело, если человек знает, скажем С и при этом владеет ассемблером, то преимущество он должен иметь. Хотя все зависит от поставленной задачи и приоритетов нанимателя.
Т.ч. однозначного ответа нет и не будет, слишком много областей применения и, соотв., требований.

Ответ отправлен: 18.08.2003, 11:01
Отправитель: masquer


 Вопрос № 3940

В дополнение к вопросу 3921.
Все дело в том, что мне нужно создать почтовое сообщение именно в Outlook Express ну или в крайнем случае MS Outlook 2000(из 2000-го офиса).
TheBat с его командной строкой я бы и сам с удовольствием использовал, но дело в том, что TheBat, начиная с версии 1.61 хоть и поддерживает стандарт Microsoft Secure MIME, но сообщения с вложением(например приложенный вордовский файл), подписанные цифровой подписью S/MIME нормально читаются только в том же The Bat. А это не устраивает мое руководство...
Поскольку, как считает оно, Outlook есть на каждом компьютере (или должен быть), а TheBat ещё установить нужно...
Итак, вопрос: если кто-нибудь знает ещё какие-нибудь способы создания сообщения в Outlook, поделитесь, пожалуйста...
Вариант с mailto уже не проходит, поскольку иногда нужно прикреплять файлы, а стандарт RFC 2368 и все, на которые он ссылается(насколько я понял) не поддерживает вложения.



Вопрос отправлен: 17.08.2003, 12:27
Отправитель: Alexandr (balex@mail.spbnit.ru)

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

Отвечает Tigran K. Kalaidjian

Здравствуйте, Alexandr!
Мда... А обязательно ли проект писать на ассемблере? В Delphi нужные Вам действия можно реальзовать с помощью нескольких строчек, т.к. там уже есть компоненты для работы с почтой.

Ответ отправлен: 18.08.2003, 10:30
Отправитель: Tigran K. Kalaidjian


Отвечает masquer

Добрый день, Alexandr!
Используй COM, плюс к Outlook SDK имеется (глазами, правда, не видел - нет нужды)

Ответ отправлен: 18.08.2003, 11:13
Отправитель: masquer



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

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

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

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (39)
C / C++ (31)
Perl (3)
Builder / Delphi (19)
Pascal (24)
Basic / VBA (12)
Java / JavaScript (10)
PHP (9)
Криптография (10)
WinAPI (17)
Пользователю
Windows 95/98/Me (46)
Windows NT/2000/XP (56)
"Железо" (43)
Поиск информации (25)
Администратору
Windows NT/2000/XP (28)
Linux / Unix (12)
Юристу
Гражданское право (11)
Семейное право (7)
Трудовое право (8)
КоАП (6)

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




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


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


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

В избранное