能力值:
( LV2,RANK:10 )
|
-
-
2 楼
把代码都贴出来。这里的bx应该是你前面打开的文件句柄 。现在传到这里来了而已。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
public start
seg009:0CF2 start:
seg009:0CF2 BF C3 63 mov di, seg seg042
seg009:0CF5 8B 36 02 00 mov si, ds:2
seg009:0CF9 2B F7 sub si, di
seg009:0CFB 81 FE 00 10 cmp si, 1000h
seg009:0CFF 72 03 jb short loc_31A04 ;
seg009:0D01 BE 00 10 mov si, 1000h
seg009:0D04
seg009:0D04 loc_31A04: ; CODE XREF: seg009:0CFFj
seg009:0D04 FA cli
seg009:0D05 8E D7 mov ss, di
seg009:0D07 assume ss:seg042
seg009:0D07 81 C4 CE DF add sp, 0DFCEh
seg009:0D0B FB sti
seg009:0D0C 73 03 jnb short loc_31A11 =============>跳转1
seg009:0D0E E9 56 01 jmp near ptr aStackOverflowD+3Fh
loc_31A11: ; CODE XREF: seg009:0D0Cj
seg009:0D11 81 E4 FE FF and sp, 0FFFEh
seg009:0D15 36 89 26 AC CA mov ss:word_706DC, sp
seg009:0D1A 36 89 26 AA CA mov ss:word_706DA, sp
seg009:0D1F 8B C6 mov ax, si
seg009:0D21 B1 04 mov cl, 4
seg009:0D23 D3 E0 shl ax, cl
seg009:0D25 48 dec ax
seg009:0D26 36 A3 A8 CA mov ss:word_706D8, ax
seg009:0D2A B4 30 mov ah, 30h
seg009:0D2C CD 21 int 21h ; DOS - GET DOS VERSION
seg009:0D2C ; Return: AL = major version number (00h for DOS 1.x)
seg009:0D2E 36 A3 A8 C6 mov ss:word_702D8, ax
seg009:0D32 3C 02 cmp al, 2
seg009:0D34 73 2A jnb short loc_31A60 ===========〉跳转2
loc_31A60: ; CODE XREF: seg009:0D34j
seg009:0D60 03 F7 add si, di
seg009:0D62 89 36 02 00 mov word_30D02, si
seg009:0D66 8C C3 mov bx, es
seg009:0D68 2B DE sub bx, si
seg009:0D6A F7 DB neg bx
seg009:0D6C B4 4A mov ah, 4Ah
seg009:0D6E CD 21 int 21h ; DOS - 2+ - ADJUST MEMORY BLOCK SIZE (SETBLOCK)
seg009:0D6E ; ES = segment address of block to change
seg009:0D6E ; BX = new size in paragraphs
seg009:0D70 36 8C 1E 9E C6 mov ss:word_702CE, ds
seg009:0D75 8B 36 2C 00 mov si, word ptr loc_30D2B+1
seg009:0D79 1E push ds
seg009:0D7A 16 push ss
seg009:0D7B B8 00 35 mov ax, 3500h
seg009:0D7E CD 21 int 21h ; DOS - 2+ - GET INTERRUPT VECTOR
seg009:0D7E ; AL = interrupt number
seg009:0D7E ; Return: ES:BX = value of interrupt vector
seg009:0D80 36 89 1E A4 CA mov ss:word_706D4, bx
seg009:0D85 36 8C 06 A6 CA mov ss:word_706D6, es
seg009:0D8A 0E push cs
seg009:0D8B 1F pop ds
seg009:0D8C B8 00 25 mov ax, 2500h
seg009:0D8F BA 82 0E mov dx, 0E82h
seg009:0D92 CD 21 int 21h ; DOS - SET INTERRUPT VECTOR
seg009:0D92 ; AL = interrupt number
seg009:0D92 ; DS:DX = new vector to be used for specified interrupt
seg009:0D94 36 8B 0E 90 D1 mov cx, word ptr ss:off_70DBE+2
seg009:0D99 E3 22 jcxz short loc_31ABD
seg009:0D9B 36 C5 06 92 D1 lds ax, ss:off_70DC2
seg009:0DA0 assume ds:nothing
seg009:0DA0 8C DA mov dx, ds
seg009:0DA2 33 DB xor bx, bx
seg009:0DA4 36 FF 1E 8E D1 call ss:off_70DBE
seg009:0DA9 73 03 jnb short loc_31AAE
seg009:0DAB E9 DB 00 jmp loc_31B89 ============〉跳转3
loc_31B89: ; CODE XREF: seg009:0DABj
seg009:0E89 B1 1D mov cl, 1Dh
seg009:0E8B BA 4A 0E mov dx, 0E4Ah
seg009:0E8E EB DC jmp short WriteToFile1
WriteToFile1: ; CODE XREF: seg009:0E87j
seg009:0E6C ; seg009:0E8Ej
seg009:0E6C 32 ED xor ch, ch
seg009:0E6E 0E push cs
seg009:0E6F 1F pop ds
seg009:0E70 assume ds:seg009
seg009:0E70 BB 02 00 mov bx, 2
seg009:0E73 B4 40 mov ah, 40h
seg009:0E75 CD 21 int 21h ; DOS - 2+ - WRITE TO FILE WITH HANDLE
seg009:0E75 ; BX = file handle, CX = number of bytes to write, DS:DX -> buffer
seg009:0E77 16 push ss
seg009:0E78 1F pop ds
seg009:0E79 assume ds:seg042
seg009:0E79 B8 FF 00 mov ax, 0FFh
seg009:0E7C 50 push ax
seg009:0E7D 9A B7 0B D0 30 call far ptr sub_318B7
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
http://bbs.pediy.com/showthread.php?t=92911
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
PC中断大全看看
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
怪不得找不到打开2号文件句枘的代码,原来2号文件句柄是系统定义好的,就是显示器啊....
|
能力值:
(RANK: )
|
-
-
7 楼
0 - stdin
1 - stdout
2 - stderr
|