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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2010, 21:28   #1
Syshka
Новичок
Джуниор
 
Регистрация: 11.06.2010
Сообщений: 3
Вопрос мот есть у кого (ассемблер)

добрый вечер, может у кого завалялись какие нибудь простенькие программки по следующим темам
***
1)Разработка программ с использованием цепочечных команд
***
2)Использование в программах на ассемблере процедур с параметрами. Создание и подключение внешних процедур
***
3)Создание программ, использующих макроопределения
Написать программу выводящую на экран собщение:

Практическая работа
по теме МАКРОСЫ
Ф.И.О.
используя только макрокоманды.
***
4)Разработка программ, реализующих операцию над файлами
***
5) Написать программу реализующую защиту программого продукта.Суть программы:
в директорию D:\Work копируется исполнительный файл, после этого запускается программа защищающая данный файл, после этого при перемещении этой программы в другую директорию, программа не должна запускаться.
***
6)Создание встраиваемого ассемблерного кода. Ассемблер, встроенный в программу на языке Pascal. Ассемблер, встроенный в программу на языке C

***
7)Управление таймером

***
8)Создание собственного обработчика прерываний по <CTRL>/C

***
9)Создание программ, реализующих ввод/вывод текстовой информации средствами DOS и BIOS. Работа с консолью
Syshka вне форума Ответить с цитированием
Старый 14.06.2010, 00:04   #2
zmey31313
Форумчанин
 
Регистрация: 19.11.2009
Сообщений: 155
Радость

Неа у меня нет, но учебник хороший есть, если надо пиши.
По всем вопросам связанным с Делфи или Паскаль обращайтесь, чем смогу тем и помогу.
Помог жми на весы!!!
dmi83206389@mail.ru
zmey31313 вне форума Ответить с цитированием
Старый 14.06.2010, 08:30   #3
Syshka
Новичок
Джуниор
 
Регистрация: 11.06.2010
Сообщений: 3
По умолчанию

можно и учебник)) скинь пожалуйста
Syshka вне форума Ответить с цитированием
Старый 09.01.2011, 13:16   #4
NAS1977mu
Пользователь
 
Аватар для NAS1977mu
 
Регистрация: 28.12.2010
Сообщений: 13
Хорошо Рекомендую

Посмотрите на http://it.kgsu.ru/Assembler/oglav.html, мозможно эта инфа решит часть Ваших проблем.
Оказанная помощь должна повышать рейтинг!!!
NAS1977mu вне форума Ответить с цитированием
Старый 09.01.2011, 14:19   #5
NAS1977mu
Пользователь
 
Аватар для NAS1977mu
 
Регистрация: 28.12.2010
Сообщений: 13
Хорошо Обработка цепочек

Программа выполняет следующее:
- ввод строки;
- ввод позиции в строке, до которой следует удалить все пробелы (слева);
- вывод получившейся строки.

Код:
dates SEGMENT	; Сегмент данных
message1	db	'Input text:',13,10,'$'
message2	db	'Input position:',13,10,'$'
message3	db	'Result:',13,10,'$'
err_msg		db	'Bad number entered',13,10,'$'
crlf		db	0Dh,0Ah,'$'

str_in		db	40 dup('$')
pos_del		db	2	;номер позиции, до которой удалять пробелы
str_out		db	40 dup('$')
str_pos		db	3	; максимальный размер буфера ввода
blength		db	?	; размер буфера после считывания
bcontents:			; содержимое буфера располагается за
					; концом файла
dates ENDS	

komod SEGMENT Stack	; Сегмент стека
DW 256 dup(?)		; под стек отводится 256 слов
komod ends

