![]() |
|
![]() ![]() ![]() |
|
Dimylia |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 27.4.2014 Репутация: нет Всего: нет |
![]() буду очень признателен. ![]() |
|||
|
||||
ФедосеевПавел |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 7.2.2009 Репутация: 4 Всего: 10 |
Начни с чего-нибудь. В пакете masm32 идет множество примеров - консольных и GUI. Как пользоваться WinAsm - на страничке программы.
Не вдаваясь в алгоритм реализуй: - инициализацию программы - ввод (или определение константы) строки - вывод результата (пока - просто текста и произвольного числа из переменной) Потом берись за разбор строки. Пока у тебя нет даже каркаса программы - лично мне не интересно продолжать. Асм не преподают гуманитариям и школьникам. |
|||
|
||||
Dimylia |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 27.4.2014 Репутация: нет Всего: нет |
что-то такое ? не получается доделать , а завтра сдавать нужно лабораторную. с перемещением слов я справился, все получилось. а вот подсчитать слова в строке никак . вот пробовал что-то data SEGMENT str1 db 30 dup (?) cout db 13,"Vvedite stroku:> ",'$' data ENDS code SEGMENT ASSUME cs:code,ds:data begin: mov ax,data mov ds,ax mov es,ax mov ah,09h mov dx,offset cout int 21h mov ah,3fh lea dx,str1 mov cx,30 mov bx,0 int 21h sub ax,2 ; mov cx,ax ; xor si,si xor ax,ax cld mov al,' ' ; lea di,str1 ; oi: repne scasb ; jne oi1 inc si ; jmp oi ; oi1: inc si ; xor ax,ax ; mov ax,si xor cx, cx mov bx, 10 oi2: xor dx,dx div bx push dx inc cx test ax, ax jnz oi2 mov ah, 02h oi3: pop dx add dl, '0' int 21h loop oi3 mov ax,4c00h int 21h code ENDS end begin |
|||
|
||||
ФедосеевПавел |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 7.2.2009 Репутация: 4 Всего: 10 |
А... Так это программа под DOS... Мне даже запустить её не на чем...
Да, похоже на то. Пока отлаживаешь программу - замени ввод строки на константу
Сейчас мне нужно отлучиться. Вернусь через несколько часов. В общих чертах алгоритм такой: m1: пропускаем пробелы (в цикле или rep) пропускаем символы (в цикле или rep) увеличиваем счетчик слов jmp m1 Ну там учитываем длину строки в обоих циклах |
|||
|
||||
Dimylia |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 27.4.2014 Репутация: нет Всего: нет |
я через DOSbox на windowse 7 запускаю. исправил то что ты писал,
|
||||||
|
|||||||
ФедосеевПавел |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 7.2.2009 Репутация: 4 Всего: 10 |
Я чуть подправил подсчёт слов и временно убрал ввод строки - мне было лень всякий раз её набирать, добавил сегмент стека. Получилось так
Я уже и сам забыл как работают цепочечные команды. Все их чудеса хорошо видны под отладчиком - в твоём случае под td. И это кроме того, что я первый раз под win7 x64 запускаю эмулятор DOS. Раньше у меня была winXP - всё работало без эмуляторов. Поэтому так долго. Это сообщение отредактировал(а) ФедосеевПавел - 27.4.2014, 22:05 |
|||
|
||||
Dimylia |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 27.4.2014 Репутация: нет Всего: нет |
спасибо большое что помогли )
вот сделал так.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm для начинающих" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm для начинающих | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |