lde16 beta 18.12.04

набор команд 8086 ограничен, и мы можем с большой вероятностью предсказывать длину команды,
когда известен только ее первый байт, не разбирая строение самой команды (mod r/m).

также см. lde32 by z0mbie, with respect

; -------------

first step....

начальные сведения (debug.exe)

2AC4:0100 00FF          ADD     BH,BH
2AC4:0102 01FF          ADD     DI,DI
2AC4:0104 02FF          ADD     BH,BH
2AC4:0106 03FF          ADD     DI,DI 
2AC4:0108 04FF          ADD     AL,FF                                           
2AC4:010A 05FFFF        ADD     AX,FFFF
2AC4:010D 06            PUSH    ES
2AC4:010E 07            POP     ES
2AC4:010F 08FF          OR      BH,BH
2AC4:0111 09FF          OR      DI,DI
2AC4:0113 0AFF          OR      BH,BH                                           
2AC4:0115 0BFF          OR      DI,DI                                           
2AC4:0117 0CFF          OR      AL,FF
2AC4:0119 0DFF52        OR      AX,52FF
2AC4:011C 0E            PUSH    CS
2AC4:011D 0F            DB      0F
2xxx:01xx 10FF          ADC     BH,BH
2AC4:0120 11FF          ADC     DI,DI
2AC4:0122 12FF          ADC     BH,BH
2AC4:0124 13FF          ADC     DI,DI                                           
2AC4:0126 14FF          ADC     AL,FF                                           
2AC4:0128 15FFFF        ADC     AX,FFFF                                         
2AC4:012B 16            PUSH    SS                                              
2AC4:012C 17            POP     SS                                              
2AC4:012D 18FF          SBB     BH,BH 
2AC4:012F 19FF          SBB     DI,DI 
2AC4:0131 1AFF          SBB     BH,BH
2AC4:0133 1BFF          SBB     DI,DI 
2AC4:0135 1CFF          SBB     AL,FF
2AC4:0137 1DFFFF        SBB     AX,FFFF 
2AC4:013A 1E            PUSH    DS
2AC4:013B 1F            POP     DS
2xxx:01xx 20FF          AND     BH,BH
2xxx:01xx 21FF          AND     DI,DI
2AC4:0140 22FF          AND     BH,BH 
2AC4:0142 23FF          AND     DI,DI 
2AC4:0144 24FF          AND     AL,FF 
2AC4:0146 25FFFF        AND     AX,FFFF                                         
2AC4:0149 26            ES:                                                     
2AC4:014A 27            DAA                                                     
2AC4:014B 28FF          SUB     BH,BH
2AC4:014D 29FF          SUB     DI,DI
2AC4:014F 2AFF          SUB     BH,BH 
2AC4:0151 2BFF          SUB     DI,DI
2AC4:0153 2CFF          SUB     AL,FF
2AC4:0155 2DFFFF        SUB     AX,FFFF                                         
2AC4:0158 2E            CS:                                                     
2AC4:0159 2F            DAS                                                     
2AC4:015A 30FF          XOR     BH,BH                                           
2AC4:015C 31FF          XOR     DI,DI
2AC4:015E 32FF          XOR     BH,BH
2AC4:0160 33FF          XOR     DI,DI
2AC4:0162 34FF          XOR     AL,FF 
2AC4:0164 35FFFF        XOR     AX,FFFF
2AC4:0167 36            SS:
2AC4:0168 37            AAA
2AC4:0169 38FF          CMP     BH,BH    
2AC4:016B 39FF          CMP     DI,DI 
2AC4:016D 3AFF          CMP     BH,BH 
2AC4:016F 3BFF          CMP     DI,DI
2AC4:0171 3CFF          CMP     AL,FF
2AC4:0173 3DFFFF        CMP     AX,FFFF
2AC4:0176 3E            DS:
2AC4:0177 3F            AAS
2xxx:0100 40            INC     AX 
2xxx:0101 41            INC     CX
2xxx:0102 42            INC     DX
2xxx:0103 43            INC     BX
2xxx:0104 44            INC     SP
2xxx:0105 45            INC     BP
2xxx:0106 46            INC     SI
2xxx:0107 47            INC     DI                                              
2xxx:0108 48            DEC     AX
2xxx:0109 49            DEC     CX
2xxx:010A 4A            DEC     DX
2xxx:010B 4B            DEC     BX
2xxx:010C 4C            DEC     SP
2xxx:010D 4D            DEC     BP
2xxx:010E 4E            DEC     SI 
2xxx:010F 4F            DEC     DI 
2xxx:0110 50            PUSH    AX
2xxx:0111 51            PUSH    CX
2xxx:0112 52            PUSH    DX
2xxx:0113 53            PUSH    BX
2xxx:0114 54            PUSH    SP
2xxx:0115 55            PUSH    BP
2xxx:0116 56            PUSH    SI
2xxx:0117 57            PUSH    DI
2xxx:0118 58            POP     AX
2xxx:0119 59            POP     CX
2xxx:011A 5A            POP     DX
2xxx:011B 5B            POP     BX
2xxx:011C 5C            POP     SP
2xxx:011D 5D            POP     BP
2xxx:011E 5E            POP     SI
2xxx:011F 5F            POP     DI                                              
2xxx:0120 60            DB      60
2xxx:0121 61            DB      61
2xxx:0122 62            DB      62
2xxx:0123 63            DB      63
2xxx:0124 64            DB      64
2xxx:0125 65            DB      65                                              
2xxx:0126 66            DB      66
2xxx:0127 67            DB      67
2xxx:0128 68            DB      68
2xxx:0129 69            DB      69
2xxx:012A 6A            DB      6A
2xxx:012B 6B            DB      6B
2xxx:012C 6C            DB      6C
2xxx:012D 6D            DB      6D
2xxx:012E 6E            DB      6E  
2xxx:012F 6F            DB      6F   
2xxx:0130 70FF          JO      0131 
2xxx:0132 71FF          JNO     0133
2xxx:0134 72FF          JB      0135 
2xxx:0136 73FF          JNB     0137
2xxx:0138 74FF          JZ      0139 
2xxx:013A 75FF          JNZ     013B
2xxx:013C 76FF          JBE     013D
2xxx:013E 77FF          JA      013F  
2xxx:0140 78FF          JS      0141  
2xxx:0142 79FF          JNS     0143 
2xxx:0144 7AFF          JPE     0145 
2xxx:0146 7BFF          JPO     0147
2xxx:0148 7CFF          JL      0149 
2xxx:014A 7DFF          JGE     014B
2xxx:014C 7EFF          JLE     014D 
2xxx:014E 7FFF          JG      014F                                            
2AC4:0150 80FFFF        CMP     BH,FF                                           
2AC4:0153 81FFFFFF      CMP     DI,FFFF                                         
2AC4:0157 82FFFF        CMP     BH,FF                                           
2AC4:015A 83FFFF        CMP     DI,-01                                          
2AC4:015D 84FF          TEST    BH,BH                                           
2AC4:015F 85FF          TEST    DI,DI                                           
2AC4:0161 86FF          XCHG    BH,BH                                           
2AC4:0163 87FF          XCHG    DI,DI                                           
2AC4:0165 88FF          MOV     BH,BH                                           
2AC4:0167 89FF          MOV     DI,DI                                           
2AC4:0169 8AFF          MOV     BH,BH                                           
2AC4:016B 8BFF          MOV     DI,DI                                           
2AC4:016D 8CFF          MOV     DI,DS                                           
2AC4:016F 8DFF          LEA     DI,DI                                           
2AC4:0171 8EFF          MOV     DS,DI                                           
2AC4:0173 8FFF          POP     DI                                              
2xxx:0100 90            NOP                                                     
2xxx:0101 91            XCHG    CX,AX                                           
2xxx:0102 92            XCHG    DX,AX                                           
2xxx:0103 93            XCHG    BX,AX                                           
2xxx:0104 94            XCHG    SP,AX                                           
2xxx:0105 95            XCHG    BP,AX                                           
2xxx:0106 96            XCHG    SI,AX                                           
2xxx:0107 97            XCHG    DI,AX                                           
2xxx:0108 98            CBW                                                     
2xxx:0109 99            CWD                                                     
2xxx:010A 9AFFFFFFFF    CALL    FFFF:FFFF                                       
2xxx:010F 9B            WAIT                                                    
2xxx:0110 9C            PUSHF                                                   
2xxx:0111 9D            POPF                                                    
2xxx:0112 9E            SAHF                                                    
2xxx:0113 9F            LAHF                                                    
2xxx:0114 A0FFFF        MOV     AL,[FFFF]                                       
2xxx:0117 A1FFFF        MOV     AX,[FFFF]                                       
2xxx:011A A2FFFF        MOV     [FFFF],AL                                       
2xxx:011D A3FFFF        MOV     [FFFF],AX                                       
2xxx:0120 A4            MOVSB                                                   
2xxx:0121 A5            MOVSW                                                   
2xxx:0122 A6            CMPSB                                                   
2xxx:0123 A7            CMPSW                                                   
2xxx:0124 A8FF          TEST    AL,FF                                           
2xxx:0126 A9FFFF        TEST    AX,FFFF                                         
2xxx:0129 AA            STOSB                                                   
2xxx:012A AB            STOSW                                                   
2xxx:012B AC            LODSB                                                   
2xxx:012C AD            LODSW                                                   
2xxx:012D AE            SCASB                                                   
2xxx:012E AF            SCASW                                                   
2xxx:012F B0FF          MOV     AL,FF
2xxx:0131 B1FF          MOV     CL,FF
2xxx:0133 B2FF          MOV     DL,FF
2xxx:0135 B3FF          MOV     BL,FF
2xxx:0137 B4FF          MOV     AH,FF
2xxx:0139 B5FF          MOV     CH,FF
2xxx:013B B6FF          MOV     DH,FF
2xxx:013D B7FF          MOV     BH,FF
2xxx:013F B8FFFF        MOV     AX,FFFF
2xxx:0142 B9FFFF        MOV     CX,FFFF
2xxx:0145 BAFFFF        MOV     DX,FFFF
2xxx:0148 BBFFFF        MOV     BX,FFFF
2xxx:014B BCFFFF        MOV     SP,FFFF
2xxx:014E BDFFFF        MOV     BP,FFFF
2xxx:0151 BEFFFF        MOV     SI,FFFF 
2xxx:0154 BFFFFF        MOV     DI,FFFF 
2xxx:0100 C0            DB      C0          
2xxx:0101 C1            DB      C1          
2xxx:0102 C2FFFF        RET     FFFF      
2xxx:0105 C3            RET                   
2xxx:0106 C4FF          LES     DI,DI    
2xxx:0108 C5FF          LDS     DI,DI   
2xxx:010A C6FFFF        MOV     BH,FF 
2xxx:010D C7FFFFFF      MOV     DI,FFFF
2xxx:0111 C8            DB      C8  
2xxx:0112 C9            DB      C9     
2xxx:0113 CAFFFF        RETF    FFFF
2xxx:0116 CB            RETF       
2xxx:0117 CC            INT     3  
2xxx:0118 CDFF          INT     FF
2xxx:011A CE            INTO
2xxx:011B CF            IRET
2xxx:0100 D0FF          SAR     BH,1
2xxx:0102 D1FF          SAR     DI,1
2xxx:0104 D2FF          SAR     BH,CL
2xxx:0106 D3FF          SAR     DI,CL
2xxx:0108 D4FF          AAM     FF
2xxx:010A D5FF          AAD     FF
2xxx:010C D6            DB      D6                                              
2xxx:010D D7            XLAT                                                    
2xxx:010E D8FF                  FDIVR   ST,ST(7)                                
2xxx:0110 D900                  FLD     DWORD PTR [BX+SI]
2xxx:0112 DAFF          ESC     17,BH
2xxx:0114 DBFF          ESC     1F,DI 
2xxx:0116 DCFF                  FDIV    ST(7),ST
2xxx:0118 DDFF          ESC     2F,DI                                           
2xxx:011A DEFF                  FDIVP   ST(7),ST 
2xxx:011C DFFF          ESC     3F,DI
2AC4:011E E0FF          LOOPNZ  011F
2AC4:0120 E1FF          LOOPZ   0121
2AC4:0122 E2FF          LOOP    0123
2AC4:0124 E3FF          JCXZ    0125
2AC4:0126 E4FF          IN      AL,FF
2AC4:0128 E5FF          IN      AX,FF 
2AC4:012A E6FF          OUT     FF,AL                                           
2AC4:012C E7FF          OUT     FF,AX                                           
2AC4:012E E8FFFF        CALL    0130                                            
2AC4:0131 E9FFFF        JMP     0133                                            
2AC4:0134 EAFFFFFFFF    JMP     FFFF:FFFF                                       
2AC4:0139 EBFF          JMP     013A                                            
2AC4:013B EC            IN      AL,DX                                           
2AC4:013C ED            IN      AX,DX                                           
2AC4:013D EE            OUT     DX,AL                                           
2AC4:013E EF            OUT     DX,AX
2AC4:0100 F0            LOCK 
2AC4:0101 F1            DB      F1
2AC4:0102 F2            REPNZ
2AC4:0103 F3            REPZ 
2AC4:0104 F4            HLT 
2AC4:0105 F5            CMC
2AC4:0106 F6FF          IDIV    BH
2AC4:0108 F7FF          IDIV    DI
2AC4:010A F8            CLC 
2AC4:010B F9            STC 
2AC4:010C FA            CLI 
2AC4:010D FB            STI 
2AC4:010E FC            CLD
2AC4:010F FD            STD
2AC4:0110 FEFF          ???     BH
2AC4:0112 FFFF          ???     DI


