Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.12;
Скачать: CL | DM;

Вниз

Hello world в ассме   Найти похожие ветки 

 
ArtemESC ©   (2006-02-18 22:52) [0]

Доброго времени суток...
Помогите, пожалуйста, сообразить код для masm 6.11.
         Любое использвание прерываний исключается...

Вот код - конечно неправильный.

;for masm 6.11
title example for boot
.model small
.code
   main proc
    mov ax, @data
    mov ds, ax
    mov bx, offset s
    mov cx, len
    xor ax, ax
   J:
    mov [0B800h: ax], [bx] ; Здесь возникает ошибка: - "псевдоассемблерная" строка -
                           ;незнаю как её реализовать...
    inc ax
    inc bx
    loop J
    L: jmp L        
  main endp
.data
s  db "Hello world!!!"
len = ($ - s)
end main


 
Джо ©   (2006-02-18 22:54) [1]

Вообще подход неправильный. В видео память должна писать не сама строка, а по схеме: цвет/символ/цвет/символ.


 
ArtemESC ©   (2006-02-18 22:59) [2]

>>Джо ©   (18.02.06 22:54) [1]
       Точно, код не совсе корректный, а вообще как это сделать?


 
Nick Denry ©   (2006-02-18 23:00) [3]

А вообще нуже код для DOS или не обязательно?


 
ArtemESC ©   (2006-02-18 23:04) [4]

>>Nick Denry ©   (18.02.06 23:00) [3]

Нужен код для boot, а вообще даже для BIOS...


 
kaZaNoVa ©   (2006-02-18 23:06) [5]

; #########################################################################

     .386
     .model flat, stdcall
     option casemap :none   ; case sensitive

; #########################################################################

     include \masm32\include\windows.inc
     include \masm32\include\user32.inc
     include \masm32\include\kernel32.inc

     includelib \masm32\lib\user32.lib
     includelib \masm32\lib\kernel32.lib

; #########################################################################
.code

start:

   jmp @F
     szDlgTitle    db "MASM 32",0
;      szMsg         db "Min Proga",13,10,"Гы :)",0
      szMsg         db "Min Proga",0
   @@:

   push MB_OK
   push offset szDlgTitle
   push offset szMsg
   push 0
   call MessageBox
   push 0
   call ExitProcess

   ; --------------------------------------------------------
   ; The following are the same function calls using MASM
   ; "invoke" syntax. It is clearer code, it is type checked
   ; against a function prototype and it is less error prone.
   ; --------------------------------------------------------

   ; invoke MessageBox,0,ADDR szMsg,ADDR szDlgTitle,MB_OK
   ; invoke ExitProcess,0

end start


компилять:
@echo off

if exist minimum.obj del minimum.obj
if exist minimum.exe del minimum.exe

\masm32\bin\ml /c /coff /nologo minimum.asm
\masm32\bin\Link /SUBSYSTEM:WINDOWS /MERGE:.rdata=.text minimum.obj > nul

dir minimum.*

pause


 
Джо ©   (2006-02-18 23:07) [6]

> [2] ArtemESC ©   (18.02.06 22:59)
>       Точно, код не совсе корректный, а вообще как это
> сделать?

Я давно на ассемблере не писал, боюсь облажаться. Подожди "зубров", подскажут.
Вообще, кажется, можно сделать так:
PUSH DS
MOV AX, B800h
MOV DS, AX
XOR BX, BX
MOV CX, [код буквы]
MOV [BX,CX]
POP DS

Кстати, я ошибся, сначала следует символ, затем атрибут.


 
Джо ©   (2006-02-18 23:08) [7]

> [5] kaZaNoVa ©   (18.02.06 23:06)

Причем сдесь MessageBox из WiAPI к boot-сектору?!


 
Джо ©   (2006-02-18 23:09) [8]

> MOV [BX,CX]

Тьху, MOV [BX],CX


 
ArtemESC ©   (2006-02-18 23:10) [9]

>>kaZaNoVa ©   (18.02.06 23:06) [5]
Молодец, долго писал? Спасибо конечно, но [4].


 
kaZaNoVa ©   (2006-02-18 23:10) [10]

Джо ©   (18.02.06 23:08) [7]
сорри, ошибся, думал нужно для Windows (когда писал [4] еще не видел)


 
ArtemESC ©   (2006-02-18 23:13) [11]

>>Джо ©   (18.02.06 23:07) [6]
Похоже, сейчас посмотрю...


 
Ученик чародея ©   (2006-02-18 23:32) [12]

Int 10H
это графическое прерывание BIOS, вот через него и выводи.


 
defunct ©   (2006-02-19 00:48) [13]

; Процедура выводит AsciiZ строку, адрес
; которой помещается в DS:Si, с атрибутом - Ah
; на экран в позицию (Y,X) = (Dh,DL)
Out_AsciiZ_on_screen:
 Call Load_Location_Adress
Read_Next_Sumbol:
 LodsB
 Or  AL,AL
 Jz  Exit_Out_AsciiZ
 StosW
 Jmp Read_Next_Sumbol
Exit_Out_AsciiZ:
 Ret

Load_Location_Adress:
 Mov  Di,Ax
 Mov  Ax,0B800H
 Mov  Es,Ax

 Mov  Ax,80*2
 Mul  Dh
 Shl  Dx,1
 Add  AL,DL
 Adc  Ah,0
 Xchg Ax,Di   ; ES:Di - адрес на экране
 Ret


 
ArtemESC ©   (2006-02-19 14:50) [14]

Вот последняя модификация, с учетом все замечаний, не работает:

;for masm 6.11
title example for boot
.model small
.code
   main proc
    mov  ax,   @data
    mov  ds,   ax
    mov  bx,   offset s
    mov  cx,   len
    xor  bp,   bp
   J:
     mov  al, byte ptr [bx]
     push ds    
     mov  dx,   0B800h
     mov  ds,   dx
     mov  ah,   01Fh  
     mov  [bp], ax
     pop  ds
     inc  bx
     inc  bp
     loop J
    L: jmp L        
  main endp
.data
s  db "Hello world!!!"
len = ($ - s)
end main


 
Хинт ©   (2006-02-19 14:59) [15]

Вот вывод строки Hello World двумя способами (запись в видео буффер и используя прерывания BIOS). Выводит строку сверху вниз (буквы в столбец) и при этом изменяется только цвет букв, а фон остается прежним. Если такой код устраивает, могу написать сокращенный вариант (вывод в строку с заданными параметрами атрибутов).

CSEG Segment
assume CS:CSEG,DS:CSEG,ES:CSEG,SS:CSEG
org 100h

Start:
call Video
call Bios
int 20h

Video proc
mov ax,0B800h
mov es,ax
mov di,0
mov cx,len
xor si,si

l1:
mov ax,es:[di]
mov al,msg[si]
and ah,11110000b
add ah,00001010b
mov es:[di],ax
add di,160
inc si
loop l1

ret
Video endp

Bios proc
xor si,si
xor bh,bh
mov cx,len
mov dl,2
mov dh,0

l2:
mov ah,2
int 10h

mov ah,8
int 10h

mov bl,ah
and bl,11110000b
add bl,00001110b
mov ah,9
mov al,msg[si]
push cx
mov cx,1
int 10h
pop cx
inc si
inc dh
loop l2

ret
Bios endp

msg db "Hello World",01h
len equ $-msg

CSEG ends
end Start


 
Чародей ©   (2006-02-19 16:27) [16]


> mov  ax,   @data
>     mov  ds,   ax
>     mov  bx,   offset s
>     mov  cx,   len
>     xor  bp,   bp
>    J:
>      mov  al, byte ptr [bx]
>      push ds    
>      mov  dx,   0B800h
>      mov  ds,   dx
>      mov  ah,   01Fh  
>      mov  [bp], ax
>      pop  ds


Аресацию рекомендуется вести через es, так как ты переопределяешь сегмент собственных данных, в т.ч строки.
...
    mov  al, byte ptr [bx]
    push es  ;??  
    mov  dx,   0B800h
    mov  es,   dx
    mov  ah,   01Fh  
    mov  es:[bp], ax
    pop  es  ;??
...


 
Defunct ©   (2006-02-19 16:31) [17]

ArtemESC ©   (19.02.06 14:50) [14]

вы функцию [13] попробуйте. это рабочая функция как раз применялась в загрузчике.

s db  "hello world!", 0

и masm засуньте подальше по возможности.
tasm гораздо лучше.


 
kaZaNoVa ©   (2006-02-19 16:38) [18]

Defunct ©   (19.02.06 16:31) [17]
и masm засуньте подальше по возможности.
tasm гораздо лучше.

чем это?
имхо наоборот


 
Defunct ©   (2006-02-19 16:40) [19]

да всем, вплоть до более свободного(развязного) синтаксиса и многопроходной оптимизации кода транслятором.


 
Defunct ©   (2006-02-19 16:46) [20]

