Опыт дизассемблирования большой .com программы [Александр Борисович Крупник] (txt) читать онлайн

Книга в формате txt! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

???? ?????????????????? ??????? .COM ?????????




?.?.???????



? ?????? ?????? ??? ??????? ?????????? ? ?????????????????? ???????
????????? (???????????? ?????????). ?? ?????? ???????? ??????????, ??
???? ?? ??? ???, ??? ???????????? ??????????? ???????????? ?????? ?????-
????????(DisDoc 2.3), ? ??? ?? ??????? ???????? ??? ??????, ??? ??? ???-
?????? ?????, ? ????? ????????? ???? ??????? ?????????? ???????????????-
????.
?????, ??? ?????, ? ?????????? ????????????????? ??????????? ???????-
?? ? ??? ??????? ??????? ???, ??? ???????????? ?????? ??? ???????????, ?
??? ????????? ?????????????? ????????? ?? ???????? ???, ??? ????. ????? ??
??? ??????? ?????????? ?? ??????? ????????? ?, ???? ? ?????????? ???? ??-
????? ????????, ??? ??????? ???????? ???????: ??????,?????????????? ?????-
????????????? ??????????, ??? ??? ???????, ??????? ?????? ????????????, ???-
?? ???????? ????? ????????, ?????? ??? ??????????????? ????? ?????? ???? ??-
????????????? ?????????.
? ?????????? ? ?????????? ?????????? ? ??? ???????, ??????? ??????????
"??????" ????? ? "???????" , ?.?. ? ?????, ??????? ?? ?????? ???? ?????????
?????????? ????????? ??? ???????????????, ?? ? ????????? ???? ????????, ???-
?? ????????????????? ???????? ?????????.



?????? DisDoc?

SOURSER - ??? ???????? ????? ???, ??? ???? ?? ????? ??? ?????? ? ?????-
????????????. ?????????, ??? ??? ??????????? ?????????????, ??????, ?? ???-
???? ???????????. ? ?????, ??? ????? ?? ???????? ????????????? SOURSER? ????-
?? ????????????. ? ???? ????????? ????? ???????????, ??? ??? ???????????????-
??? ????????? ???????? (?? 7 ??.) SOURSER ????????????????. ????? ?????????
?????? (? ???? ?????? - 58 ?? ), SOURSER ???????? ????? ???????? ?, ?? ???
??????, ?? ???? ??????? ???????????.
????? ????????????? DisDoc 2.3 ??? ??? ???? ?? ?????? ???????. ??????? ??-
????, ? ??????? ?????? ?? ?????????? ??? ? ??????? SOURSERa (?????? 3.07), ???
? ? ??????? ????????????? DisDoc 2.3. ????? ??? ?????? ????? ?????????? ??????-
??? ?????? ???? ??????????????. ? ???, ??, ??? ???? ?????? SOURSER??, ???????
?????, ? ??, ??? ????? DisDoc 2.3, ?????? ??? ?????????, ?????? ?? ????? ???-
?????? ?????. ??? ? ?????????? ?????. ? ???????? ?????? ? ?? ??? ???? ??????-
????? ??????? ???????? ???????????? ????????????? DisDoc - ?????????? ????????,
????????????, ??????? ? ?????????? ???????.
????? ?????? ??????????, ?????????? ????????????? ? ???????? ?? ????????, ????-
??? ?????? DisDoc 2.3

mov cx,WORD PTR ds:d02453 ;02430
b02430: add cx,bx ;02434
mov bx,99e7h ;02436
mov dx,WORD PTR ds:d02449 ;02439
mov al,BYTE PTR ds:d02446 ;0243d
call s383 ; ;02440
push cs ;02443
pop ds ;02444
ret ;02445
;-----------------------------------------------------
d02446 db 00 ;02446 .
d02447 db 00,00 ;02447 ..
d02449 db 00,00 ;02449 ..

