Сейчас на форуме: Rio (+5 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Как заменить _hread на _hwrite |
Посл.ответ | Сообщение |
|
Создано: 26 июня 2008 00:02 · Личное сообщение · #1 Люди добрые подскажите, как нужно заменить вызов одной функции kernel на другую? Имеется два куска кода. Первый: cseg04:345F lea di, [bp-46Ch] ; Load Effective Address cseg04:3463 push ss cseg04:3464 push di cseg04:3465 push 0 cseg04:3467 call @ParamStr$qm6String4Word ; ParamStr(String &,Word) cseg04:346C lea di, [bp-52h] ; Load Effective Address cseg04:346F push ss cseg04:3470 push di cseg04:3471 push 50h ; 'P' cseg04:3473 call @$basg$qm6Stringt14Byte ; operator=(String &,String &,Byte) cseg04:3478 lea di, [bp-52h] ; Load Effective Address cseg04:347B push ss cseg04:347C push di cseg04:347D push 2 cseg04:347F call @FileOpen$q6String4Word ; âèäèìî ïðîâåðêà, ââîäèëñÿ ëè ïàðîëü ðàíåå cseg04:3484 mov [bp-62h], ax cseg04:3487 cmp word ptr [bp-62h], 0 ; Compare Two Operands cseg04:348B jle short loc_11014 ; Jump if Less or Equal (ZF=1 | SF!=OF) cseg04:348D push word ptr [bp-62h] cseg04:3490 push 0FFFFh cseg04:3492 push 0FFF0h cseg04:3494 push 2 cseg04:3496 call _LLSEEK ; Call Procedure cseg04:349B push word ptr [bp-62h] cseg04:349E lea di, [bp-66h] ; Load Effective Address cseg04:34A1 push ss cseg04:34A2 push di cseg04:34A3 push 0 cseg04:34A5 push 4 cseg04:34A7 call _HWRITE ; Call Procedure Второй: cseg02:380A 270 lea di, [bp+var_16E] ; Load Effective Address cseg02:380E 270 push ss cseg02:380F 272 push di cseg02:3810 274 push 0 cseg02:3812 276 call @ParamStr$qm6String4Word ; ParamStr(String &,Word) cseg02:3817 274 lea di, [bp+var_58] ; Load Effective Address cseg02:381A 274 push ss cseg02:381B 276 push di cseg02:381C 278 push 50h ; 'P' cseg02:381E 27A call @$basg$qm6Stringt14Byte ; operator=(String &,String &,Byte) cseg02:3823 270 lea di, [bp+var_58] ; Load Effective Address cseg02:3826 270 push ss cseg02:3827 272 push di cseg02:3828 274 push 0 cseg02:382A 276 call @FileOpen$q6String4Word ; FileOpen(String,Word) cseg02:382F 270 mov [bp+var_5A], ax cseg02:3832 270 cmp [bp+var_5A], 0 ; Compare Two Operands cseg02:3836 270 jle short loc_779C ; Jump if Less or Equal (ZF=1 | SF!=OF) cseg02:3838 270 push [bp+var_5A] cseg02:383B 272 push 0FFFFh cseg02:383D 274 push 0FFF0h cseg02:383F 276 push 2 cseg02:3841 278 call _LLSEEK ; Call Procedure cseg02:3846 26E mov [bp-108], ax cseg02:3849 26E push [bp+var_5A] cseg02:384C 270 lea di, [bp+var_6] ; Load Effective Address cseg02:384F 270 push ss cseg02:3850 272 push di cseg02:3851 274 push 0 cseg02:3853 276 push 4 cseg02:3855 278 call _HREAD ; Call Procedure Вызов двух последних функций из kernel в шестнадцатиричном виде абсолютно одинаков. Мне необходимо, чтобы во втором куске вместо _HRead было _HWrite. Константы для записи в файл перед FileOpen я изменил на: cseg02:3828 274 push 2 Также подкорректировал адрес, откуда будут браться данные для записи: cseg02:384C 270 lea di, [bp+var_60] Помогите плиз! ![]() |
|
Создано: 26 июня 2008 00:42 · Личное сообщение · #2 |
|
Создано: 26 июня 2008 11:04 · Личное сообщение · #3 |
|
Создано: 26 июня 2008 19:34 · Личное сообщение · #4 |
|
Создано: 27 июня 2008 06:52 · Личное сообщение · #5 |
|
Создано: 27 июня 2008 17:03 · Личное сообщение · #6 |
![]() |
eXeL@B —› Вопросы новичков —› Как заменить _hread на _hwrite |