Чародей ©   (19.02.06 16:27) [16]

О Боже мой! нахрена адрпесовать es через bp?


 
ArtemESC ©   (2006-02-19 16:55) [21]

Я понял, что я никак не могу правильно расчитать адрес строки,
     Bios загружает же 1-ый сектор по адресу 0x7C00, а адрес
        строки вычисяется на этапе трансляции - как мне его
              получить?


 
Defunct ©   (2006-02-19 16:57) [22]

ArtemESC ©   (19.02.06 16:55) [21]

очень просто. -100h.


 
Defunct ©   (2006-02-19 17:00) [23]

или так:

Start:
 Call $+3
 Pop  Ax
 Sub  Ax,3
 Mov  Si,Ax

 Push Cs Ax

 Mov  Ax,07400h
 Mov  Es,Ax
 Push Ax
 Mov  Di,100h
 Mov  Cx,OffSet Segment_End
 Rep  MovsB

 Mov  Ax,OffSet Entry_Point
 Push Ax
 RetF

Entry_Point:


 
Defunct ©   (2006-02-19 17:32) [24]

в общем, вот пример кода загзузчика под tasm, ориентированный под DOS.
писал его очень давно, поэтому код мне самому не очень нравится.
создается com файл, который просто помещается в hdd MBR только так чтобы не запопроть таблицы разделов, либо в boot дискетки.

CodeS Segment Byte
 Assume CS:Codes
 Org 100h

.386

Start:
 Call $+3
 Pop  Ax
 Sub  Ax,3
 Mov  Si,Ax
 And  Ax,0FF00h

 Push Cs Ax

 Mov  Ax,5000h
 Mov  Es,Ax
 Push Ax
 Mov  Di,100h
 Mov  Cx,OffSet Segment_End
 Rep  MovsB

 Mov  Ax,OffSet Entry_Point
 Push Ax
 RetF

Entry_Point:
 Xor  Ax,Ax
 Mov  Es,Ax
 Push Cs
 Pop  Ds

 Mov  Di,32
 Push Dword Ptr ES:[Di]
 Pop  DWord Ptr DS:[OffSet Int08_Chain]
 Push Cs
 Push OffSet Int08_Handler
 Pop  DWord Ptr ES:[Di]
 Add  Di,(21h-8h)*4
 Push DWord Ptr ES:[Di]
 Pop  DWord Ptr DS:[OffSet Int21h_Start]

 STI
 Mov  Bp,SP
 Les  Bx,[Bp]

 Mov  Ax,0201h
 Mov  Cx,4F01h
 Mov  Dx,0100h
 Int  13h

 RetF

; Обработчик прерывания таймера
Int08_Handler:
 PushF
 Db 09Ah
Int08_Chain DD ?

 PushA
 Push DS Es

 Push Cs
 Pop  Ds

; Проверка на наличие операционной системы

 Les  Di,Int21h_Address
 Mov  EAx,ES:[Di]
 Cmp  EAx,Int21h_Start
 Jz   I8_Normal
 Cmp  EAx,1000000h
 Ja   I8_Normal

 Mov  Ah,4Eh
 Mov  Si,OffSet MSG_02
 Call Out_String

 Push Cs
 Push OffSet Int21h_Handler

 Pop  DWord Ptr Int21h_Start

 Les  Di,Int21h_Address
 Mov  EAx,Int21h_Start
 Xchg ES:[Di],EAx
 Mov  Int21h_Chain,EAx

 Jmp  I8_Exit

I8_Normal:
 Mov  Ah,4Eh
 Mov  Si,OffSet MSG_01
 Call Out_String

I8_Exit:
 Pop  Es Ds
 PopA

 IRet

; Временный обработчик Int21h (для однократного монтажа)
Int21h_Handler:
 PushAD
 Push Ds Es
 Push Cs
 Pop  Ds

 Dec  FAI21
 Jnz  I21_Exit

;;;; Загрузка файла драйвера
 Mov  Ah,48h
 Mov  Bx,200h           ; 200h * 16 байт памяти для драйвера
 Call Int21h_Emu

 Push Ax
 Push 100h              ; В стеке адрес сегмента памяти
 Pop  DWord Ptr DS:[Drv_Location]

 Mov  Dx,OffSet SS_101
 Mov  Ax,3D02h
 Call Int21h_Emu
 Xchg Ax,Bx              ; Не помешает проверить на ошибку (CF=1)

 Lds  Dx,Drv_Location
 Mov  Ah,3Fh
 Mov  Cx,99h * 16
 Call Int21h_Emu

 Mov  Ah,3Eh
 Call Int21h_Emu         ; Закрыть файл драйвера

