Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / программный модуль на языке ассемблера / 12 сообщений из 12, страница 1 из 1
31.01.2004, 07:14
    #32394360
S.D.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программный модуль на языке ассемблера
Мужики, добрый день!
Помогите пожалуйста решить одну задачку! Я на первом курсе учусь, и не могу ни как догнать как написать этот программный модуль... на паскале все ОК а вот на ассемблере ни как :)
Правда нужно это очень срочно, если не сложно, черканите сюда, или на мыло, буду безгранично благодарен!!! (саму задачу я отправлю).

Вот: Noise2004@rambler.ru

С уважением, NOISE
...
Рейтинг: 0 / 0
31.01.2004, 11:38
    #32394376
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программный модуль на языке ассемблера
Нет ну ты сразу бы задачу сюда черкнул ...
может быть она настолько мудренная что на асме смысла небудет ее
писать :)
____
...
Рейтинг: 0 / 0
31.01.2004, 11:46
    #32394381
S.D.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программный модуль на языке ассемблера
ОК :)

Вот сама задача:
Даны натуральное число n, символы s1,...,sn. Выяснить, имеются ли в последовательности s1,...,sn такие члены последовательности si, si+1, что si-это запятая, а si+1 - тире.
В качестве решения необходимо прислать программный модуль на языке ассемблера (Intel) с построчными комментариями и загрузочный модуль к каждой из задач.

Я не смог написать именно программный модуль.
Ну как?! Реально?
...
Рейтинг: 0 / 0
31.01.2004, 12:14
    #32394388
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программный модуль на языке ассемблера
а ты этот модуль решил на паскале ?
если да то покажи сдесь пример а то что то после вчерашнего в условие не вьезжаю :)


тоесть получается есть массив символов ?

ну допустим
var a array [1..n] od char ;

пихаем в массив символы ...

for i=1 to i<= n do
begin
ну и пихаем точку тире -- чтоль
end

а дальше мы ищем последовательность
точка тире точка тире итд такили я что то не понял ?

____
...
Рейтинг: 0 / 0
31.01.2004, 14:47
    #32394460
S.D.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программный модуль на языке ассемблера
Именно, последовотельность точки тире, вот так :) правльно ты понял!
...
Рейтинг: 0 / 0
31.01.2004, 17:52
    #32394511
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программный модуль на языке ассемблера
да и еще что делать с этой последовательностью ?
или просто вернуть
эту последовательность ?
Завтра напишу подумаю
...
Рейтинг: 0 / 0
31.01.2004, 18:29
    #32394520
S.D.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программный модуль на языке ассемблера
Да, сосвсем забыл написать на паскале, вот:

Program Prim1;
Uses Crt; {Подключение модуля}
{Описание констант массивов}
Var {Описание переменных}
t,h,i: Integer;
j,g: Char;
A:array[1..50] of char;

Begin
ClrScr; {Очистка экрана}
Randomize; {Загрузка процедуры Randomize}
textcolor(15);
For i:=1 to 50 Do
Begin
t:=60-random(20);
A :=chr(t);
Write(A:2);
End;
For i:=1 to 50 Do {Поиск последовательности символов , и -}
Begin
j:=A;
If j=#44 then
Begin

h:=h+1;
g:=A[h];
If g=#45 then {Если обнаружена нужная последовательность,то выход}
Begin {из программы}
writeln;
Write('Имеется последовательность , и -');
Repeat
Until Keypressed;
Halt(1);
End;
End;
End;
Writeln;
Writeln('Последовательности , и _ не имеется');
Repeat
Until Keypressed;
End.

Ты условие не понял?! Чето я его перечитал и сам запутался
...
Рейтинг: 0 / 0
01.02.2004, 10:55
    #32394608
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программный модуль на языке ассемблера
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
program ASM_Test;
Const 
  CountA =  50 ; 
type 
  pMass = ^TMass;
  TMass = array[ 1 ..CountA] of char;
Var 
  A: pMass;

function GetPosl(N:Integer;Var mass) :bool;
Var
  b:Pointer;
  h:bool; 
begin
  b  := Pointer(mass);
  asm
    push ds
    lds si,b
    moc cx,N- 1 
    @loop_for_find_point_tire:
      mov al,ds:[si]
      mov bl,ds:[si+ 1 ]
      cmp al,0x2C   {ищем точку перевел в шестнадцатиридчатую } 
        ja @have_point
      jmp @jmp_if_nothing
      @cmp_tire:
      cmp bl,0x2D   {сравниваем с тире}
        ja @and_have_tire
      jmp @jmp_if_nothing 
      @have_point:
        jmp @cmp_tire
      @and_have_tire:
        mov al,0x1
        jmp @have_all 
     @jmp_if_nothing:
     xor al,al  
     xor bl,bl
     inc si
     loop @loop_for_find_point_tire
     @have_all:
        mov h,al 
     pop ds
  end;
  GetPosl := h;