; ------------------------------

second step.....

делаем подобие таблицы
ручками   >:)

; table
; 1 -fizst opcode
; -2 -size


00,2
01,2
02,2
03,2
04,2
05,3
06,1
07,1
08,2
09,2
0a,2
0b,2
0c,2
0d,3
0e,1
0f,1

10,2
11,2
12,2
13,2
14,2
15,3
16,1
17,1
18,2
19,2
1a,2
1b,2
1c,2
1d,3
1e,1
1f,1

20,2
21,2
22,2
23,2
24,2
25,3
26,1
27,1
28,2
29,2
2a,2
2b,2
2c,2
2d,3
2e,1
2f,1

30,2
31,2
32,2
33,2
34,2
35,3
36,1
37,1
38,2
39,2
3a,2
3b,2
3c,2
3d,3
3e,1
3f,1

40,1
41,1
42,1
43,1
44,1
45,1
46,1
47,1
48,1
49,1
4a,1
4b,1
4c,1
4d,1
4e,1
4f,1

50,1
51,1
52,1
53,1
54,1
55,1
56,1
57,1
58,1
59,1
5a,1
5b,1
5c,1
5d,1
5e,1
5f,1

60,1
61,1
62,1
63,1
64,1
65,1
66,1
67,1
68,1
69,1
6a,1
6b,1
6c,1
6d,1
6e,1
6f,1

70,2
71,2
73,2
74,2
75,2
76,2
77,2
78,2
79,2
7a,2
7b,2
7c,2
7d,2
7e,2
7f,2

80,3
81,4
82,3
83,3
84,2
85,2
86,2
87,2
88,2
89,2
8a,2
8b,2
8c,2
8d,2
8e,2
8f,2

90,1
91,1
92,1
93,1
94,1
95,1
96,1
97,1
98,1
99,1
9a,5
9b,1
9c,1
9d,1
9e,1
9f,1

a0,3
a1,3
a2,3
a3,3
a4,1
a5,1
a6,1
a7,1
a8,2
a9,3
aa,1
ab,1
ac,1
ad,1
ae,1
af,1

b0,2
b1,2
b2,2
b3,2
b4,2
b5,2
b6,2
b7,2

b8,3
b9,3
ba,3
bb,3
bc,3
bd,3
be,3
bf,3

c0,1
c1,1
c2,3
c3,1
c4,2
c5,2
c6,3
c7,4
c8,1
c9,1
ca,3
cb,1
cc,1
ce,1
cf,1

d0,2
d1,2
d2,2
d3,2
d4,2
d5,2
d6,1
d7,1
d8,2
d9,2
da,2
db,2
dc,2
dd,2
de,2
df,2

e0,2
e1,2
e2,2
e3,2
e4,2
e5,2
e6,2
e7,2


e8,3
e9,3
ea,5
eb,2
ec,1
ed,1
ee,1
ef,1

f0,1
f1,1
f2,1
f3,1
f4,1
f5,1
f6,2
f7,2
f8,1
f9,1
fa,1
fb,1
fc,1
fd,1
fe,2
ff,2


; ---------------------

step three...
вколачиваем наши изыскания в исходник

исходный файл делится на блоки, которые выводятся на консоль

tasm /w2/m2 *.asm
tlink /x/t *.obj


[cut]

; валитсо на 4-5 байтовых командах.

.model tiny
.code
.radix 16
;.186
org 0100

@suppa2:

; читаем образец по смещению cs:_buff

mov ax,3d00
lea dx,_obrazec
int 21

xchg bx,ax

mov ah,3f
;mov cx,16384d
mov cx,128d ;; <---
lea dx,_buff
int 21
mov ds:[_dlina],ax

mov ah,3e
int 21



lea si,_buff

; _dlina -> cx
push ds:[_dlina] ;;
pop cx ;;

@k22l:

;mov ax,ds:[si]
lodsb
dec si

sub ah,ah

lea di,_crunch ; no commentz
add di,ax

sub bx,bx ; counter (how much to out b4 break)
mov bl,ds:[di]

@litt:

mov al,"."
;int 29
call @i29


;mov ax,ds:[si]
;inc si

lodsb

call @byte


dec cx
jz @out

dec bx
jnz @litt

; был найден т.наз пробел
@break:
mov ax,0d0a
;int 29
call @i29
xchg ah,al
;int 29
call @i29

;loop @k22l
jmp @k22l

@out:

int 20

@i29:

push ax dx ;;
mov dl,al
mov ah,2
int 21
pop dx ax ;;
retn ;;


; вывод хексового значения.
; на входе в al значение, которое нужно принять.

@byte:

push ax bx ;;

; типа sub ah,ah
mov ah,00
mov bl,10
div bl

call @nib ;;
xchg ah,al

call @nib ;;

pop bx ax ;;
retn ;;

@nib:
cmp al,09
jbe @nib2
add al,07
; add al,20 для маленьких букв

@nib2:
add al,30
;int 29
call @i29
retn ;;

; @byte не менял
; простым текствовым компейром сравнивать


_obrazec db "1.bin",00
_dlina dw 1234

_crunch:

db 2,2,2,2,2,3,1,1 ;00
db 2,2,2,2,2,3,1,1
db 2,2,2,2,2,3,1,1 ;10
db 2,2,2,2,2,3,1,1
db 2,2,2,2,2,3,1,1 ;20
db 2,2,2,2,2,3,1,1
db 2,2,2,2,2,3,1,1 ;30
db 2,2,2,2,2,3,1,1
db 1,1,1,1,1,1,1,1 ;40
db 1,1,1,1,1,1,1,1
db 1,1,1,1,1,1,1,1 ;50
db 1,1,1,1,1,1,1,1
db 1,1,1,1,1,1,1,1 ;60
db 1,1,1,1,1,1,1,1
db 2,2,2,2,2,2,2,2 ;70
db 2,2,2,2,2,2,2,2
db 3,4,3,3,2,2,2,2 ;80
db 2,2,2,2,2,2,2,2
db 1,1,1,1,1,1,1,1 ;90
db 1,1,5,1,1,1,1,1
db 3,3,3,3,1,1,1,1 ;a0
db 2,3,1,1,1,1,1,1
db 2,2,2,2,2,2,2,2 ;b0
db 3,3,3,3,3,3,3,3
db 1,1,3,1,2,2,3,4 ;c0
db 1,1,3,1,1,2,1,1
db 2,2,2,2,2,2,1,1 ;d0
db 2,2,2,2,2,2,2,2
db 2,2,2,2,2,2,2,2 ;e0
db 3,3,5,2,1,1,1,1
db 1,1,1,1,1,1,2,2 ;f0
db 1,1,1,1,1,1,2,2



_buff:

end @suppa2

[cut]
[eof]


Хостинг от uCoz