; Тут драйвер загружен

 Les  Di,Int21h_Address
 Push DWord Ptr CS:[Drv_Location]
 Push DWord Ptr CS:[Int21h_Chain]
 Pop  DWord Ptr DS:[104h]
 Pop  Dword Ptr ES:[Di]

 Mov  Ax,Ds
 Dec  Ax
 Mov  Ds,Ax
 Mov  Word Ptr DS:[1],08h

;;; Тут снимаем процедуру слежения Int08_Handler
 Mov  EAx,CS:Int08_Chain
 Mov  ES:[08*4],EAx

I21_Exit:
 Pop  Es Ds
 PopAD
 Jmp  DWord Ptr CS:[OffSet Int21h_Chain]

; Процедура аналог команды Int 21h
Int21h_Emu:
 PushF
 Db   9Ah
Int21h_Chain DD ?
 Ret

; Вывод строки в верхний левый угол экрана
; Параметры: Si (в DS) - адрес AsciiZ строки
;            Ah - атрибут
Out_String:
 Push ES Di
 Mov  Di,0B800h
 Mov  Es,Di
 Xor  Di,Di
OS_Load_Symbol:
 LodsB
 Or   AL,AL
 Jz   OS_Exit
 StosW
 Jmp  OS_Load_Symbol
OS_Exit:
 Pop  Di Es
 Ret

FAI21  DB 02
SS_101 DB "ss.drv",0
MSG_01 DB "Program title",0
MSG_02 DB "OS Detected! Hooking vectors",0

Int21h_Address DD 21h*4
Int21H_Start   DD ?
Drv_Location   DD ?

Segment_End:

Codes EndS
     End Start


 
Defunct ©   (2006-02-19 17:50) [25]

вот еще пример, самомодификация boot дискетки.
компилируем в com, запускаем, в boot дискетки заносится код вывода строки на экран и при загрузки с дискетки будет выводить строку.

CodeS Segment Word
 Assume CS:CodeS
 Org 100h

Start:
 Mov  Ax,0201h
 Mov  Cx,1h
 Mov  Dx,0h
 Mov  Bx,OffSet Buffer
 Push Bx
 Int  13h

 Mov  Ax,Word Ptr DS:[Buffer]
 Mov  Ax,020EBh
 Mov  Word Ptr DS:[Buffer],Ax

 Mov  Si,OffSet Loader
 Mov  Di,OffSet Buffer + 22h
 Mov  Cx,OffSet LoaderEnd - OffSet Loader
 Rep  MovsB

 Mov  Ax,0301h
 Mov  Cx,01h
 Mov  Dx,0h
 Pop  Bx
 Int  13h

 Ret

Loader:
 Call Next
Next:
 Mov  Ax,03h
 Int  10h

 Mov  Ax,160
 Mul  Dh
 Add  AL,DL
 Adc  Ah,0

 Mov  Di,Ax
 Mov  Ax,0B800h
 Mov  ES,Ax

 Pop  Si
 Add  Si,OffSet Str1 - OffSet Next
 Push Cs
 Pop  Ds

 Mov  Ah,2Bh
L1:
 LodsB
 Or   AL,AL
 Jz   Exit_OutPut
 StosW
 Jmp  L1
Exit_OutPut:
 Mov  Ah,0
 Int  16h
 Int  19h
 Ret

Str1 Db "Boot-sector is modified by defunct",0

LoaderEnd:

Buffer DB 512 Dup(?)

CodeS EndS
 End Start


 
ArtemESC ©   (2006-02-19 19:24) [26]

>>Defunct ©  
         Спасибо... Я не совсем понял [22], [23]...
           Вопрос остается открытым.


 
Kerk ©   (2006-02-19 19:27) [27]

ArtemESC ©   (19.02.06 19:24) [26]
0x7C00


ДОС загружает COM-программу по адресу 100h, загрузчик БИОС по 7C00h. Ну и пересчитывай смещения данных исходя из этих знаний.


 
ArtemESC ©   (2006-02-19 19:27) [28]

Возник глупый вопрос:
0x7C00 - это сегмент, или смещение с сегментом 0?


 
Джо ©   (2006-02-19 19:35) [29]

> [28] ArtemESC ©   (19.02.06 19:27)
> Возник глупый вопрос:
> 0x7C00 - это сегмент, или смещение с сегментом 0?

Можешь думать о нем как о  0x7C00:0x0000 :)


 
GuAV ©   (2006-02-19 19:42) [30]


> 0x7C00:0x0000

Нет.
0x07C0:0x0000 или 0x0000:0x7C00 .


 
Джо ©   (2006-02-19 19:44) [31]

> [30] GuAV ©   (19.02.06 19:42)

Да, скопипастил и забыл разряд сместить, спасибо.


 
ArtemESC ©   (2006-02-19 20:01) [32]

GuAV ©   (19.02.06 19:42) [30]
не понял...


Вот последняя моя нерабочая модификация с учетом замечаний:

;for masm 6.11
title example for boot
.model small
.code
   main proc
     mov  ax, 07C00h    
     mov  ds, ax        
     mov  bx, offset s  
     mov  cx, len      
     xor  bp, bp        
   J:                  
     mov  al, ds: [bx]  
     mov  dx, 0B800h  
     mov  es, dx        
     mov  ah, 01Fh    
     mov  es: [bp], ax  
     inc  bx            
     add  bp, 2          
     loop J            
     L: jmp L          
     s  db "Hello world!!!"        
   main endp
len = ($ - s)
end main


 
Джо ©   (2006-02-19 20:03) [33]

> [32] ArtemESC ©   (19.02.06 20:01)

Послушай, в Сети ПОЛНО исходников всяческих бут-секторов, с подробнейшими комментариями. Откуда такое настойчивое желание писать что-то "вслепую", не зная ассемблера?


 
Defunct ©   (2006-02-19 20:13) [34]

> ArtemESC ©   (19.02.06 19:24) [26]

По поводу -100h вам уже пояснили. Второй же способ предполагает релокацию в другую область памяти (мне так было нужно), т.к. 07C0:0000 адрес нестабильный и загрузчик затирается кодом загружаемой ОС. Поэтому в [23] первым делом код загрузчика перемещаелся в выбранный мной сегмент и производится прыжек по новому адресу с учетом смещения на +100h, т.о. не нарушая смещений созданных транслятором.

Если вам необязательно держать загрузчик в памяти в момент загрузки ОС, тогда можно поступить проще. Сделать базовый прыжек в ту же точку на со смещенным на 10h сегментом. Например так:

 mov ax, cs
 sub  ax, 10h
 push ax
 push EntryPoint
 retf
EntryPoint:  


 
Defunct ©   (2006-02-19 20:15) [35]

пардон, поспешил:

Start:
 mov ax, cs
 sub  ax, 10h
 push ax
 mov  ax, offset EntryPoint
 add  ax, 100h
 push ax
 retf
EntryPoint:


 
Defunct ©   (2006-02-19 20:16) [36]

блин.. в [34] все правильно, извиняюсь за каламбур.


 
ArtemESC ©   (2006-02-19 20:18) [37]

>>Джо ©   (19.02.06 20:03) [33]
>>Сети ПОЛНО исходников всяческих бут-секторов
   Честно говоря искал - все что нашел привело к еще
             большим вопросам...

>>Откуда такое настойчивое желание писать что-то "вслепую", не зная >>ассемблера?
      Надоело копить "теорию" -
     почитал книжки, статьи, имею некоторый опыт в Windows с асм-ом
 - на фига мне все ето... Хочу что-то сделать - нужна практика...etc


 
Defunct ©   (2006-02-19 20:24) [38]

ArtemESC ©   (19.02.06 20:18) [37]

ну так разобрались или нет?


 
ArtemESC ©   (2006-02-19 20:40) [39]

>>Defunct ©   (19.02.06 20:24) [38]
Да!! Спасибо всем,
           вот код кому интересно:

;for masm 6.11
title example for boot
.model small
.code
   main proc
     mov  ax, 07Ch    
     mov  ds, ax        
     mov  bx, offset s  
     mov  cx, len      
     xor  bp, bp        
   J:                  
     mov  al, ds: [bx]  
     mov  dx, 0B800h  
     mov  es, dx        
     mov  ah, 01Fh    
     mov  es: [bp], ax  
     inc  bx            
     add  bp, 2          
     loop J            
     L: jmp L          
     s  db "Hello world!!!"        
   main endp
len = ($ - s)
end main


 
Defunct ©   (2006-02-19 20:47) [40]

ArtemESC ©   (19.02.06 20:40) [39]

