Advanced member
Статус: Не в сети Регистрация: 12.01.2004
Билли Бонс, GReY ну запинали, сдаюсь. Вот только на классических x86 сдвиги были одними из самых быстрых операций. Но согласен, что в современным условиям это имеет мало отношения
Advanced member
Статус: Не в сети Регистрация: 12.01.2004
Билли Бонс, да, видимо что-то напутал, т.к. помнилось, что shl выполняется за один такт. Скорее всего спутал с количеством байт, которыми программируется операция
Advanced member
Статус: Не в сети Регистрация: 12.01.2004
Билли Бонс как раз для новичков нагляднее - чтобы степени двойки учили. Обратная сторона - приучает использовать сдвиги везде, где только можно. Но уж лучше так, чем семь раз делать add
Member
Статус: Не в сети Регистрация: 15.01.2006 Откуда: Минск
Вот задание
Разработать COM-программу, которая выполняет следующее:
1) открывает два файла: один на чтение, второй на запись;
2) читает содержимое 1-го файла в буфер;
3) записывает содержимое буфера в обратном порядке во 2-й файл.
Прогу надо написать (желасетьно на TASM)
Не секрет, что это лаба в универе, но у нас так класно учат - вот вам метода и как хотите так и делайте. И никакого обьяснения.
Помогоите пожалуйста!
_________________ У одних нефанатов рожи позеленели, у других рожи посинели. И только у правильных нефанатов рожи красные и довольные.
Member
Статус: Не в сети Регистрация: 12.05.2005 Откуда: Poland/Germany
TheVITALI обьяснить как программировать невозможно, только общие принципы. если ты сам не пытаешься разобраться самостоятельно, то толку не будет. никто за тебя писать целую прогу не будет, могут только с какими то вопросами помочь.
попробуй в инете поискать что-нибудь типа "уроков по асму", гугл тебе в помощь.
а так на вскидку: на http://www.firststeps.ru/ есть достаточно инфы по твоему заданию (расписано подробно, с исходниками).
handle2 dw 0 ;дескриптор файла filename2 db 'filename2' ;им¤ файла p_fname2 dd filename2 ;указатель на им¤ файла
buff db 2048 dup(0) ;буфер размером 2 б p_buff dd buff ;указатель на буфер fsize dw 0 ;длина файла .code ;org 100h start: mov ax, @data mov ds, ax ;в ds Ц адрес сегмента данных
;открываем или создаем файл xor cx, cx ;атрибуты файла - обычный файл mov bx, 2 ;доступ дл¤ чтени¤-записи mov dx, 1 ;файл существует Ц открыть его, ;иначе Ц вернуть ошибку lds si, p_fname ;указатель на им¤ файла mov ah, 6ch ;номер функции DOS int 21h ;открываем файл jnc m1 ;если файл существовал,то переход mov dx,10h ;создать файл mov ah,6ch ;номер функции DOS int 21h ;создаем файл jc exit ;выход, в случае ошибки m1: ;файл открыт успешно mov handle, ax ;сохраним дескриптор файла
;открываем или создаем файл2 xor cx, cx ;атрибуты файла - обычный файл mov bx, 2 ;доступ дл¤ чтени¤-записи mov dx, 1 ;файл существует Ц открыть его, ;иначе Ц вернуть ошибку lds si, p_fname2 ;указатель на им¤ файла mov ah, 6ch ;номер функции DOS int 21h ;открываем файл jnc m2 ;если файл существовал,то переход mov dx,10h ;создать файл mov ah,6ch ;номер функции DOS int 21h ;создаем файл jc exit ;выход, в случае ошибки m2: ;файл открыт успешно mov handle2, ax ;сохраним дескриптор файла
;определ¤ем размер файла mov ah, 42h mov bx, handle mov al, 2 ;устанавливаем файловый указатель xor cx, cx ;в конец файла xor dx, dx int 21h ;в ax - размер файла (если только mov fsize, ax ;его длина не более 65535 байт) mov ah, 42h mov bx, handle mov al, 0 ;возвращаем файловый указатель xor cx, cx ;на прежнее место (в начало) xor dx, dx int 21h ;читаем весь файл в буфер mov ah, 3fh ;функци¤ чтени¤ mov bx, handle ;дескриптор файла mov cx, fsize ;размер файла lds dx, p_buff ;адрес буфера int 21h ;читаем jc exit ;если неудача - выход mov fsize, ax ;количество прочитанных байт ;вывод содержимого буфера на экран mov ah, 40h ;записываем в mov bx, 1 ;STDOUT mov cx, fsize ;fsize байт lds dx, p_buff ;из буфера buff int 21h ;закрываем файл mov ah, 3eh mov bx, handle int 21h exit: ;выход из программы mov ah, 4ch int 21h end start
а как дальше дописать чтобы чмтало строчки в файле 1 с последней к первой и сохраняло во второ файл незнаю. И разбираться немогу - нам, студентам, надо учить ещё один язык програмирования(моделирования) gpss
Может ктонибудь может добавить пару строчек кода в мою программу?
_________________ У одних нефанатов рожи позеленели, у других рожи посинели. И только у правильных нефанатов рожи красные и довольные.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения