![]() |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
![]() ![]() |
![]() |
corazon |
![]()
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 54 Пол: Женский Реальное имя: Евгения Репутация: ![]() ![]() ![]() |
Помогите пожалуйста решить задачки, они вроде простые, но у меня явно проблемы с их решением...
1.Вводится строка с клавиатуры с отображением на экране. Количество вводимых символов определяется параметром компиляции A1. Необходимо заменить все символы ‘a’ строки на символ, вводимый с клавиатуры. После замены вывести полученную строку на экран. 2.Вводится строка с клавиатуры с отображением на экране. Количество вводимых символов определяется параметром компиляции A4. Необходимо из введённой строки сформировать новую строку так, чтобы после символа ‘.’ был вставлен один пробел. Вывести полученную строку на экран. 3.Вводится строка с клавиатуры с отображением на экране. Количество вводимых символов определяется параметром компиляции A3. Необходимо определить количество символов ‘.’ и вывести на экран введённую строку и найденное количество. вот они. Эх.. их еще и макроопределениями надо сделать я прицепила то что пыталась делать по первой (странно .asm у меня грузиться не захотел, пришлось .txt). Прикрепленные файлы ![]() |
xds |
![]()
Сообщение
#2
|
![]() N337 ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: ![]() ![]() ![]() |
Решения задач:
Сообщение отредактировано: xds - 30.11.2005 12:07 Прикрепленные файлы ![]() -------------------- The idiots are winning.
|
corazon |
![]()
Сообщение
#3
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 54 Пол: Женский Реальное имя: Евгения Репутация: ![]() ![]() ![]() |
Спасибо, огромное!!!!!!!!!!
![]() Только вот...что за com файл?? мы как то без него делаем... |
xds |
![]()
Сообщение
#4
|
![]() N337 ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: ![]() ![]() ![]() |
*.com - это исполняемый модуль MS-DOS с моделью памяти "tiny" - почти то же самое, что и *.exe (запускается так же).
-------------------- The idiots are winning.
|
corazon |
![]()
Сообщение
#5
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 54 Пол: Женский Реальное имя: Евгения Репутация: ![]() ![]() ![]() |
Ага, тока думаю препод меня не поймет, так как мы делаем тока экзешники, я попробую переделать, думаю получится....
а можно еще эти две решить? 1.Вводится строка с клавиатуры с отображением на экране. Количество вводимых символов определяется параметром компиляции A2. Необходимо заменить все рядом стоящие символы ‘a’ и ‘b’ на символы ‘**’. После замены вывести полученную строку на экран. 2.Вводится строка с клавиатуры с отображением на экране. Количество вводимых символов определяется параметром компиляции A5. Необходимо определить, начиная с какой позиции, находится первый встречавшийся символ ‘a’ и вывести на экран введённую строку и найденный номер позиции. |
xds |
![]()
Сообщение
#6
|
![]() N337 ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот первые три решения в модели памяти "small" (уже MZ EXE):
![]() . Цитата а можно еще эти две решить Можно: ![]() . Постарайся разобраться в их работе самостоятельно. Если что-нибудь непонятно - пиши... ![]() -------------------- The idiots are winning.
|
corazon |
![]()
Сообщение
#7
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 54 Пол: Женский Реальное имя: Евгения Репутация: ![]() ![]() ![]() |
Огроменное спасиба, надеюсь теперь контрольную напишу =)
и появились некоторые вопросы: там я так поняла там есть переход на следующую строку почему 10,13 мы вроде как писали 0ah,0dh? ну это наверно не так важно? пасиба еще раз буду разбираться дальше.. и кстати, странный бат-файл, мы по другому пишем =) |
xds |
![]()
Сообщение
#8
|
![]() N337 ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата там есть переход на следующую строку почему 10,13 мы вроде как писали 0ah,0dh? ну это наверно не так важно? Правильно так: 13, 10 (0Dh, 0Ah - то же самое, но в шестнадцатеричной системе счисления) - сначала CR (символ с кодом 13 (дес.) / 0D (шест.)), а затем LF (символ с кодом 10 (дес.) / 0A (шест.)). Хотя, в данном случае последовательность не важна.Цитата странный бат-файл, мы по другому пишем =) Так удобно - "make" и готово! =) (можешь попробовать, только измени путь в первой строке).-------------------- The idiots are winning.
|
corazon |
![]()
Сообщение
#9
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 54 Пол: Женский Реальное имя: Евгения Репутация: ![]() ![]() ![]() |
Вот я все задачи изучила и теперь вопросы =)
к sol1: что такое DGROUP? Цитата write macro s к sol2_1: что делает процедура getchar? а зачем buf1 и buf2? по sol3: не поняла что делают div10 и write_dig n dw 0 ; зачем такой большой по sol2_2: write msg3 можно это разъяснить...? |
xds |
![]()
Сообщение
#10
|
![]() N337 ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата к sol1: DGROUP (Data GROUP) - группа, состоящая из сегментов данных (_DATA, _BSS, CONST) и сегмента стека (STACK). В данном случае, то же самое, что и @data.что такое DGROUP? Цитата Код mov ah,9; почему именно 9? int 21h ![]() Цитата к sol2_1: getchar - не процедура, а макроопределение - читает символ со стандартного ввода (по умолчанию - с клавиатуры), выводит его на стандартный вывод (экран) и возвращает код символа в al.что делает процедура getchar? а зачем buf1 и buf2? Цитата по sol3: Это вывод на экран положительного целого числа в десятичном виде. Цикл "div10:" последовательно делит число на 10 ("div cx") и сохраняет остатки (цифры числа) в стеке (" push dx"). Затем, цикл "write_dig:" извлекает цифры из стека и выводит их на экран (стандартный вывод).не поняла что делают div10 и write_dig Цитата n dw 0 ; зачем такой большой В целях повышения эффективности кода (по скорости выполнения), рекомендуется оперировать словами, совпадающими по длине с разрядностью АЛУ (в его текущем режиме, если их несколько, как у x86). В данном случае у нас 16-разрядная среда, поэтому лучше работать с 16-битными данными, даже если число заведомо помещается в байт. Из тех же соображений, в ЯВУ всегда есть абстракный "целый" тип, подстраиваемый компилятором под длину слова целевой среды (той, в которой будет выполняться код).P. S. Цитата Хороший человек =) Спасибо! ![]() -------------------- The idiots are winning.
|
![]() ![]() |
![]() |
Текстовая версия | 29.07.2025 15:36 |