WMmail.ru - сервис почтовых рассылок

понедельник, 14 ноября 2011 г.

RFpro.ru: Ассемблер? Это просто! Учимся программировать

 
Если выпуск не отображается, вы можете прочесть его на сайте Отказаться от рекламы
  
  
Лучшая защита в КРИЗИС - товарные АКТИВЫ и ДЕНЬГИ в надежных валютах
  
  
  

  Мои подписки      Мои группы      Мои новости     
        Автор 
Калашников О.А.
      
  
Компьютеры и интернет   →   Софт   →   Программирование   →   RFpro.ru: Ассемблер? Это просто! Учимся программировать
  
RFpro.ru: Ассемблер? Это просто! Учимся программировать
 
 

Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Коцюрбенко Алексей aka Жерар
Статус: Профессор
Рейтинг: 2927
• повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2560
• повысить рейтинг »
Абаянцев Юрий Леонидович aka Ayl
Статус: Профессионал
Рейтинг: 2106
• повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Assembler (Ассемблер)

Номер выпуска:1488
Дата выхода:14.11.2011, 20:30
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:189 / 61
Вопросов / ответов:1 / 1

Консультация # 184413: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Задание: Создать файл на съемном диске, открыть его для чтения и попытаться записать строку символов. Обработать ошибку при помощи INT24h и вывести на экран сообщение "Файл доступен для чтения". Надеюсь на вашу помощь...


Консультация # 184413:

Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
Задание: Создать файл на съемном диске, открыть его для чтения и попытаться записать строку символов. Обработать ошибку при помощи INT24h и вывести на экран сообщение "Файл доступен для чтения". Надеюсь на вашу помощь

Дата отправки: 09.11.2011, 19:56
Вопрос задал: Ermak (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Лысков Игорь Витальевич (Старший модератор):

Здравствуйте, Ermak!
Вот такая получилась программа. Используется анализ ошибки. Прерывание 24h для данной задачи неприменимо.
Я добавил еще кое-что:
1) проверяем, есть ли нужный файл и с каким атрибутом
2) проверяем, какая ошибка
Не забудьте задать имя диска своей флешки в пути файла...
Смотрите, если что не так или непонятно, милости просим в мини-форум

Код :
code	segment	'code'		;начало сегмента кода 	assume	cs:code,ds:data,ss:stk  main	proc	 	mov	ax, data	;адрес сегмента данных 	mov	ds, ax		;в ds 	mov	es, ax		;в es  	lea	dx, sName	;имя файла 	mov	ax, 4300h	;прочитаем его атрибут 	int	21h 	jc	AttrErr		;есть ошибка, смотрим какая 	test	cl, 1		;файл есть, смотрим атрибут Read-Only 	jnz	OpenReadOnlyFile;установлен? идем на открытие на запись  	mov	cx, 1		;нет атрибута Read-Only, установим! 	mov	ax, 4301h 	int	21h 	jnc	OpenReadOnlyFile;установился? идем на открытие на запись AttrErr:			;ошибка! 	cmp	ax, 2		;ошибка "файл не найден"? 	jne	CreateError	;если нет, то на вывод сообщения, что файл создать невозможно! 				 CreateReadOnlyFile:		;файл, всего лишь, не найден 	lea	dx, sName	;создаем новый  	mov	cx, 1		; с атрибутом Read-Only 	mov	ah, 3ch 	int	21h 	jnc	CreateOk	;создался? закрываем и заново открываем на запись  CreateError:			;файл создать невозможно 	lea	dx, sCrErr	;(например, не вставлена флешка!) 	mov	ah, 9 	int	21h 	jmp	PrintAny  CreateOk:			;файл создался 	mov	bx, ax 	mov	ah, 3eh		;закрываем 	int	21h  OpenReadOnlyFile:		;открываем на запись 	lea	dx, sName 	mov	ax, 3d01h 	int	21h 	mov	bx, ax		;описатель файла 	jnc	WriteToFile	;а "вдруг" не будет ошибки?      	lea	dx, sOpErr	;мы обязательно попадем на ошибку ax=5 ("Нет доступа") 	jmp	PrintMessage	;выводим сообщение, что запись невозможна  WriteToFile:			;запись в файл     	lea	dx, sString	;сюда мы никогда не попадем! 	mov	cx, lString 	mov	ah, 40h 	int	21h 	jc	WriteError	;с проверкой на ошибку  	lea	dx, sWrOk 	jmp	CloseFile WriteError: 	lea	dx, sWrErr  CloseFile:			;закрывам файл 	mov	ah, 3eh 	int	21h  PrintMessage:			;вывод сообщения из ds:[dx] 	mov	ah, 9 	int	21h  PrintAny: 	lea	dx, sAny	;press any key 	mov	ah, 9 	int	21h  	mov	ah, 0 	int	16h		;ждем any key  	mov	ax, 4c00h 	int	21h		;выход в ДОС  main	endp  code	ends  data	segment ;имя файла, поставить имя диска флешки !!!!!!!!!!!! sName	db	"f:\test.txt",0 ;невозможно создать файл, например, путь не найден (флешка не вставлена) sCrErr	db	"It's impossible to create a file",0dh,0ah,"$" ;невозможно записать в файл (что хотели, то и получили) sOpErr	db	"It's impossible to write a file",0dh,0ah,"$" ;сообщения при записи (для полноты) sWrErr	db	"Record error",0dh,0ah,"$" sWrOk	db	"Record is ok",0dh,0ah,"$" ;чтобы окно сразу не закрывалось sAny	db	"Press any key$" ;строка, которую будем писать в файл sString	db	"String" ;длина строки lString	equ	$-sString data	ends  stk	segment	stack 	dw	100h dup (?) stk	ends  	end	main 

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 11.11.2011, 16:24

5
Спасибо за помощь!
-----
Дата оценки: 13.11.2011, 22:24

Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


 
 
Комментировать выпуск
     В избранное

Прошлые выпуски
RFpro.ru: Ассемблер? Это просто! Учимся программировать    09 ноября 2011, 14:34
RFpro.ru: Ассемблер? Это просто! Учимся программировать    05 ноября 2011, 06:33
RFpro.ru: Ассемблер? Это просто! Учимся программировать    04 ноября 2011, 01:39

Все выпуски рассылки
 
 

Subscribe рекомендует
 
Компьютеры и интернет  →   рассылки   и   группы
  
Новинки Компьютерных Игр
Обзоры последних игровых новинок. Лень покупать и листать игровые журналы? Не интересно толкаться в магазинах с играми? Не хочется ломать глаза, читая описание игры на обложке компакт-диска? Подпишитесь на рассылку!
Подписчиков: 27310
  Постройте свое будущее
В жизни есть важное и неважное. Важно то, что вы хотите чего-то достичь. Неважно то, что ... (можете написать сами). Важно то, что вы действительно можете сами изменить свою жизнь. Ваше будущее - в ваших руках!
Подписчиков: 164
  FTP-сервер Serv-U. Тонкости работы популярного сервера.
Я помогу Вам организовать стабильно работающий в локальной сети файловый архив на платформе FTP-серера Serv-U. Познакомлю с особенностями рабты, вместе изучим тонкости ведения логов, настройки и работы FTP-сервера.
Подписчиков: 437
 
 
 
Подписан адрес: admin10383.deep@blogger.com
Код этой рассылки: comp.prog.assembler
Архив рассылки
Отписаться:  На сайте  Почтой
Поддержка подписчиков
Убрать рекламу
Другие рассылки этой тематики
Другие рассылки этого автора
 
Рассылка производится: Subscribe.Ru / ЗАО «Интернет-Проекты» / О компании / Политика конфиденциальности

Комментариев нет:

Отправить комментарий