| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm для начинающих > Помогите с кодом на WinAsm |
| Автор: Dimylia 27.4.2014, 04:52 |
| буду очень признателен. |
| Автор: ФедосеевПавел 27.4.2014, 06:53 |
| Начни с чего-нибудь. В пакете masm32 идет множество примеров - консольных и GUI. Как пользоваться WinAsm - на страничке программы. Не вдаваясь в алгоритм реализуй: - инициализацию программы - ввод (или определение константы) строки - вывод результата (пока - просто текста и произвольного числа из переменной) Потом берись за разбор строки. Пока у тебя нет даже каркаса программы - лично мне не интересно продолжать. Асм не преподают гуманитариям и школьникам. |
| Автор: Dimylia 27.4.2014, 07:17 | ||
что-то такое ? не получается доделать , а завтра сдавать нужно лабораторную. с перемещением слов я справился, все получилось. а вот подсчитать слова в строке никак . вот пробовал что-то 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 |
| Автор: ФедосеевПавел 27.4.2014, 08:04 | ||
| А... Так это программа под DOS... Мне даже запустить её не на чем... Да, похоже на то. Пока отлаживаешь программу - замени ввод строки на константу
Сейчас мне нужно отлучиться. Вернусь через несколько часов. В общих чертах алгоритм такой: m1: пропускаем пробелы (в цикле или rep) пропускаем символы (в цикле или rep) увеличиваем счетчик слов jmp m1 Ну там учитываем длину строки в обоих циклах |
| Автор: Dimylia 27.4.2014, 18:05 | ||||||
я через DOSbox на windowse 7 запускаю. исправил то что ты писал,
|
| Автор: ФедосеевПавел 27.4.2014, 21:55 | ||
Я чуть подправил подсчёт слов и временно убрал ввод строки - мне было лень всякий раз её набирать, добавил сегмент стека. Получилось так
Я уже и сам забыл как работают цепочечные команды. Все их чудеса хорошо видны под отладчиком - в твоём случае под td. И это кроме того, что я первый раз под win7 x64 запускаю эмулятор DOS. Раньше у меня была winXP - всё работало без эмуляторов. Поэтому так долго. |
| Автор: Dimylia 28.4.2014, 05:18 | ||
| спасибо большое что помогли ) вот сделал так.
|