? ???? ???????????? ??????? ????????, ??????? ????? ?????? ?????????? ? ?????-
??? ?????????. ????????, ???? ?? ? ???????? ?????????, ???????????? ?????????-
?????????, ?????????? ?????????? ???????? 02434, ?? ??? ???????? ??????????
add cx,bx - ?? ??? ????? ??????????! ????? ?????? ???????? ????? ? ?????????
??????. ?? ??? ????? ????? ??????, ????? ???????? ??? ????? ? ???????? ???????-
??. ????????, ????? b02430 ????? ???????? 02430, ??????? ?????? d02446 ????
???????? 02446 ? ?.?. ?? ?? ????? ????????? ? ? ?????????????. ????? ??????
???????????? ? ??????????? ??????? ??????? ????????, ??????? ????? ??? ??????-
?????? ? ???????? ?????????. ????????, ???????????? s383 ?????????? ? ????????
????????? ?? ???????? 09060. ????? ??????????? ???????? ????????? ?????????
??????????? ???????????? ? ???????? ??????????, ??? ???? ??????????? ?????????
?????????? ???????????? ????? ???? ? ??????, ???????? ?????, ???????? ????????-
?????? ? ???, ??? ???? ?? ????? ????. ??? ???????? ??????????? ???????????.
????? ???????, ??? DisDoc ????? ??????? ??????????, ? ??????? ???? ??? ???-
???, ?, ?????????????, ?????????? ???? ??? ????? ????????????? - ???? ?????.
? ????? ?????? ??????????? ??????????


??????????????? ????????


1. ???????? OFFSETa


???????????, ??? ? ??????, ??????? ????? ????cc?????? ???? ????? ????-
????:


mov ax,bx ;1
shl ax,1 ;004bc ;2
mov si,8429h ;3
add si,ax ;4
push WORD PTR [si] ;5

??? ?????????? ? ??????? si ? ??????? ??????? - ????? 8429h ??? ???????? ?????
?????? ?? ???? ?????? ????????? ???????? ????? ???????, ?? ??????? ?????, ???
??????? si ???????????? ??? ????????? ?????????. ??????, ???????????? ????????
?????? ????????? ????????? ???????:

mov ax,bx ;1
shl ax,1 ;004bc ;2
mov si,OFFSET d08429 ;3
add si,ax ;4
push WORD PTR [si] ;5

................................