ззз bp используется не по назначению.. уже отмечал в [20]..
сделайте хотя бы так:

    mov  ax, 07Ch    
    mov  ds, ax        
    mov  si, offset s  
    mov  cx, len      
    mov  di, 0B800h  
    mov  es, di
    xor   di, di
  J:      
    lodsb
    stosw            
    loop J            
    L: jmp L          

s  db "Hello world!!!"


 
Чародей ©   (2006-02-19 22:35) [41]


> ззз bp используется не по назначению

И какое же такое назначение у bp?, что за предрассудки??


 
kaZaNoVa ©   (2006-02-19 22:50) [42]

а как компилять и юзать сабж?))


 
ArtemESC ©   (2006-02-19 23:56) [43]

kaZaNoVa ©   (19.02.06 22:50) [42]
1) Компилировать masm-ом
2) Вырезать код с данными из exe-шника
{может можно скомпить просто бинарный файл - но я незнаю как}
3) Дальше набить им Boot дискеты
{В связи с малостью размера - я сделал это вручную,
         прямо с первого байта первого сектора (Делал это я DskPatch-ем),
    Главное что-бы первый сектор имел последнии два байта: 55 AA - то
  есть загрузочный}
4)Перезагружаем PC, устанавливаем в BIOS в качестве загрузочного -   Floppy-к.
5)После POST BIOS-a должно появится Hello World в левом верхнем углу...


 
Kerk ©   (2006-02-20 00:02) [44]

ArtemESC ©   (19.02.06 23:56) [43]
1) Компилировать masm-ом
2) Вырезать код с данными из exe-шника


Лучше
1) Выбросить masm, взять tasm
2) Компилировать com-файл


 
ArtemESC ©   (2006-02-20 00:06) [45]

>>Kerk ©   (20.02.06 00:02) [44]
Согласись com-файл это еще не конечный продукт..


 
Kerk ©   (2006-02-20 00:12) [46]

ArtemESC ©   (20.02.06 0:06) [45]
Согласись com-файл это еще не конечный продукт..


Именно конечный. Берешь его и записываешь в бут-сектор как есть.


 
Чародей ©   (2006-02-20 00:20) [47]


> Согласись com-файл это еще не конечный продукт..

Если откроешь com в любом Disasm"е то увидишь что код идет с первого байта, без заголовков


 
Defunct ©   (2006-02-20 00:36) [48]

Чародей ©   (19.02.06 22:35) [41]

никаких предрассудков, bp - поумолчанию адресует ss.
bx, si, di - ds
es:di - для адресации destination в строковых командах

код получится эффективнее (без префиксов сегмента) если использовать сегментные регистры с сопоставленными им  по назначению.

es:[bp] это такой же дурной тон в ассемблере как использование goto в паскале.

ArtemESC ©   (20.02.06 00:06) [45]
COM это конечный продукт, который можно непосредственно записывать в boot. Честно говоря я уже паражаюсь вашему упортсву игнорирования всех моих рекомендаций и примеров..


 
Vendict ©   (2006-02-20 15:57) [49]

ArtemESC ©   (19.02.06 20:18) [37]
Честно говоря искал - все что нашел привело к еще
большим вопросам...

Здесь был ?
http://www.citforum.ru/programming/digest/realhello.shtml


 
Игорь Шевченко ©   (2006-02-20 17:11) [50]

ArtemESC ©   (19.02.06 20:18) [37]


> Надоело копить "теорию" -
>      почитал книжки, статьи, имею некоторый опыт в Windows
> с асм-ом
>  - на фига мне все ето...


Ну не в коня корм, бывает...


 
VirEx ©   (2006-02-20 20:25) [51]


>  [47] Чародей ©   (20.02.06 00:20)
> Если откроешь com в любом Disasm"е то увидишь что код идет
> с первого байта, без заголовков

ну блин это же не PE! это COM, "исполняемый файл образа памяти"



Страницы: 1 2 вся ветка

Текущий архив: 2006.03.12;
Скачать: CL | DM;

Наверх




Память: 0.63 MB
Время: 0.044 c
11-1121017425
Serg777
2005-07-10 21:43
2006.03.12
WS_POPUP и ListBox = постоянная перерисовка


2-1139935979
smus811
2006-02-14 19:52
2006.03.12
Поиск по BLOB ам


1-1137717371
kostan
2006-01-20 03:36
2006.03.12
Ошибка - прозрачная панель при установке темы Windows XP


15-1139869651
Piter
2006-02-14 01:27
2006.03.12
HDTV фильмы...


15-1140045550
Диззайнер
2006-02-16 02:19
2006.03.12
Как можно подключить к компу ломпочки и управлять ими?