15.11.2018, 10:27 [+3 UTC]
в нашей команде: 3 106 чел. | участники онлайн: 6 (рекорд: 16)

:: РЕГИСТРАЦИЯ

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.55 (06.11.2018)

Общие новости:
24.09.2018, 16:49

Форум:
08.11.2018, 13:36

Последний вопрос:
15.11.2018, 02:05

Последний ответ:
15.11.2018, 08:07

Последняя рассылка:
15.11.2018, 09:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
18.11.2016, 00:47 »
АнтонНР
Спасибо большое! Наконец разобрался.. [вопрос № 190036, ответ № 274258]
04.02.2011, 18:03 »
lamed
Спасибо, воспользуюсь советами. [вопрос № 182097, ответ № 265718]

РАЗДЕЛ • Assembler

Создание программ на языке Assembler.

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

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

Зенченко Константин Николаевич
Статус: Модератор
Рейтинг: 638
Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 131
Evgen aka Chuma
Статус: 6-й класс
Рейтинг: 15

Перейти к консультации №:
 

Консультация онлайн # 192344
Раздел: • Assembler
Автор вопроса: bukety.sedobnye (Посетитель)
Отправлена: 08.01.2018, 18:33
Поступило ответов: 1

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
задача: написать программу, находящую максимальный или минимальный символ в исходной строке.
написал код, который вроде как должен найти максимальный символ. пожалуйста, помогите, завтра к утру уже нужно сдавать. правильно ли я вообще написал код? и вывод не пойму как правильно сделать

Приложение:

Состояние: Консультация закрыта

Ответ # 276016 от Лысков Игорь Витальевич (Старший модератор)

Здравствуйте, bukety.sedobnye!
Держите программу, сравните со своей... smile

Код (Assembler) :: выделить код
;написать программу, находящую максимальный или минимальный символ в исходной строке.
	.model	small
	.stack	100h
	.data
	szStr		EQU	250
	msg1		db	'Stroka:',10,13, '$'	
	NextLine	db     13,10,'$'
	MsgMax		db	'Max = $'
	MsgMin		db	13,10,'Min = $'
	MsgPustaya	db	'Net stroki!$'
	Stroka		db	szStr dup(?) 	; строка
	.code
start:	
	mov	ax, @data	
	mov	ds, ax	
	mov	es, ax

; вывод 1-го сообщения
	mov	ah, 09h
	mov	dx, offset msg1
	int	21h 

; ввод строки 
	mov	ah, 3fh				;функция DOS для чтения с ручного ввода
	mov	bx, 0				;описание стандартного ввода
	mov	cx, szStr			;считываем строку до максимально установленной длины
	mov	dx, OFFSET Stroka
	int	21h				;в AX - длина введенной строки, в конце коды 0dh,0ah

; следующая строка   
	lea	dx, nextLine
	mov	ah, 9
	int	21h  

; ищем символ 
	lea	si, Stroka
	mov	bx, 00ffh			;bh - max, bl - min (сначала самые большой и маленький код!)

sleduiushii_simvol:  
	mov	al, [si]
	inc	si
	cmp	al, 0dh				;при вводе при помощи ф-и 3fh в конце строки будут коды 0dh и 0ah!
	je	konez
						; сравниваем символы
	cmp	al, bl 				;сравним с минимальным
	jae	cmp_max				;если больше или равно, то на сравнение с максимальным
	mov	bl, al				;сохраним, как новый минимальный
cmp_max:
	cmp	al, bh				;сравним с максимальным
	jbe	sleduiushii_simvol		;если меньше или равно, то на чтение следующего символа
	mov	bh, al				;иначе - сохраним, как максимальный
	jmp 	sleduiushii_simvol

konez:						;выведем результат
	cmp	bx, 00ffh			;сначала сравним, была ли введена строка
	je	Pustaya_stroka			;если макс и мин не изменились, то ничего введено не было!
	
	mov	dx, offset MsgMax
	mov	ah, 9
	int	21h				;сообщение и макс символе
	mov	dl, bh				;значение
	mov	ah, 2
	int	21h				;выводим символ
	
	mov	dx, offset MsgMin		;аналогично для минимального
	mov	ah, 9
	int	21h
	mov	dl, bl
	mov	ah, 2
	int	21h

	lea	dx, nextLine
	mov	ah, 9
	int	21h  
	
; завершение программы   
exit:	
	mov	ah, 0				;подождем нажатие на клавишу, чтобы окно сразу не закрылось
	int	16h
	
	mov	ah, 04Ch	
	int	21h

Pustaya_stroka:
	mov	dx, offset MsgPustaya
	mov	ah, 9
	int	21h
	jmp	exit
	end	start


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

5
Огромное спасибо! Теперь вижу, что делал неправильно
-----
Дата оценки: 08.01.2018, 20:31

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

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 192344

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 1

= общий = | 08.01.2018, 18:52 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
bukety.sedobnye:

Так максимальный или минимальный символ надо искать?

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 2

= общий = | 08.01.2018, 18:59 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
bukety.sedobnye:

Любопытно, приготовили буфер для ввода строки с помощью функции 0ah,
а вводите при помощи функции чтения ah = 3fh (bx=0). Вы бы определились... smile

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

bukety.sedobnye
Посетитель

ID: 401611

# 3

= общий = | 08.01.2018, 19:11 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Нужно найти и тот, и другой. Очень плохо разбираюсь. У преподавателя вопросов не возникало, поэтому делаю как получается, плохо конечно не разбираться...

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 4

= общий = | 08.01.2018, 19:18 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
bukety.sedobnye:

Если будем вводить при помощи 3fh, то надо убрать лишнее (нужное для 0ah) smile
Ух, был бы я у Вас преподом... Уж я бы назадавал вопросов... smile

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 5

= общий = | 08.01.2018, 19:20 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
bukety.sedobnye:

Кстати, с чего Вы взяли, что в конце введенного текста будет 0?

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

bukety.sedobnye
Посетитель

ID: 401611

# 6

= общий = | 08.01.2018, 19:46 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

0 - знак конца строки

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 7

= общий = | 08.01.2018, 19:53 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
bukety.sedobnye:

© Цитата:
0 - знак конца строки
Это замечательно, но в конце введенной строки по 3fh нуля нет.
Будет добавлена пара 0dh, 0ah

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

• Отредактировал: Лысков Игорь Витальевич (Старший модератор)
• Дата редактирования: 08.01.2018, 20:02

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.14571 сек.

© 2001-2018, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.55 от 06.11.2018