7 / 7 / 5
Регистрация: 25.03.2018
Сообщений: 377
|
||||||
1 | ||||||
TASM Ввести с клавиатуры строку, состоящую из целых чисел, разделенных пробелами. Найти минимальное число и вывести на экран25.03.2018, 23:36. Показов 4797. Ответов 15
Метки нет Все метки)
(
Я вроде чё-то понял, но вроде и нет
![]() Вот код:
![]()
0
|
|
25.03.2018, 23:36 | |
Ответы с готовыми решениями:
15
Ввести строку, состоящую из слов, разделенных пробелами
Вывести строку, состоящую из подстрок исходной строки, представленных в обратном порядке и разделенных пробелами |
Модератор
![]() |
|
25.03.2018, 23:53 | 2 |
Вот куда вводили - там символы и находятся - в буфере Buf, но не с самого начала, а по смещению
Смотрите по ссылке формат структуры (записи) буфера http://www.codenet.ru/progr/dos/dos_0018.php При начале обработки нужно настроить указатели на начало строки Смотрите описание lodsb https://www.cyberforum.ru/post5516354.html Такой case для выделения цифры можно не делать. Достаточно убедиться, что al в диапазоне символов '0'...'9' и вычесть из al код символа '0', а потом и умножение со сложением.
1
|
7 / 7 / 5
Регистрация: 25.03.2018
Сообщений: 377
|
|
26.03.2018, 00:48 [ТС] | 3 |
Ухты, спасибо, сейчас почитаю (:
0
|
7 / 7 / 5
Регистрация: 25.03.2018
Сообщений: 377
|
||||||
27.03.2018, 21:50 [ТС] | 4 | |||||
Ну хотя-бы строк меньше, но ещё надо что-то подправить... Спасибо кстати.
0
|
Модератор
![]() |
|
27.03.2018, 22:17 | 5 |
lodsb - согласно непрочтёной документации выполняет 2 операции 1)
[ds:si] -> al , 2) si:=si+1 Где в программе настройка si на буфер? Ну и преобразование символов в число. Где находится текущее число? Вы бы набрали алгоритм преобразования символов строки в число в виде программы на C/Pascal. И сразу станет легче. Останется лишь преобразовать строки Pascal в ассемблер. Добавлено через 1 минуту Номер функции чтения буфера в AH - а не в AL.
1
|
Эксперт Hardware
![]() |
||||||
27.03.2018, 22:45 | 6 | |||||
Зачем сохранять в буфер, проверяй на-лету:
1
|
Модератор
![]() |
|
27.03.2018, 22:51 | 7 |
R71MT, если преподаватель ему предлагает ввести строку и обработать её, то выбор "на лету" не даст зачёта.
Другое дело, что "на лету" отличается от обработки строки лишь способом доступа к следующему символу.
1
|
7 / 7 / 5
Регистрация: 25.03.2018
Сообщений: 377
|
||||||
28.03.2018, 22:27 [ТС] | 9 | |||||
Добавлено через 18 минут Я исправил LEA SI, BUFER + 2, теперь другая проблема, в общем результат MUL BL по идее должен сохранять в AX, я туда захожу, а там ничего нет Добавлено через 16 минут У меня при LODSB изменяет AL и AX.
0
|
Модератор
![]() |
||||||
28.03.2018, 22:32 | 10 | |||||
Вы какой язык учили? Pascal?
Структура буфера
Добавлено через 1 минуту Пока набирал - вы исправили.
1
|
7 / 7 / 5
Регистрация: 25.03.2018
Сообщений: 377
|
|
28.03.2018, 22:34 [ТС] | 11 |
А что с LODSB'ом делать? неужели придётся старыми добрыми адресами пользоваться? или можно как-то исправить?
0
|
Модератор
![]() |
||||||
28.03.2018, 22:48 | 12 | |||||
И длину в CX нужно брать по BUF+1. Обнулить CX, загрузить CL из BUF+1
Добавлено через 11 минут
Добавлено через 1 минуту Единственно, нужно учесть, что по окончанию цикла может остаться необработанное число.
0
|
7 / 7 / 5
Регистрация: 25.03.2018
Сообщений: 377
|
||||||
29.03.2018, 00:17 [ТС] | 13 | |||||
Не могли бы вы просто подправить код? Пожалуйста (: Завтра лаба, а у меня ошибки в DX(он не воспринимает числа 1...2) и вроде всё, все ошибки, ну с выводом я попытаюсь сам справиться:
Я очень туго воспринимаю ассемблер, сразу извинияюсь, что задалбываю так долго, но просто мне нужен конкретный пример, тогда я буду понимать. А вот вы скинули про losdb - более-менее понял Добавлено через 36 минут ФедосеевПавел, просто не могу понять, как так умножать, чтоб AX не изменялось. Я DX поставил и туда присваивать начал, но потом понял, что тщетно
0
|
Модератор
![]() |
||||||
29.03.2018, 00:25 | 14 | |||||
![]() Решение
Дальше самостоятельно
1
|
7 / 7 / 5
Регистрация: 25.03.2018
Сообщений: 377
|
|
29.03.2018, 00:30 [ТС] | 15 |
Вооооу, сколько строк. Но команды знакомые, попытаюсь понять. Спасибо большое. Чувствую летом меня не только плюсы ждут
![]()
0
|
Модератор
![]() |
|
29.03.2018, 00:32 | 16 |
Вывод с пояснениями в закреплённой теме. Смотрите там.
Если не сохранять регистры - при выводе всего 10 строчек кода.
0
|
29.03.2018, 00:32 | |
29.03.2018, 00:32 | |
Помогаю со студенческими работами здесь
16
Ввести одномерный массив из 7 целых чисел с клавиатуры и вывести его на экран. Найти его наименьший элемент
Ввести с клавиатуры массив из 10 целых чисел, посчитать сумму и вывести на экран Ввести с клавиатуры массив целых чисел и вывести его на экран в виде матрицы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |