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

среда, 7 декабря 2011 г.

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

 
Если выпуск не отображается, вы можете прочесть его на сайте Отказаться от рекламы
  
  
А Вы уже купили подарки своим любимым?
  
  
  

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

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

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

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

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

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

Номер выпуска:1493
Дата выхода:07.12.2011, 21:30
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:187 / 63
Вопросов / ответов:1 / 1

Консультация # 184652: Здравствуйте! У меня возникли сложности с таким вопросом:Создать на диске «А» файл. Изменить дату его создания на 31 декабря 2000 года. Обработать варианты, когда дискета отсутствует при помощи INT24h. Ассемблер-Tasm.exe Исполняемый файл в формате EXE. очень надеюсь на вас=)...


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

Здравствуйте! У меня возникли сложности с таким вопросом:Создать на диске «А» файл. Изменить дату его создания на 31 декабря 2000 года. Обработать варианты, когда дискета отсутствует при помощи INT24h.
Ассемблер-Tasm.exe Исполняемый файл в формате EXE.
очень надеюсь на вас=)

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


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

Здравствуйте, Дмитрий!
Программа создает в корне дискеты файл нулевой длины test.txt
Которому тут же меняет дату создания на заданную.

Код :
 	.186			;для команд shl ax,5 code	segment	'code'		;начало сегмента кода 	assume	cs:code,ds:data,ss:stk  main	proc	 ;установим обработчик int24h, старый можно не сохранять 	push	cs 	pop	ds		;ds=cs 	lea	dx, int_24	;ds:dx - адрес обработчика 	mov	ax, 2524h 	int	21h  	mov	ax, data	;адрес сегмента данных 	mov	ds, ax		;в ds 	mov	es, ax		;в es  	lea	dx, fName	;имя файла 	mov	cx, 0		;без атрибутов 	mov	ah, 3ch		;создаем 	int	21h 	jc	CreateError	;если ошибка  	mov	bx, ax		;handle файла 	mov	ax, 5700h	;читаем дату(dx) и время файла(cx) 	int	21h 	jc	GetTimeError	;если ошибка 				;время оставляемтем же, меняем дату 	mov	ax, 2000	;год 	mov	dh, 12		;месяц 	mov	dl, 31		;день 	call	SetDate		;сформируем в DX в нужном формате 	mov	ax, 5701h	;установим дату 	int	21h 	jc	SetTimeError	;если ошибка 	lea	dx, sOk		;все отработало! Close: 	mov	ah, 3eh		;закрываем файл 	int	21h PrintMessage: 	mov	ah, 9		;сообщение из ds:dx 	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		;выход в ДОС  CreateError:			;ошибка создания 	lea	dx, sCreateError 	jmp	PrintMessage GetTimeError:			;ошибка чтения даты 	lea	dx, sGetTimeError 	jmp	Close SetTimeError:			;ошибка установки даты 	lea	dx, sGetTimeError 	jmp	Close  main	endp  ;упаковка даты в следующий формат (побитно): ;yyyyyyym mmmddddd,  ;yyyyyyy - 0-119, 0 соответствует 1980 ;mmmm    - 1-12, месяц ;ddddd   - 1-31, день ;на входе: ax - год, dh - месяц, dl - день ;упакованная дата в dx SetDate	proc 	sub	ax, 1980	;отнимаем базу 	shl	ax, 9		;сдвигаем в крайнее левое положение 	xchg	ah, dh		;dh - год на месте, ah - месяц, al = 0 	shr	ax, 3		;устанавливаем месяц в нужную позицию 	or	dx,ax		;"втыкаем" месяц на свое место 	ret SetDate	endp  int_24:				;обработка ошибок 	push	ds 	push	di 	push	si 	mov	si, data 	mov	ds, si		;сообщения в сегменте данных 	and	di, 0fh		;младшие 4 бита - номер ошибки 	shl	di, 1		;по 2 байта на адрес 	mov	si, table_errors[di] ;si - адрес сообщения 	mov	ah, 0eh		;выводим с помощью БИОС 	mov	al, 0dh		;сначала перевод строки 	int	10h 	mov	al, 0ah 	int	10h print_loop:			;выводим строку ds:si, заканчивающуюся нулем 	lodsb 	cmp	al, 0 	je	print_rc 	int	10h 	jmp	print_loop print_rc:			;добавим общую часть 	lea	si, Retry_Cancel print_rc_loop: 	lodsb 	cmp	al, 0 	je	wait_rc 	int	10h 	jmp	print_rc_loop wait_rc:			;ждем R или C 	mov	ah,0 	int	16h 	cmp	ah,13h		;скан-код клавиши R 	jne	cmp_cancel 	mov	al,1		;возвращаем код "повторить операцию" 	jmp	short jmp_iret cmp_cancel: 	cmp	ah,2eh		;скан-код клавиши C 	jne	wait_rc		;все остальное игнорируем 	mov	al,3		;возвращаем код "прервать операцию" jmp_iret: 	pop	si 	pop	di 	pop	ds 	iret  code	ends  data		segment sOk		db	0dh,0ah,'File create date is changed$' sCreateError	db	0dh,0ah,'File create error$' sGetTimeError	db	0dh,0ah,'Get time error$' sSetTimeError	db	0dh,0ah,'Set time error$' sAny		db	0dh,0ah,'Press any key$',0 fName		db	'a:\test.txt',0  ;сообщения int24h ;таблица адресов table_errors	dw	protect_disk 		dw	unknown_id 		dw	not_ready 		dw	unknown_com 		dw	crc_error 		dw	request_error 		dw	search_error 		dw	media_type 		dw	sector_not_fou 		dw	printer_error 		dw	write_fault 		dw	read_fault 		dw	general_fault 		dw	unknown_error 		dw	unknown_error 		dw	change_error ;сами сообщения protect_disk	db	'Disk protected',0 unknown_id	db	'Unknown ID subunit',0 not_ready	db	'Disk not ready',0 unknown_com	db	'Unknown command',0 crc_error	db	'CRC error',0 request_error	db	'Request error',0 search_error	db	'Search error',0 media_type	db	'Unknown disk media',0 sector_not_fou	db	'Sector not found',0 printer_error	db	'Printer error',0 write_fault	db	'Write fault error',0 read_fault	db	'Read fault error',0 general_fault	db	'General failure',0 unknown_error	db	'Unknown error',0 change_error	db	'Disk change error',0 Retry_Cancel	db	' (Retry or Cancel) ',0  data		ends  stk	segment	stack 	dw	100h dup (?) stk	ends  	end	main 

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

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


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

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

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


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

