IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

 
 Ответить  Открыть новую тему 
> Контрольные задачки, хелп =))
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 54
Пол: Женский
Реальное имя: Евгения

Репутация: -  0  +


Помогите пожалуйста решить задачки, они вроде простые, но у меня явно проблемы с их решением...

1.Вводится строка с клавиатуры с отображением на экране. Количество вводимых символов определяется параметром компиляции A1. Необходимо заменить все символы ‘a’ строки на символ, вводимый с клавиатуры. После замены вывести полученную строку на экран.

2.Вводится строка с клавиатуры с отображением на экране. Количество вводимых символов определяется параметром компиляции A4. Необходимо из введённой строки сформировать новую строку так, чтобы после символа ‘.’ был вставлен один пробел. Вывести полученную строку на экран.

3.Вводится строка с клавиатуры с отображением на экране. Количество вводимых символов определяется параметром компиляции A3. Необходимо определить количество символов ‘.’ и вывести на экран введённую строку и найденное количество.

вот они. Эх.. их еще и макроопределениями надо сделать
я прицепила то что пыталась делать по первой (странно .asm у меня грузиться не захотел, пришлось .txt).


Прикрепленные файлы
Прикрепленный файл  p1.txt ( 2.24 килобайт ) Кол-во скачиваний: 332
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


Решения задач:

Сообщение отредактировано: xds -


Прикрепленные файлы
Прикрепленный файл  sol.zip ( 3.75 килобайт ) Кол-во скачиваний: 256


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 54
Пол: Женский
Реальное имя: Евгения

Репутация: -  0  +


Спасибо, огромное!!!!!!!!!! smile.gif
Только вот...что за com файл?? мы как то без него делаем...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


*.com - это исполняемый модуль MS-DOS с моделью памяти "tiny" - почти то же самое, что и *.exe (запускается так же).


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 54
Пол: Женский
Реальное имя: Евгения

Репутация: -  0  +


Ага, тока думаю препод меня не поймет, так как мы делаем тока экзешники, я попробую переделать, думаю получится....
а можно еще эти две решить?
1.Вводится строка с клавиатуры с отображением на экране. Количество вводимых символов определяется параметром компиляции A2. Необходимо заменить все рядом стоящие символы ‘a’ и ‘b’ на символы ‘**’. После замены вывести полученную строку на экран.
2.Вводится строка с клавиатуры с отображением на экране. Количество вводимых символов определяется параметром компиляции A5. Необходимо определить, начиная с какой позиции, находится первый встречавшийся символ ‘a’ и вывести на экран введённую строку и найденный номер позиции.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


Вот первые три решения в модели памяти "small" (уже MZ EXE): Прикрепленный файл  sol_small.zip ( 4.07 килобайт ) Кол-во скачиваний: 447
.

Цитата
а можно еще эти две решить
Можно: Прикрепленный файл  sol2.zip ( 2.82 килобайт ) Кол-во скачиваний: 456
.

Постарайся разобраться в их работе самостоятельно. Если что-нибудь непонятно - пиши... smile.gif


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Пионер
**

Группа: Пользователи
Сообщений: 54
Пол: Женский
Реальное имя: Евгения

Репутация: -  0  +


Огроменное спасиба, надеюсь теперь контрольную напишу =)
и появились некоторые вопросы: там я так поняла там есть переход на следующую строку почему 10,13 мы вроде как писали 0ah,0dh? ну это наверно не так важно?
пасиба еще раз буду разбираться дальше..
и кстати, странный бат-файл, мы по другому пишем =)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


Цитата
там есть переход на следующую строку почему 10,13 мы вроде как писали 0ah,0dh? ну это наверно не так важно?
Правильно так: 13, 10 (0Dh, 0Ah - то же самое, но в шестнадцатеричной системе счисления) - сначала CR (символ с кодом 13 (дес.) / 0D (шест.)), а затем LF (символ с кодом 10 (дес.) / 0A (шест.)). Хотя, в данном случае последовательность не важна.


Цитата
странный бат-файл, мы по другому пишем =)
Так удобно - "make" и готово! =) (можешь попробовать, только измени путь в первой строке).


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Пионер
**

Группа: Пользователи
Сообщений: 54
Пол: Женский
Реальное имя: Евгения

Репутация: -  0  +


Вот я все задачи изучила и теперь вопросы =)

к sol1:
что такое DGROUP?

Цитата
write	macro s
lea dx,s
mov ah,9 ; почему именно 9?
int 21h
endm


к sol2_1:
что делает процедура getchar?
а зачем buf1 и buf2?

по sol3:
не поняла что делают div10 и write_dig
n dw 0 ; зачем такой большой

по sol2_2:
write msg3
pop ax
mov cx,-1
push cx
mov cx,10
div10:
xor dx,dx
div cx
push dx
or ax,ax
jnz div10
write_dig:
pop dx
or dx,dx
js done
add dl,'0'
mov ah,2
int 21h
jmp write_dig

можно это разъяснить...?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


Цитата
к sol1:
что такое DGROUP?
DGROUP (Data GROUP) - группа, состоящая из сегментов данных (_DATA, _BSS, CONST) и сегмента стека (STACK). В данном случае, то же самое, что и @data.

Цитата
Код
mov ah,9; почему именно 9?
int 21h

ah = 9 / int 21 - системный вызов MS-DOS, выводящий на стандартный вывод (по-умолчанию - на экран) строку текста. В ds:dx должен находиться начальный адрес строки ("lea dx,s"), а сама строка должна завершаться символом '$' (наследие CP/M smile.gif).

Цитата
к sol2_1:
что делает процедура getchar?
а зачем buf1 и buf2?
getchar - не процедура, а макроопределение - читает символ со стандартного ввода (по умолчанию - с клавиатуры), выводит его на стандартный вывод (экран) и возвращает код символа в al.

Цитата
по sol3:
не поняла что делают div10 и write_dig
Это вывод на экран положительного целого числа в десятичном виде. Цикл "div10:" последовательно делит число на 10 ("div cx") и сохраняет остатки (цифры числа) в стеке (" push dx"). Затем, цикл "write_dig:" извлекает цифры из стека и выводит их на экран (стандартный вывод).

Цитата
n dw 0 ; зачем такой большой
В целях повышения эффективности кода (по скорости выполнения), рекомендуется оперировать словами, совпадающими по длине с разрядностью АЛУ (в его текущем режиме, если их несколько, как у x86). В данном случае у нас 16-разрядная среда, поэтому лучше работать с 16-битными данными, даже если число заведомо помещается в байт. Из тех же соображений, в ЯВУ всегда есть абстракный "целый" тип, подстраиваемый компилятором под длину слова целевой среды (той, в которой будет выполняться код).

P. S.
Цитата
Хороший человек =)
Спасибо! smile.gif


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 25.04.2024 17:22
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name