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

суббота, 28 мая 2016 г.

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

 
Если выпуск не отображается, вы можете прочесть его на сайте
  

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

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

Лучшие эксперты в разделе

Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 513
• повысить рейтинг »
Куликов Роман Евгеньевич
Статус: 1-й класс
Рейтинг: 0
• повысить рейтинг »
Козлова Ольга Александровна
Статус: 1-й класс
Рейтинг: 0
• повысить рейтинг »

• Assembler

Номер выпуска:1614
Дата выхода:28.05.2016, 20:51
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:23 / 8
Вопросов / ответов:1 / 1

Консультация # 189436: Уважаемые эксперты! Пожалуйста, помогите составить программу на на assembler'e: Требуется: "Разработать подпрограмму, которая подсчитывает, сколько раз за-данный символ встречается в строке. Разработать программу, которая вводит с клавиатуры строку и число N и выдаёт список символов, которые встречаются в ...

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

Уважаемые эксперты! Пожалуйста, помогите составить программу на на assembler'e:

Требуется: "Разработать подпрограмму, которая подсчитывает, сколько раз за-данный символ встречается в строке. Разработать программу, которая вводит с клавиатуры строку и число N и выдаёт список символов, которые встречаются в строке не менее N раз."

Использование в emu8086 - assembler and microprocessor emulator 0.03
Желательно, делать комментарии к строкам.

Дата отправки: 18.05.2016, 20:34
Вопрос задал: haustow_2012 (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


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

Здравствуйте, haustow_2012!
Вот Вам программа

Код (Assembler) :: выделить код
  ;Разработать подпрограмму, которая подсчитывает,   ;сколько раз заданный символ встречается в строке.   ;Разработать программу, которая вводит с клавиатуры   ;строку и число N и выдаёт список символов,   ;которые встречаются в строке не менее N раз  data  		segment   sEnterString	db	0ah,"Enter string: $"  sEnterSymbol	db	0ah,"Enter symbol: $"  sEnterNumber	db	0ah,"Enter number: $"  sResult		db	0ah,"Result: $"  ;для ввода строки  max		db	128	;максимальный размер  len		db	0	;реальная длина строки  string		db	128 dup(0) ;сама строка, в конце 0dh  N		db	0	;вводимое число  data 		ends     _stack 	segment stack 'stack'  dw 	128 dup(?) 		;стек  _stack 	ends     assume cs:code, ds:data, ss:_stack   code 	segment     start:  	mov	ax, data  	mov	ds, ax		;настроим сегмент данных    	call	GetNumber	;вводим число < 256  	mov	N, al		;сохраним  	  	call	GetString	;вводим строку  	  	call	PrintCounts	;считаем символы и выводим    	mov	al, 0dh		;перевод строки  	int	29h  	mov	al, 0ah  	int	29h  	  	mov	ah, 0		;ждем нажатие на клавишу  	int	16h  	  	mov	ax, 4c00h	;выход  	int	21h  	  GetNumber:			;вводим число < 256  	lea	dx, sEnterNumber  	mov	ah, 9  	int	21h		;приглашение  	  	lea	dx, max  	mov	ah, 0ah  	int	21h		;вводим строку  	  	mov	bx, 10		;bl = 10 - основание с.с.,   				;bh = 0  - наше число  	lea	si, string	;введенная числовая строка   GetNumber_loop:  	lodsb			;очередной символ  	cmp	al, 0dh		;в конце 0dh  	je	GetNumber_ret  	sub	al, '0'		;превратим символ в число  	cmp	al, 9  	ja	GetNumber	;если не цифр, то на повтор ввода!  	xchg	al, bh		;al = старшие разряды, bh = новый разряд  	mul	bl		;ax = al * 10  	cmp	ah, 0		;больше 255?  	jne	GetNumber	;на повтор ввода  	add	bh, al		;bh - новое значение числа  	jc	GetNumber	;> 255 - на повтор ввода  	jmp	GetNumber_loop	;продолжаем  GetNumber_ret:  	mov	al, bh		;вернем число в al  	ret    GetString:			;ввод строки  	lea	dx, sEnterString  	mov	ah, 9  	int	21h  	  	lea	dx, max  	mov	ah, 0ah  	int	21h  	ret  	  SearchSymbol:			;поиск вхождения в строке string символа al  	lea	di, string	;адрес строки  	mov	ah, 0		;счетчик  SearchSymbol_loop:  	cmp	byte ptr [di], 0dh	;конец строки?  	je	SearchSymbol_ret  	cmp	al, [di]	;сравниваем  	jne	SearchSymbol_next  	inc	ah		;считаем одинаковые  	mov	byte ptr [di], 0  ;обнулим встреченные!   				   ;чтобы не искать еще раз!  SearchSymbol_next:  	inc	di		;на следующий адрес  	jmp	SearchSymbol_loop  SearchSymbol_ret:  	ret  	  PrintCounts:			;поиск и вывод найденных символов  	lea	dx, sResult	;выведем сообщение  	mov	ah, 9  	int	21h    	lea	si, string	;адрес строки  PrintCounts_loop:  	lodsb			;очередной символ  	cmp	al, 0dh		;конец строки?  	je	PrintCounts_ret  	cmp	al, 0		;0 пропускаем  	je	PrintCounts_loop  	call	SearchSymbol	;считаем  	cmp	ah, N		;сравним с числом N  	jb	PrintCounts_loop  	int 	29h		;выведем, если >= N  	jmp	PrintCounts_loop  PrintCounts_ret:  	ret  	  code 	ends	  	end	start  

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

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


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

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

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

 
     Прошлые выпуски
RFpro.ru: Ассемблер? Это просто! Учимся программироватьRFpro.ru: Ассемблер? Это просто! Учимся программироватьRFpro.ru: Ассемблер? Это просто! Учимся программироватьВсе выпуски рассылки
 
 
Subscribe.Ru / АО «Интернет-Проекты» / О компании / Политика конфиденциальности

среда, 25 мая 2016 г.

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

 
Если выпуск не отображается, вы можете прочесть его на сайте
  

  
TT 15S1 white TT 15S1 white
Купить за 140649 руб. Подробнее...

  DP-300F black DP-300F black
Купить за 26990 руб. Подробнее...

  SP-300HG (высота 76 см) SP-300HG (высота 76 см)
Купить за 10600 руб. Подробнее...

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

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

Лучшие эксперты в разделе

Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 474
• повысить рейтинг »
Куликов Роман Евгеньевич
Статус: 1-й класс
Рейтинг: 0
• повысить рейтинг »
Козлова Ольга Александровна
Статус: 1-й класс
Рейтинг: 0
• повысить рейтинг »

• Assembler

Номер выпуска:1613
Дата выхода:25.05.2016, 18:21
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:23 / 8
Вопросов / ответов:1 / 1

Консультация # 189448: Язык Lisp. 1) Написать функцию возведения числа X в степень Y.
(defun power (x y)  	(cond  	((= y 0) 1)  		(t   		(* x (power x (- y 1)))  		)
...

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

Язык Lisp.

1) Написать функцию возведения числа X в степень Y.

(defun power (x y)  	(cond  	((= y 0) 1)  		(t   		(* x (power x (- y 1)))  		)  	)  )


2) Вычислить значение функции y=10/(1+x), где x?[0..20] и изменяется с шагом h=0.5, все полученные значения хранить в списке.

(defun func (x)  	(setq y (/ 10 (+ 1 x)))  	(cond  	((= x 20) (list x y))  		(t  		(cons (list x y) (func (+ x 0.5)))   		)  	)   )


>> loop for x in (func 4) do (print x)
3) Написать функцию удаления из списка элемента с указанным
номером.