Прошлые выпуски
RFpro.ru: Ассемблер? Это просто! Учимся программировать    06 декабря 2011, 21:04
RFpro.ru: Ассемблер? Это просто! Учимся программировать    21 ноября 2011, 01:33
RFpro.ru: Ассемблер? Это просто! Учимся программировать    18 ноября 2011, 12:36

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

8 декабря 2011 отмечают:
День образования российского казначейства
День работников радио и телевидения Кыргызстана
День Конституции Узбекистана
Торжество непорочного зачатия Девы Марии
День матери в Панаме
Праздник света в Лионе

Именины: Александр, Павел, Петр, Ярослав, Василий, Виктор, Григорий, Иван, Иларион, Климент, Кузьма, Николай
 
 

Subscribe рекомендует
 
Компьютеры и интернет  →   рассылки   и   группы
  
Свое дело
В данной группе будут публиковаться идеи для открытия собственного дела. Сайт группы Работай сам.ru Присоединяйтесь!
Темы: 408   Участники: 10998
  Интернет для начинающих пользователей
Группа начинающих пользователей Интернета. Советы, статьи, инструкции новичкам. Если вы недавно подключились к Интернету и у вас на счет него есть куча ...
Темы: 2516   Участники: 10201
  Семейное право и права детей в России
Получение и обмен информацией, свободное консультирование по темам семейного права, жилищного права супругов, наследственного права, прав детей и всех аспектов правового регулирования семейных отношений и социальной политики
Темы: 26   Участники: 413
 
 
 
Подписан адрес: admin10383.deep@blogger.com
Код этой рассылки: comp.prog.assembler
Архив рассылки
Отписаться:  На сайте  Почтой
Поддержка подписчиков
Убрать рекламу
Другие рассылки этой тематики
Другие рассылки этого автора
 
Рассылка производится: Subscribe.Ru / ЗАО «Интернет-Проекты» / О компании / Политика конфиденциальности

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

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