end;

begin
  New(A);
  ClrScr; {Очистка экрана} 
  Randomize; {Загрузка процедуры Randomize} 
  textcolor( 15 ); 
  For i:= 1  to CountA Do 
     Begin 
       t:= 60 -random( 20 ); 
       A^[i]:=chr(t); 
       Write(A^[i]: 2 );  
     End; 
   if GetPosl(CountA,A) then
     begin
       writeln('Последователность есть');
     end
   else
     begin
       writeln(' а недождетесь :) !!!');
     end
   Dispose(A);
end;



Вообщем можещь попробовать
у меня паскаля нету так что проверить не смогу
писал все по памяти :)
если буду т ошибки сразу напиши их ...


____
...
Рейтинг: 0 / 0
01.02.2004, 11:30
    #32394616
S.D.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программный модуль на языке ассемблера
Спасибо! результат сообщу! сразу как проверят работу!
...
Рейтинг: 0 / 0
01.02.2004, 13:57
    #32394634
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программный модуль на языке ассемблера
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
program ASM_Test;
Const 
  CountA =  50 ; 
type 
  pMass = ^TMass;
  TMass = array[ 1 ..CountA] of char;
Var 
  A: pMass;

function GetPosl(N:Integer;Var mass) :bool;
Var
  b:Pointer;
  h:bool; 
begin
  b  := Pointer(mass);
  asm
    push ds
    lds si,b
    moc cx,N- 1      ->  Сдесь Очепятка длжно быть mov cx,n- 1   :)
    @loop_for_find_point_tire:
      mov al,ds:[si]
      mov bl,ds:[si+ 1 ]
      cmp al,0x2C   {ищем точку перевел в шестнадцатиридчатую } 
        ja @have_point
      jmp @jmp_if_nothing
      @cmp_tire:
      cmp bl,0x2D   {сравниваем с тире}
        ja @and_have_tire
      jmp @jmp_if_nothing 
      @have_point:
        jmp @cmp_tire
      @and_have_tire:
        mov al,0x1
        jmp @have_all 
     @jmp_if_nothing:
     xor al,al  
     xor bl,bl
     inc si
     loop @loop_for_find_point_tire
     @have_all:
        mov h,al 
     pop ds
  end;
  GetPosl := h;
end;


____
...
Рейтинг: 0 / 0
04.02.2004, 11:26
    #32397650
S.D.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программный модуль на языке ассемблера
Привет! Спасибо за помощь! Пригодилось!
Я отправил и твой вариант и свой! Вот смотри если интересно!

Program Noise;
Const n=100;
Var S:String[100];
t:word;
Begin
S:='fgjijweiwoij,,,,cvdsijcvwoeijfewoijfoisdcd,-';
asm
Lea di,S {Di Hа строку символов}
xor cx,cx {сх=0}
mov cl,byte ptr [di] {В сх кол-во символов строки.
В Паскале строка начинается с индекса 1 в нулевом индексе лежит кол-во
символов в строкеРавносильно команде Length(S)}

sub cx,1 {Кол-во символов уменьшаем на 1 т/к нет смысла искать
запятую в последнем символе}
mov dx,cx {Запоминаем кол-во символов}
add di,1 {Прибавляем 1 и после этого Di будет указывать на начало строки}
mov ah,'-' {Второй символ}
mov al,',' {Первый символ}
@M1: repne scasb {Команда сканирует строку длина которой указанна в сх
и ищет первое вхождение символа указанного в al. Если найден символ то регистр
Di устанавливается на следующий элемент}
jne @fin {Если не равно то по метке}
cmp ah,byte ptr [di]{Сравниваем следующий}
je @Ok {Прыжек если равен}
jmp @M1 {Прыжек если следующий не равен - на дальнейшее сканирование}
@Ok:
sub dx,cx {Определяем порядковый номер элемента}
mov t,dx {Заносим в переменную}
jmp @end {Hа конец}
@fin:
Mov ax,0 {Сюда попадаем если не нашли ни чего}
mov t,0 {В переменную 0}
@end:
end;
Writeln(t); {Числа паскалем легче выводить из-за этого в переменную и заносим}

end.

Еще раз, спасибо!
:)
...
Рейтинг: 0 / 0
04.02.2004, 11:42
    #32397692
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программный модуль на языке ассемблера
Пжалста :)

Да и этот вариант тоже ничего ... :)
____
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / программный модуль на языке ассемблера / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]