d08429 db 0ff,0ff,0f6 ;8429
db 0ff,0d8,0ff,0a6,0ff,60 ;0842c .....`

????????, ????? ? ?????? ????????? ???????? - ????? ?? ???????? ????? ?? ??-
????????????? OFFSET - ????, ???????? ??, ? ?????? ???????????????? ?????????
?????? ????? ????? ?? ?? ????????? ? ?????????, ??? ?? ???. ?? ??????, ??,???
???????, ?? ?????, ????? ????????? ?????????? ??? ?????????????? ?????????????
??????, ? ????, ?????????? ? ??????? ?????? ??????????? ????? ????? ?????? ???-
??, ??? ???????? ? ????????? ????????. ????????, ??????? AND CX,0007h ???????-
?????? MASM?? 5.1 ? TASM?? 1.01 ??? 83E107 ? ???????? 3 ????a. ?? ??? ?? ??-
????? ????? ???? ????????????? ??? 81E10700 ? ???????? 4 ?????. ??-??????, ????
???? ???????? ??????????, ????????? ?? ????????? ???????????, ??? ??? ???
??????? ??????-???? ????????? ???? ????????? ???????? ? ??? "??????????".
????, OFFSET? ????????? ??????? ?????????, ?????? ?? ????????? ??? ???????????.
??????????? ?????? ?????????? ??????????. ????????? ??????????? ????? ????-
??? ???????? ? ?????? ????? ????????? ???????? ??????, ???????? ??????????????:

mov bx,9006h ;08f66
b08f75: mov WORD PTR ds:d087d0,bx ;08f75
.................................
call WORD PTR cs:d087d0 ;08fc3
......................................
;-----------------------------------------------------
push dx ;09006
call s419 ; ;09007
mov al,BYTE PTR [si] ;0900a
mov BYTE PTR [si],0ffh ;0900c
pop dx ;0900f
ret ;09010
;-----------------------------------------------------
????? ????????? ???-?? ?????? - ??? ????? 9006h ? ?????? ??????? ????????? -
???????? ??? ?????? ?????? ???????? ?? ???? ?????? ???????? ??????????, ??-
???????? ?????????????? ? ???? ????????????. ?? ??? ???????? ? ??? ??? ?????,
?????????? ? ???? ????, ???????????? ????? ????????, ??????? ????? ??????????
? ???????? ?????????, ???????????? ??????????????????. ???????? ??????????, ???
? ??????????? ????????? ?????????????? ????????? ????? ????????????, ?, ?????-
????????, 9006h - ??? ????????, ? ?? ?????. ???????? ?????? ???? ?????????
???:

mov bx,OFFSET d09006 ;08f66
......................................
;-----------------------------------------------------
d09006: push dx ;09006
......................................
ret ;09010

?????????? ??? ???? ?????? ?????????? ?????? ????????????, ? ???????
OFFSET ???????? ? ??????? ??????.

s390 proc near
..........................................................
mov ax,WORD PTR [bx+8792h] ;092c7
mov WORD PTR ds:d087d2,ax ;092cb
...........................................................
call WORD PTR cs:d087d2 ;093c8
ret ;093d4
;-----------------------------------------------------
ror ah,1 ;093d5 ;LO]-->[HI..LO]-->[HI
jb b093da ;093d7 ;Jump if < (no sign)
ret ;093d9
b093da: inc si ;093da
ret ;093db
............................................................

????? ????????, ??? ???????????? ????? 8792h, ????? ?????????? ? ???????
?? ??????????, ???????? ? ????? ?????. ???????? ??????????????? ????????, ??-
?????? ??????????????:

d08790 db 00,00,0d5,93 ;08790 ......
.............................................................

?????, ??? ???????? 08792 ????????????? ????? 0d5,93. ?????? ???????? ????????,
??? ?? ???????? 093d5 ? ???????? ????????? ?????????? ???????? ????????? ????

ror ah,1 ;093d5 !!!!!! ;LO]-->[HI..LO]-->[HI
jb b093da ;093d7 ;Jump if < (no sign)
ret ;093d9
b093da: inc si ;093da
ret ;093db

?????????????,???? ??????????? ?????? - ??? ?????????? ????????? ????? ???-
?????????. ???????????? ???????? ?????? ????????? ???:

s390 proc near
..........................................................
mov ax,WORD PTR [bx+OFFSET d08792] ;092c7
mov WORD PTR ds:d087d2,ax ;092cb
...........................................................
call WORD PTR cs:d087d2 ;093c8
ret ;093d4
;-----------------------------------------------------
d093d5: ror ah,1 ;093d5 ;LO]-->[HI..LO]-->[HI
jb b093da ;093d7 ;Jump if < (no sign)
ret ;093d9
b093da: inc si ;093da
ret ;093db
............................................................

d08790 db 00,00 ;08790 ......
d08792 dw OFFSET d093d5 ;08792

????? ? ???????? ??????? ??????????. ??? ??????, ??? ??? ??? ????? ?????-
??????????? ?????, ??? ??? ?????????????? ????????????? ? ?.?. ? ???? ? ??-
???????? ????????. ????? ????, ??? ?????????????? ????????????? ? ??? ????.
??????? ??????? ???????? ??, ??? ????????? ????? ??????????????? ????????!
??????????????????, ??? ? ??????? ???????? - ??????? ???????????. ???????
??????? ?????????? ?????? ???????????? ?? ????, ??? ??? ????????????????
??????? ???????????? ??????????????. ??? ????? ?????, ????????? ? ????????,
?? ???, ? ????????, ? ????? ???????????? ?????????? - ??????????? ??????!
???????? ???? ????? ??? ????? ?????????? ?????? ????????. ? ??????, ????-
??? ????? ????????????, ?????????? ????? ????????:

mov bx,4f71h ;0522b
b0522e: pop ax ;0522e
cmp ax,bx ;0522f
jnz b0522e ;05231 ;Jump not equal(ZF=0)
mov BYTE PTR ds:d041f4,00 ;05233
push ax ;05238
ret ;05239

.................................
call s229 ; ;04f71

????????? ??? ??? ?? ?????? - ??? ????? 4f71h - ????? ??? ????????? ?????
???????? ?? ???? ??????, ????? ??????, ??? ?????? ???? ??????? ?????????.
??????? ????????? ? ???? ???????????. ????????, ?? ????? ?????????????
?????, ???????????? ? 4f71h ? ???? ??? ?????????, ????????????? ?????????
?????. ???? ????? ????? 4f71h, ?? ??? ????? ????????????? ? ???? ? ???????-
??? ??????? ?? ????????????. ?? ????? ????, ??? ? ?? ?????, ???????? ????-
???? ???? ? ???????? ????????? ????? 4f71h. ??? ????? ?? ??????, ? ???? ???-
?? ????? ????? ???????????? s229. ??????, ????? ???????? ??????? ??????????
???????????? ? 4f71h - ??? ????????! ???????????? ???????? ?????? ?????????
???:

mov bx, OFFSET d04f71 ;0522b
b0522e: pop ax ;0522e
cmp ax,bx ;0522f
jnz b0522e ;05231 ;Jump not equal(ZF=0)
mov BYTE PTR ds:d041f4,00 ;05233
push ax ;05238
ret ;05239

.................................
d04f71: call s229 ; ;04f71


2.??? ???????? ?????? ?? ???????

????? ???????????? ?????? ?????? ? ???????. ???????? ??? ????????? ?
.COM ??????????, ??? ??? ??????????. ?????????? ??????? ??????:

pop cx ;03e56
ret ;03e57
;-----------------------------------------------------
add BYTE PTR [bx+si],al ;03e58
add BYTE PTR [bx+si],al ;03e5a
m03e5c: mov BYTE PTR ds:d05830,01 ;03e5c


? ???? ????????? ??????????? ??? ????????, ???????? ??????????:

add BYTE PTR [bx+si],al ;03e58
add BYTE PTR [bx+si],al ;03e5a

?????? ??? ?????????? ??????????? ???????? ?? ???????????? ret, ? ????? - ???-
??? m03e5c. ????, ??? ??? ?????????? ????? ???? ?????? ???????. ????? ???????-
?? ??????????? ???????? ?????? ????????? ???:

pop cx ;03e56
ret ;03e57
;-----------------------------------------------------
d03e58 dw 0 ;03e58
d03e5a db 0 ;03e5a
d03e5b db 0
m03e5c: mov BYTE PTR ds:d05830,01 ;03e5c

??? ????????? ??? ???? ??????: ?????? ? ????? ?????? ????? dw, ? ? ?????? -
db? ????? ?????????? ? ??????, ??????? ????? ????????????. ??? ????? ?????
????? ??????????:

mov si,WORD PTR ds:d03e58 ;03dd0
mov bl,BYTE PTR ds:d03e5a ;03dd4,

?????? ???????, ??? d03e58 ??????????????? ??? ?????, ? d03e5a - ??? ????.
?????????? ???? ????? ???????, ??, ??? ?? ?????, ????? ??????????? ??????.

b03f53: cmp al,05 ;03f53
jnz b03f6b ;03f55 ;Jump not equal(ZF=0)
.....................................................
ret ;03f69
;-----------------------------------------------------
add BYTE PTR [si],bh ;03f6a
push es ;03f6c
jnz b03f79 ;03f6d ;Jump not equal(ZF=0)


? ??????????? ????????? ?????? ????? b03f6b ???????????. ????? ??? ??? ?????
?????? "?????????" ??????? ?????????? add BYTE PTR [si],bh , ??????? ????-
?????? ? ???????????? ?????????, ???????????? ??????????????????, ?? ????????
03f6a. ????? ????? ????? ???? ?????? ???? - ???????? 03f6a ????????????? ????
??????, ? ?????????? ?????????? ?? ???????? 03f6b. ???????????? ???????? ???-
??? ????????? ???:

b03f53: cmp al,05 ;03f53
jnz b03f6b ;03f55 ;Jump not equal(ZF=0)
......................................................
ret ;03f69
;-----------------------------------------------------
d03f6a db 0 ;03f6a
b03f6b: cmp al,06h ;03f6b
jnz b03f79 ;03f6d ;Jump not equal(ZF=0)

???????? ????? ??????? ? ???????????? ????????? ???????? ?????. SOURSER ?????-
??? ???????? ????? ????? ????????????? ??????????. DisDoc 2.3 ? ???? ?????????
????? ???? ?????.


3. ??????????? ?? ???????????

???????????? ?? ?????????? ??????? ???????????? ????????? ???????? ????, ??-
?????? ??? ???????? ????, ? ??? ??????? ?????????????? ????????? ??? ?????-
?????????????. ? ???????? ??????? ???????? ???????? ????, ????????? ????????-
??????

s25 proc near
inc cx ;0086b
add di,bp ;0086c
adc si,00 ;0086e
add dx,si ;00871
push di ;00873
shl di,1 ;00874 ;Multiply by 2's
adc dx,00 ;00876
pop di ;00879
ret ;0087a

???? ???????? ?????????????? ?????????? ????????, ? ?????????????, ?? ?????-
??????????? ?????????. ??? ???? ? ???, ??? ??????????? ??????? ???????? ????
????????, ?? ???? ?????? ?? ??????. ???????????, ? ????????? ???? ??? ?????
?????

mov di,086bh ;007f8
......................................
mov BYTE PTR [di],4ah ;00800
mov BYTE PTR [di+07],0f1h ;00803
mov BYTE PTR [di+0ch],0d1h ;00807
......................................
ret ;00815

???.1



??? ??? di ???????????? ??? ????????? ?????????, ??? ?????? ????? ??????????
???????? 086bh ?? ??????????????? OFFSET d0086b ? ???????? ???? ?????? ????-
?? ???????????? s25:

s25 proc near
d0086b: inc cx ;0086b
..................................................

????? ??????? ??????, ??? ?????? ??????????, ??????????? ?? ???.1 ? ???????-
?????? s25. ????? ??? ???????????? ??????????????? ? ??????? TASM 1.01. ??-
?????? ??????????? ??? ????? ?????, ??? ???????? ?? ??????? 2.
41 INC CX 41 INC CX
03FD ADD DI,BP 01EF ADD DI,BP
83D600 ADC SI,0000 83D600 ADC SI,0000
03D6 ADD DX,SI 01F2 ADD DX,SI
57 PUSH DI 57 PUSH DI
D1E7 SHL DI,1 D1E7 SHL DI,1
83D200 ADC DX,0000 83D2000 ADC DX,0000
5F POP DI 5F POP DI
C3 RET C3 RET

???.2 ???.3

?? ??? ???? ? ???, ??? ???????? ????????? ???? ?????????????? ?????? ??????-
????? ? ????? ???, ?????????? ?? ??????? 3. ??? ????? ?? ????????? ????????
2 ? 3, TASM 1.01 ? ??????????? ????????? ??????????? ?????????? ADD ??-?????-
??, ? ??? ???????? ? ???????????????? ????????????. ?????????????, ?????????,
??? ???????????? ??????? ????, ?????????? ?? ???.1 (????? ???? ??????? 086bh
?? OFFSET d0086b) ?? ???????????? s25, ????????????? TASM?? (???.4) ? ????-
??????? ??????????? (???.5).

4A DEC DX 4A DEC DX
03FD ADD DI,BP 01EF ADD DI,BP
83D600 ADC SI,0000 83D600 ADC SI,0000
03F1 ADD SI,CX ;!!!! 01F1 ADD CX,SI ;!!!!
57 PUSH DI 57 PUSH DI
D1E7 SHL DI,1 D1E7 SHL DI,1
83D100 ADC CX,0000 83D100 ADC CX,0000
5F POP DI 5F POP DI
C3 RET C3 RET

???.4 ???.5

????????? ???????? 4 ? 5 ??????????, ??? ?????? ?????? ????????? ???????? ? ??-
????????? ?? ????, ????? ????????? ??????????.
??? ??????????? ?? ???? ????????, ???? ??????? ?????????? ??? ??? ?????? ??-
??? ???????, ?? ?? ????? ???????? ???? - ????????? "????????". ????? ????? ????
???????????? TASM, ????????????? s25 ?????? ????????? ???:

s25 proc near
d0086b: inc cx ;0086b
add di,bp ;0086c
adc si,00 ;0086e
db 01,0f2 ;add dx,si !!!!!! ;00871
push di ;00873
shl di,1 ;00874 ;Multiply by 2's
adc dx,00 ;00876
pop di ;00879
ret ;0087a



??????????? ? ?????? ????????????? DisDoc 2.3



? ?????????, DisDoc 2.3 ????????? ??????, ?????? ??????????, ? ?????? ???-
???, ???????? ? ???? ??????. ????? ????????? ?????? - ????????? ??????? ??????-
??????????? ???????? ?????. ?????? ? ????, ??? ??????????? ????? ?????.

1. EQU - ??? ???? ????????

? ????, ???????? ??????????????, ????? ?????????? ????? ?????????? ?????:

;
s12 proc near
d0046c equ 00046ch
cmp bx,5ah ;00465

????? ????? ?????????? d0046c equ 00046ch ? ????? ???????? ???, ?????
???????? d0046c ? ??????. ? ????? ?????? ??????? ?????? d0046c ???????????
????? ?????? ?? ?????? ??????? ????????? - ? ???????????? s321

mov ax,0040h ;06257
;
mov es,ax ;0625a
mov al,BYTE PTR es:d0046c ;0625c
sti ;06260 ;Turn ON Interrupts
b06261: cmp al,BYTE PTR es:d0046c ;06261
jz b06261 ;06266 ;Jump if equal (ZF=1)
mov al,BYTE PTR es:d0046c ;06268
dec cx ;0626c
jnz b06261 ;0626d ;Jump not equal(ZF=0)
pop ax ;0626f
out 61h,al ;06270 ;060-067:8024 keybrd contrlr
;
pop es ;06272
ret ;06273
s321 endp

???.6


??? ???? ????? ?????? ????????? ???????, ??? ????? ???? ?????????????? ?
???????? ?????? BIOSa . ?????????????, ? ??????? es ?????????? ????? 40,
?.?. es ????? ????????? ?? ????? 400 - ?????? ???? ???????. ????? ?????????
?????? - ????? ????? ?????? 046?h? ????? ????????, ??? ?? ????? ?????? ????-
????? ??????? ?????????? ?? ???????. ???? ??? ???, ?? ????????, ????????-
??? ?? ???.6, ???????? ????? - ?? ???? ???????? ?? ????? ?????????? ?? ?????-
??, ???????? ? ???????? cx. ?? ???? ??? ????????? ?????, ?? d0046c ?????? ????
????? ?? 46?h, ? ?????? 6?h! ? ?????????????, ???? ?????????? ???????????? s321
??????????, ?? ?????? ????, ??? ?????? mov al,BYTE PTR es:d0046c ? ??????
?????? ?????? mov al,6ch.
????, ????? ????????? ??? ??????, ??????????:
1. ??????? ?? ?????? ???????????? s12 ?????????? d0046c equ 00046ch
2. ?????????? ??????????? ?? ???.6 ???????? s321 ????????? ???????:

mov ax,0040h ;06257
;
mov es,ax ;0625a
mov al,BYTE PTR es:006ch ;0625c
sti ;06260 ;Turn ON Interrupts
b06261: cmp al,BYTE PTR es:006ch ;06261
jz b06261 ;06266 ;Jump if equal (ZF=1)
mov al,BYTE PTR es:006ch ;06268
dec cx ;0626c
jnz b06261 ;0626d ;Jump not equal(ZF=0)
pop ax ;0626f
out 61h,al ;06270 ;060-067:8024 keybrd contrlr
;
pop es ;06272
ret ;06273
s321 endp

?????????? ?????? ??????. ? ????, ???????? ??????????????, ??????????
????? ?????:

;
s22 proc near
d0076a equ 00076ah
d00771 equ 000771h
call s24 ; ;0074e
...............
b0076a: push cx ;0076a
call s25 ; ;0076b
call s23 ; ;0076e
pop cx ;00771
dec bx ;00772

????? ???????? ?????? d0076a ????????? ????????. ? d00771 ?????????? ? ?????
?????????:
.....................................
mov BYTE PTR ds:b0076a,51h ;0080b
mov BYTE PTR ds:d00771,59h ;00810
......................................
????? ???? ???? ??????????? ???? ???????????? s22. ??????, ?????????? ????????
d00771 ?? b00771, ???????? ???? ?????? ??????????????? ?????????? ? s22 ? ???-
???? ??????????
d0076a equ 00076ah
d00771 equ 000771h

???????????? ???????? s22 ????? ????????? ???:


;
s22 proc near
call s24 ; ;0074e
......................................................
b0076a: push cx ;0076a
call s25 ; ;0076b
call s23 ; ;0076e
b00771: pop cx ;00771
dec bx ;00772
..............................................
mov BYTE PTR ds:b0076a,51h ;0080b
mov BYTE PTR ds:b00771,59h ;00810
................................................


?????????? ??? ???? ??????. ? ?????? s32 ??????????? ??? ???????? ??????-
?????????:

;
s32 proc near
d00c1c equ 000c1ch
d00c1e equ 000c1eh

???? ?????????? ? ??????? ?? ??????????, ???????? ? ?1?, ?? ??? ???????? ?????
????????? ????, ??????? ????? ???? ?????? ???????:

.......................................
or al,BYTE PTR [bp+di] ;00c14
add WORD PTR [bx+di],ax ;00c16
add BYTE PTR [bx+si],al ;00c18
add BYTE PTR [bx+si],al ;00c1a
mov di,1306h ;00c1c
add ax,06c0h ;00c1f
......................................

???.7

?????? ????? ???????? ?????????????? d00c1c ? d00c1e ? ??????, ???????? ???-
???????????. ????? ?????? ????? ????? ????????? ????:
mov WORD PTR ds:d00c1c,ax, mov WORD PTR ds:d00c1e,ax.
??????, ?????? ????????????? ??????? ? ???, ??? ?? ????????? ?????? ? ???????
? ?? ???? ????? ?????? ??? ???????????? ????????????, equ, ???????? ? ??????
???????????? s32.
??????????? ????? ??????????? ? ?????????:
1. ?????? ?? ?????? ???????????? s32 ??? ??????????????? equ.
2. ?????????? ???? ?? ??????? 7 ????????? ???????:

d00c14 db 0a,03,01,01,00,00,00,00 ;00c14
d00c1c db 0bf,06 ;00c1c
d00c1e db 13,05,0c0,06 ;00c1e

? ?????????? ?????????? ?????? ??????????? ???????? ????:

;
s39 proc near
d0125d equ 00125dh
d0125f equ 00125fh
dec bh ;01252
jz b0124f ;01254 ;Jump if equal (ZF=1)
xor ah,ah ;01256
shl al,1 ;01258 ;Multiply by 2's
rcl ah,1 ;0125a ;CF