begin SEGMENT 		; Сегмент кода программы
assume cs:begin, ds:dates, ss:komod
start:
	mov	ax,dates
    mov	ds,ax
	mov es,ax
	
	;очистка экрана
	mov ax,3
	int 10h
	
	;ввод начальных данных
	mov	ah,9		; Функция 9 сервиса DOS:
	mov	dx,offset message1	; вывод строки с указанного
							; в ds:dx адреса до символа '$'	
	int	21h			; вывести приглашение к вводу  message1			
	mov	ah,0Ah
	mov	dx,offset str_in
	int	21h			;прочитать строку символов в буфер
	mov	ah,9
	mov	dx,offset crlf
	int	21h			; перевод строки
	
	mov	ah,9		; Функция 9 сервиса DOS:
	mov	dx,offset message2	; вывод строки с указанного
							; в ds:dx адреса до символа '$'
	int	21h			; вывести приглашение к вводу  message2
	mov	ah,0Ah	
	mov	dx,offset str_pos	
	int	21h			;прочитать строку символов в буфер
	mov	ah,9
	mov	dx,offset crlf
	int	21h			; перевод строки
	
	call wordindec	;вызов процедуры перевода введенной строки str_pos
					;в бинарный вид и проверка введенных данных
	mov pos_del,al	;присвоение переменной значения результата процедуры
	
	;создание строки результата		
	cld;				Установка флага направления в 0.		
	mov bl,0
	lea si,str_in	;загрузка поля str_in
	lea di,str_out	;загрузка поля str_out
	
	;загрузка в CL количества элементов поля str_in
	inc si
	mov cl,[si]
	inc si
	
	;если введено число больше чем количество элементов строки,
	;то уменьшаем его до количества элементов строки
	cmp cl,pos_del
	ja repsc
	mov pos_del,cl
	
	;цикл проверок и создания новой строки
repsc:
	cmp cl,0
	je exit			;переход на exit, если цепочка просмотрена полностью	
	inc bl			;текущая позиция
	dec cl			;осталось обработать элементов
	lodsb			;загрузка текущего элемента в АХ
	cmp bl,pos_del	;проверка текущей позиции
	jnb notpr		;если не ниже заданной, то наличие пробела не проверяется
	cmp ax,' '		;сравнение текущего элемента с пробелом
	jne notpr		;если пробел, 
	jmp repsc		;то перейти к обработке следующего элемента
notpr:
	stosb			;текущий элемент загрузить в переменную с результатом
					;и перейти к обработке следующего элемента
	jmp repsc	

exit:
	;вывод результата
	mov	ah,9		; Функция 9 сервиса DOS:
	mov	dx,offset message3	; вывод строки с указанного
							; в ds:dx адреса до символа '$'	
	int	21h			; вывести приглашение к вводу  message1
	mov	ah,9
	mov	dx,offset str_out
	int	21h			;вывести строку символов в буфер

	mov	ax,4C00h
	int	21h		; функция DOS "завершить программу"
	
wordindec proc		;процедура перевода введенной строки
					;в бинарный вид и проверка введенных данных
	xor	di,di		; DI = 0 - номер байта в буфере
	xor	ax,ax		; AX = 0 - текущее значение результата
	mov	cl,blength
	xor	ch,ch
	xor	bx,bx
	mov	si,cx		; SI - длина буфера
	mov	cl,10		; CL = 10, множитель для  MUL
asc2hex:			;перевод числа в ASCII-формате из буфера в бинарное число в AX
	mov	bl,byte ptr bcontents[di]
	sub	bl,'0'		; цифра=код цифры - код символа "0"
	jb	asc_error	; если код символа был меньше, чем код "0",
	cmp	bl,9		; или больше, чем "9",
	ja	asc_error	; выйти из программы с сообщением об ошибке,
	mul	cx			; иначе - умножить текущий результат на 10,
	add	ax,bx		;добавить к нему новцю цифру,
	inc	di			; увеличить счетчик
	cmp	di,si		; если счетчик+1 меньше числа символов,
	jb	asc2hex		;то продолжить (счетчик считается от нуля)
    mov dx,ax
	ret
asc_error:			;вывод сообщения об ошибке и
					;завершение программы
	mov ax,dates
	mov ds,ax
	mov	ah,9
	mov	dx,offset err_msg ;вывести сообщение об ошибке "Bad number entered"
	mov	ah,9
	int	21h		; функция DOS "вывод строки"
	mov	ax,4C00h
	int	21h		; функция DOS "завершить программу"
endp

begin ends

end	start
Оказанная помощь должна повышать рейтинг!!!

Последний раз редактировалось NAS1977mu; 09.01.2011 в 14:27.
NAS1977mu вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
У кого есть исходник ALEKS_STRELOK Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 17.03.2009 19:53
FRAPS - У кого есть??? PAVEL315 Софт 1 28.11.2007 05:32
у кого есть нармальный паскаль finch Помощь студентам 1 21.06.2007 17:38
Ошибки компиляции. У кого есть =*=|/|MM0PT@/\=*= Паскаль, Turbo Pascal, PascalABC.NET 4 02.04.2007 06:10