Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2010, 17:36   #1
ymanety
 
Регистрация: 02.06.2010
Сообщений: 6
Печаль дамп памяти

ребят есть программа работает всё норм только нужно маленькое усовершенствование не могу сделать ((((

введите имя сохраняемого файла:_!
если нет, сохранить в itog.dat и вывести на экран имя файла


если есть кто сможет попробывать сделать кину код проги!!!

((((((((((((((((((((((((((((((((((( (((((((((((((((((((((((((((((((((
Код:
CLICK               DB 'нажмите… <ENTER> для продолжения...$'
_SEG_IN	 DB 0dh, 0ah,'введите адрес сегмента в 16-ой системе счисления:$'
_OFF_IN	 DB 'Введите смещение в сегменте :$'
_rd_num	 DB 'Количество байт для чтения:$'
out_FAIL	 DB  0dh, 0ah,'распечатать в файл : y/n ? $'
error	              DB 'Ошибка повторите заново ...$'

_BASIS	 DB '-------------Дапм памяти -----------------',0dh, 0ah, '$'

TABLEHEX DB '0123456789abcdef'
	 DB '0123456789ABCDEF',	0

char_buff DB 0                   ;    временный буфер
tempstr	  DB 25	dup(0),	'$'      ;строка буфера (начальное смещение)

dump_seg  DW ?                   ; Начальный адрес сегмента памяти 
dump_off  DW ?                   ; Начальное смещение в сегменте памяти
dump_num  DW ?                 ; количество байт для чтения

file_name DB 'ITOG.dat', 0

stream	  DW 1	 ;  (t.e. by default)

new_line  DB 0dh, 0ah, '$'

lines	DB	0
Need	DB	0

;; code	part of	program
pcode:

                                  СамаПрограмма                                                                     ;

Starting:
	LEA	dx, new_line		;  адрес строки с кодами перевода на   *  new	line
	CALL	OUTPUT_STRING			; на новую строку
@rep:
	CALL	CLEARE_SCR
;----------------------------------------------------------------------------------------------------------
	MOV	dx, offset _seg_in	; запрос на ввод адреса сегмента 
	CALL	OUTPUT_STRING			; сообщение об этом
	CALL	input_hex		; ввод числа в hex формате
	JC	@error			; если ввели недопустимое число
	MOV	dump_seg, ax		;иначе запоминаем адрес сегмента 

;------------------------------------------------------------------------------------------------------------
	MOV	dx, offset _off_in	; запрос на ввод смещения сегмента 
	CALL	OUTPUT_STRING			; сообщение об этом
	CALL	input_hex		; ввод числа в hex формате
	JC	@error			; если ввели недопустимое значение
	MOV	dump_off, ax		; иначе запоминаем  адрес смещения 

;-------------------------------------------------------------------------------------------
	MOV	dx, offset _rd_num	; запрос на ввод числа вывод. байт
	CALL	OUTPUT_STRING			; сообщение об этом
	CALL	input_hex		; ввод числа в hex формате
	JC	@error			; если ввели недопустимое число
	MOV	dump_num, ax		; иначе запомнить количество байт 


	LEA	dx, out_FAIL		; запрос о пути следования дампа
	CALL	OUTPUT_STRING			; сообщение об этом
	CALL	getch			; считаем символ с клавиатуры


	CMP	al, 'Y'			; 
	JE	file_stream		;
	CMP	al, 'y'			; 
	             
	JE	file_stream		;



file_stream:
	LEA	dx, file_name		; загрузка имени файла для ввода 
	CALL	fopen			; открываем но не проверяем
	MOV	stream,	ax		;  новый номер для ввода
;------------------------------------------------------------------------------------------------------------------





;==============================================================;
;создание файла                                                                                                                  ;
; ds:dx	-  адрес  ASCII-строки с именем файла                                                               ;
; ax-тип открытия (запись)                                                                                                 ;
; returns: ax – номер файла если всё впорядке  ???????  ;
;==============================================================;
fopen	PROC
	PUSH	cx			; cx ->	стек
	MOV	ah, 3ch			; открываем файл для записи
	MOV	cx, 20h			; количество записываемых байт
	INT	21h			
	POP	cx			; стек -> cx
	RET				; выход
fopen	ENDP
;=========================;
; закрытие файйла                           ;
; ax –файловый  handler                  ;
;=========================;
fclose PROC
	PUSH	bx			; bx ->	стек
	MOV	bx, ax			; bx = ax
	MOV	ah, 3eh			; функция закрытия файла 
	INT	21h			
	POP	bx			
	RET				; выход
fclose ENDP
;=========================;
; чтение символа с консоли            ;
; return: ah - zero                               ;
;	  al - read char                       ;
;=========================;
getch  PROC
	MOV	ah, 07h			; считываем символ с клавиатуры
	INT	21h			
	XOR 	ah, ah			; ah = 0
	RET				
getch ENDP

Последний раз редактировалось ymanety; 22.12.2010 в 19:40.
ymanety вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
дамп базы данных niziriska Microsoft Office Access 1 17.10.2010 10:56
Дамп процесса Vayrus Win Api 2 04.03.2009 22:37
Дамп. Самоотчищение Advisor Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 16.12.2008 13:07
Дамп процесса Takedown Общие вопросы C/C++ 1 01.08.2008 00:19