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

Вот: Noise2004@rambler.ru

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

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

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


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

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

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

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

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

____
...
Рейтинг: 0 / 0
программный модуль на языке ассемблера
    #32394460
S.D.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Именно, последовотельность точки тире, вот так :) правльно ты понял!
...
Рейтинг: 0 / 0
программный модуль на языке ассемблера
    #32394511
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да и еще что делать с этой последовательностью ?
или просто вернуть
эту последовательность ?
Завтра напишу подумаю
...
Рейтинг: 0 / 0
программный модуль на языке ассемблера
    #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
программный модуль на языке ассемблера
    #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
программный модуль на языке ассемблера
    #32394616
S.D.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! результат сообщу! сразу как проверят работу!
...
Рейтинг: 0 / 0
программный модуль на языке ассемблера
    #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
программный модуль на языке ассемблера
    #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
программный модуль на языке ассемблера
    #32397692
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пжалста :)

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


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