(defun kill# (a b)  	(cond  		((= b 0) (cdr a))  		((atom a) a)  		(t  		(cons (car a) (kill# (cdr a) (- b 1)))  		)  	)  )


4) Написать функцию удаления из списка первого встреченного
элемента, соответствующего указанному значению.


(defun killf (a key)  	(cond  	((atom a) a)  	((= key (car a)) (cdr a))  		(t  		(cons (car a) (killf (cdr a) key))  		)  	)  )


Может кто-то объяснитЬ, что мы тут делаем в каждой строке?

Дата отправки: 20.05.2016, 09:58
Вопрос задал: Посетитель - 399158 (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Зенченко Константин Николаевич (Модератор):

Здравствуйте, Посетитель - 399158!

Опишем используемые функции:

DEFUNопределяет функцию пользователя
ATOMпредикат возвращает истину, если переменная является атомом
CARфункция возвращает голову списка
CDRфункция возвращает хвост списка
CONSфункция присоединяет голову к хвосту списка
CONDфункция ветвления возвращает результат, если сработает соответсвующее условие
Tпоследняя строка функции ветвления, срабатывает, если не сработало ни одно условие верления
=функция сравнивает переменную с прерменной или значением
+ - * /математичиские функции сложения, вычитания, умножения и деления


(defun power (x y) = определяем функцию пользователя     (cond = ветвление вычислительного процесса     ((= y 0) 1) = проверяем равна ли переменная Y нулю, т.е. если степень равна нулю возвращается 1        (t = выполнить следующую строку в любом случае        (* x (power x (- y 1))) = рекурсивно вызываем функцию с измененной степенью и полученный результат умножаем с переменной        )     )  )


(defun func (x)     (setq y (/ 10 (+ 1 x))) = вычисляем текущее значение переменной     (cond     ((= x 20) (list x y)) = возвращаем список из переменной и значения        (t        (cons (list x y) (func (+ x 0.5)))  = соединяем ренее полученный список с текущим        )     )   )


(defun kill# (a b)     (cond        ((= b 0) (cdr a)) = если переменная В равна нулю возвращается хвост списка        ((atom a) a) = проверяется является ли А атомом, т.е. пустой ли список        (t        (cons (car a) (kill# (cdr a) (- b 1))) = востанавливаем список, без уже вычеркнутого элемента        )     )  )


(defun killf (a key)     (cond     ((atom a) a)     ((= key (car a)) (cdr a)) = проверяется, является ли голова списка нужным элементом        (t        (cons (car a) (killf (cdr a) key))        )     )  )


Удачи!

Консультировал: Зенченко Константин Николаевич (Модератор)
Дата отправки: 23.05.2016, 12:35
Рейтинг ответа:

НЕ одобряю +1 одобряю!


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

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

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

 
     Прошлые выпуски
RFpro.ru: Ассемблер? Это просто! Учимся программироватьRFpro.ru: Ассемблер? Это просто! Учимся программироватьRFpro.ru: Ассемблер? Это просто! Учимся программироватьВсе выпуски рассылки
 
 
Subscribe.Ru / АО «Интернет-Проекты» / О компании / Политика конфиденциальности

вторник, 24 мая 2016 г.

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

 
Если выпуск не отображается, вы можете прочесть его на сайте
  

  
Stylus 370 Black Stylus 370 Black
Купить за 49900 руб. Подробнее...

  Trio AL-BG Trio AL-BG
Купить за 30000 руб. Подробнее...

  The ORCHID 1.0m The ORCHID 1.0m
Купить за 34444 руб. Подробнее...

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

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

Лучшие эксперты в разделе

Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 488
• повысить рейтинг »
Куликов Роман Евгеньевич
Статус: 1-й класс
Рейтинг: 0
• повысить рейтинг »
Козлова Ольга Александровна
Статус: 1-й класс
Рейтинг: 0
• повысить рейтинг »

• Assembler

Номер выпуска:1612
Дата выхода:24.05.2016, 17:51
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:23 / 8
Вопросов / ответов:1 / 1

Консультация # 189441: Здравствуйте! У меня возникли сложности с таким вопросом: Здравствуйте, вот у меня код неправильно выдает результат, нужно Определить номер максимального числа.
...

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

Здравствуйте! У меня возникли сложности с таким вопросом:
Здравствуйте, вот у меня код неправильно выдает результат, нужно Определить номер максимального числа.

  RD #90  WR R1  RD #4  WR R2  CALL M  WR R7  RD #100  WR R1  RD #4  WR R2  CALL M  WR R8  RD #110  WR R1  RD #4  WR R2  CALL M  WR R9  ADD R8  ADD R7  DIV #3  OUT  HLT    M:  RD @R1  WR R4  MOV R3,R1  JMP L1  L2:     RD @R1+  WR R5  SUB R4  JS L1   MOV R4,R5  MOV R3,R1   L1: JRNZ R2,L2  RD R3    RET  

Заранее спасибо.

Дата отправки: 19.05.2016, 17:18
Вопрос задал: lileay (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


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

Здравствуйте, lileay!
Вот мое решение...

Код (Assembler) :: выделить код
  RD #90  WR R1  RD #4  WR R2  CALL M  SBI #90  WR R6  RD #100  WR R1  RD #4  WR R2  CALL M  SBI #100  ADD R6  WR R6  RD #110  WR R1  RD #4  WR R2  CALL M  SBI #110  ADD R6  DIV #3  OUT  HLT  M: RD @R1  WR R5  JMP L3  L2: RD @R1  WR R5  SUB R4  JS L1   L3: MOV R4,R5  MOV R3,R1  L1: RD R1  ADI #1  WR R1   JRNZ R2,L2  RD R3  RET  

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

5
нет комментария
-----
Дата оценки: 19.05.2016, 21:27

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

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


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

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

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

 
     Прошлые выпуски
RFpro.ru: Ассемблер? Это просто! Учимся программироватьRFpro.ru: Ассемблер? Это просто! Учимся программироватьRFpro.ru: Ассемблер? Это просто! Учимся программироватьВсе выпуски рассылки
 
 
Subscribe.Ru / АО «Интернет-Проекты» / О компании / Политика конфиденциальности