Вопрос № 103644: Здраствуйте Уважаемые эксперты,
помогите пожалуйста мне написать програмку. Мне дали такое задание, Нужно написать прогу, которая в введённой строке заменит большие буквы на маленькие, а маленькие на большие, я пробовал сам, код в приложении.Тут ...
Вопрос № 103.644
Здраствуйте Уважаемые эксперты,
помогите пожалуйста мне написать програмку. Мне дали такое задание, Нужно написать прогу, которая в введённой строке заменит большие буквы на маленькие, а маленькие на большие, я пробовал сам, код в приложении.Тут код неполный, как дальше я незнаю :( покачто у меня возникли 3 вопроса, первый связан с этим:
код Ассемблера
1:
mov al, buffer+2
при первом проходе цикла всё хорошо, но как сделать чтобы дальше считывать 2,3 итд символы с переменной buffer т.е. как программно изменять эту двойку на тройку итд. плюс тотже вопрос с результатом. еще вопрос, как огранизовать счётчик, чтобы знать сколько раз проганять этот цикл, т.е. как это
mov si, offset buffer ;uznajom dlinny stroki (etot kusok ja skopiroval z drugogo isxodnika, i
mov bl, [si+1] ;nesovsem ponimaju kak eto rabotaet, mozet ktonibut smozet objasnit'?
mov ah, 0
использовать в цикле. и последний вопрос, этот код я писал используя програму emu8086, в ней всё нормально компилируется и ехе-шник работает, но при компиляции tasm'ом пишет ошибки
Заранее Спасибо.
С Уважением, Станислав.
Приложение:
Отправлен: 27.09.2007, 23:04
Вопрос задал: Станислав (статус: 1-ый класс)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Egugondiy
Здравствуйте, Станислав! Ниже преведина процедура которая выполняет то что тебе нужно. Перед ее вызовом помести в si смещение строки которую необходимо конвертировать. Удачи.
Приложение:
Ответ отправил: Egugondiy (статус: 1-ый класс)
Ответ отправлен: 28.09.2007, 03:43 Оценка за ответ: 4
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Станислав!
В приложении исправленная Ваша программа.
У Вас не правильно были определенны сегменты.
Сегмент программы описывается директивами SEGMENT и ENDS. имя_сегмента segment readonly выравн. тип разряд 'класс'
...
имя_сегмента ends
Использование упрощенных директив описаний сегмента .DATA, .STACK, .CODE возможно только после указания модели организации памяти .model модель,язык,модификатор
Подробности Вы можете найти в книге С. Зубкова, глава 3.3. Организация программы.
Для функции DOS 0Ah, буфер организован следующим образом:
bufferMax db 121;максимальный размер
bufferSize db ?;длина введенной строки
buffer db 121 dup(?);сама строка
т.е. 121 байт для самого буфера и 2 байта для указания максимального размера и длины введенной строки.
Удачи!
Приложение:
--------- И только наступив на грабли мы приобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Специалист)
Ответ отправлен: 28.09.2007, 12:24 Оценка за ответ: 5
Отвечает: Farit
Здравствуйте, Станислав!
на первы вопрос нужно организовать цикл при котром надо прибовлять по 1 к необходимому регистру
Ответ отправил: Farit (статус: 1-ый класс)
Ответ отправлен: 29.09.2007, 15:14