![]() |
|
|
![]()
|
|
| kostik_16 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 23.7.2003 Репутация: нет Всего: 1 |
Помогите перевести строки на АСМ:
|
|||
|
||||
| December |
|
|||
![]() Antitheorist ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: нет Всего: 57 |
kostik_16 Дык скомпилируй и отдизассембль!
|
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Hy... для начала там наверное опечатачка появилась, что-то типа "1:" должно быть...
как понимаю - создание bat файла для удаления программы Ну а на асме все будет примерно так... .data filename db 'Тут путь файла для записи',0 fileexe db 'А суда можно запихнуть имя этого файла' line1 db '1:' line2 db 'Erase ' line3 db 'If exist ' line4 db 'Goto 1' line5 db 0dh,0ah .code mov ax,@data mov ds,ax xor ax,ax mov ah,5bh mov cx,0 ;Тут атрибуты файла можно указать mov dx,offset filename int 21h ;тут надо проверку на CF если 1 то ошибка, если 0 то в AX спецификатор файла для простоты и понятности кода опускаю mov bx,ax mov ah,40h mov cx,line2 sub cx,line1 mov dx,offset line1 int 21h ;1: mov ah,40h mov cx,line3 sub cx,line2 mov dx,offset line2 int 21h ;Erase mov ah,40h mov cx,line1 sub cx,fileexe mov dx,offset fileexe int 21h ;paramstr(0) -> %s mov ah,40h mov cx,line4 sub cx,line3 mov dx,offset line3 int 21h ;if exist mov ah,40h mov cx,line1 sub cx,fileexe mov dx,offset fileexe int 21h ;paramstr(0) -> %s mov ah,40h mov cx,line5 sub cx,line4 mov dx,offset line4 int 21h ;Goto 1 mov ah,40h mov cx,line3 sub cx,line2 mov dx,offset line2 int 21h ;Erase mov ah,40h mov cx,fileexe sub cx,filename sub cx,1 ;Вычесть 0 символ mov dx,offset filename int 21h ;[filepath] -> %s mov ah,3eh int 21h ;closefile(); ;Конечно лучше после каждого прерывания сделать проверку на CF если там 1 значит произошла ошибка. ;И ещё, тут в одной версии доса, после записи в файл он переносит курсор на слудующую строку, а в некоторых нет. Если переносить не будет, то нужно после каждой записи вставить следующее: mov ah,40h mov cx,2 mov dx,offset line5 int 21h Не говорю, что это оптимальный вариант, можно даже сказать, что это решение в лоб. Но работать должно! |
|||
|
||||
| kostik_16 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 23.7.2003 Репутация: нет Всего: 1 |
Даааа...
Может как-то попробывать через API? |
|||
|
||||
| Custodian |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 4.12.2003 Где: г. Киров Репутация: нет Всего: нет |
Товаришъ Unregistered в принципе прав, номогу предложить некоторое улудшение программы для более изящного чтения...
model small .stack 100h .data filename db 'e:\start.bat',0 fileexe db 'e:\start.exe' line1 db '1:' line2 db 'Erase ' line3 db 'If exist ' line4 db ' Goto 1' line5 db 0dh,0ah .code jmp start nextline proc mov ah,40h mov cx,2 mov dx,offset line5 int 21h ret nextline endp filewrite macro reg1,reg2 mov ah,40h mov cx,offset reg2 sub cx,offset reg1 mov dx,offset reg1 int 21h endm start: mov ax,@data mov ds,ax xor ax,ax mov ah,5bh mov cx,0 ;Тут атрибуты файла можно указать mov dx,offset filename int 21h mov bx,ax filewrite line1,line2 ;1: call nextline filewrite line2,line3 ;Erase filewrite fileexe,line1 ;paramstr(0) -> %s call nextline filewrite line3,line4 ;if exist filewrite fileexe,line1 ;paramstr(0) -> %s filewrite line4,line5 ;Goto 1 call nextline filewrite line2,line3 ;Erase mov ah,40h mov cx,offset fileexe sub cx,offset filename sub cx,1 ;Вычесть 0 символ mov dx,offset filename int 21h ;[filepath] -> %s mov ah,3eh int 21h ;closefile(); mov ax,4c00h int 21h end start Это готовый пример для простой записи в файл Ж) |
|||
|
||||
| kostik_16 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 23.7.2003 Репутация: нет Всего: 1 |
Чет тут неправильно:
mov ax, @_delta ; -> [Error] Kvalifa.pas(2138): Operand size mismatch mov ds,ax xor ax,ax mov ah,5bh mov cx,0 mov dx, offset [ebp + @filename] ; -> [Error] Kvalifa.pas(2144): Operand size mismatch int 21h Я просто вставляю этот код в Delphi. Что надо изменить, что-бы оно работало? |
|||
|
||||
| kostik_16 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 23.7.2003 Репутация: нет Всего: 1 |
Я попробывал сделать так:
оно ошибок не выдает, только не работает |
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Ха. Все примеры на асме относятся к дос. А под винд все это рухнет. Хотя ты пишешь, что "не работает"... Надо апи звать - сам же написал...
-------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| kostik_16 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 23.7.2003 Репутация: нет Всего: 1 |
Че без API не разабраться?
|
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Типа того. Это так же халявно, как и под дос. int 21h, 40h -> WriteFile, etc
-------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| kostik_16 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 23.7.2003 Репутация: нет Всего: 1 |
Какие функции мне потребуються для:
|
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
CreateFile, WriteFile, CloseHandle.
-------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| Gloomy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 7.10.2003 Где: England Репутация: нет Всего: 1 |
kostik_16
Накатал на скорую руку, код получился жутко неоптимизированный, но должен работать
Это сообщение отредактировал(а) Gloomy - 9.1.2004, 00:11 |
|||
|
||||
![]()
|
| Правила форума "Asm: Общие вопросы" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |