Студентам с вопросами о лабораторных работах сюда

Тема в разделе "WASM.BEGINNERS", создана пользователем IceStudent, 11 ноя 2006.

  1. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    Remlin
    Тебе под dos? Держи
    Код (Text):
    1. .model tiny
    2. .code
    3. org 100h
    4.  
    5. start:
    6.  
    7. ; получить адрес своего PSP
    8.   mov  ah,62h
    9.   int  21h
    10.  
    11. ; получить адрес Environment
    12.   mov  es,bx
    13.   mov  ax,es:[002Ch]
    14.   mov  es,ax
    15.   mov  ds,ax
    16.  
    17. ; найти имя
    18.   cld
    19.   xor  ax,ax
    20.   mov  di,ax
    21.   mov  cx,7FFFh
    22. @@:
    23.   repne scasb
    24.   cmp  al,[di]
    25.   jnz  short @B
    26.   add  di,3
    27.  
    28. ; вывести имя
    29. @@:
    30.   cmp  byte ptr [di],0
    31.   jz   short @F
    32.   mov  dl,[di]
    33.   inc  di
    34.   mov  ah,2
    35.   int  21h
    36.   jmp  short @B
    37.  
    38. @@:
    39.   mov  ax,4C00h
    40.   int  21h
    41.  
    42. end start
     
  2. Remlin

    Remlin New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2008
    Сообщения:
    5
    q_q
    Спасибо
     
  3. WoLfhOUnD

    WoLfhOUnD New Member

    Публикаций:
    0
    Регистрация:
    10 дек 2008
    Сообщения:
    5
    Хелп ми плиз, нужны 2 проги чтобы одна при вводе в командную строку некоторого набора клавиатурных символов оставляла только числа а другая чтобы оставляла только буквы.
    под DOS
     
  4. Remlin

    Remlin New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2008
    Сообщения:
    5
    q_q
    Только с переходами непонятно, @@ везде стоит-это так и задумано?
     
  5. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Remlin
    @@ - универсальная метка @B - на ближнбб назад, @F - на ближнюю вперёд
     
  6. Remlin

    Remlin New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2008
    Сообщения:
    5
    а команды repne scasb и mov cx,7FFFh зачем нужны, обьясните пожалуйста
     
  7. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    Remlin
    Программу в отладчик, букварь по ассемблеру в руки, исследуй.
     
  8. WoLfhOUnD

    WoLfhOUnD New Member

    Публикаций:
    0
    Регистрация:
    10 дек 2008
    Сообщения:
    5
    Подсобите плз ... прост за выходные сделать надо ... а я почти не вдупляю как эт сделать ...
     
  9. pop_punk

    pop_punk Максим

    Публикаций:
    0
    Регистрация:
    10 дек 2008
    Сообщения:
    3
    Адрес:
    Йошкар-Ола
    Помогите пожалуйста с лабораторной работой! :rolleyes:
    Задание.
    Написать программу, которая проверяет, является ли введенная с клавиатуры квадратная матрица "магическим" квадратом. "Магическим" квадратом называется матрица, у которой сумма чисел в каждом горизонтальном ряду, в каждом вертикальном и по каждой из диагоналей одна и та же.
     
  10. FullZer0

    FullZer0 New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2008
    Сообщения:
    24
    Народ помогите с етими прямыми !
    В общем как раньше говорилось прямая может задаватса двумя точками , мне нужно их задать через систему уравнений
    y = AX+B
    y = AX+B
    ... найти нужно Y и X !
    из етого задаетса только А и В ! Решыть такую систему на бумаги - запросто но вот как ее запрограмировать ? У меня не выходит !
    Если ктото знает - наведите код ПЛЗ !
     
  11. meduza

    meduza New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    212
    FullZer0
    А ниче что это одно и то же уравнение... Чтобы решить систему с 2-мя неизвестными, надо 2 независимых уравнения. Здесь только одно. Получится бесконечно много решений, тебе ведь не это надо?
     
  12. KozzyKoder

    KozzyKoder New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2008
    Сообщения:
    12
    Кто нибудь знает, какой флаг слова состояния процессора указывает на то, что при вычитании например из байта было получено число меньше 0? например было число 1. Вычли 2. Получили число 0xFE. Как зафиксировать этот факт?
     
  13. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    KozzyKoder
    > например было число 1. Вычли 2. Получили число 0xFE
    Вообще-то 0xFF.
    [​IMG]
     
  14. m1cr0

    m1cr0 New Member

    Публикаций:
    0
    Регистрация:
    14 дек 2008
    Сообщения:
    1
    Прошу помощи... язык не изучали, сразу задали писать лабы :) Приходится в быстром порядке учить асм, но, на данный момент, временем не располагаю...
    В общем задание:

    Сложить коды ASCII символов строки рекурсивно. (передача параметров - через стек)
    Т.е. дана какая-то строка, например
    @str: db 'Test string', 0
    Нужно реализовать данную задачу...

    Премного благодарен!
     
  15. FullZer0

    FullZer0 New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2008
    Сообщения:
    24
    В общем я не как не пойму как можно задать массив прямых !! Зделал так что A,B,X задаю с клавиатуры, тогда У вычисляется из уравнения прямой ) Препод сказал что так не катит что задавать нужно только А,В ! Вот тут я хз как найти Х,У,...
    Может кто наведет код на С++ как задать прямую только через А,В...
     
  16. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    FullZer0
    Конкретизируй. Найти уравнение прямой по двум точкам?
     
  17. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    FullZer0
    имхо препод сам не отличает прямую от отрезка :)) тогда уточни у него какая проекция ему нужна - отрезка на прямую или отрезка на отрезок ;)
     
  18. meduza

    meduza New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    212
    FullZer0
    Конечно. Уравнение прямой: y=Ax+B, достаточно задать только A (угловой коэффицент) и B ("смещение"), чтобы для любого x найти y и наоброт (x=(y-B)/A).
    Код (Text):
    1. struct line {
    2. double a,b;
    3. };
    4. struct line lines[N];
    Y_Mur
    FullZer0 уже говорил, что нужно спроецировать отрезки на прямые.

    Про то, как проецировать я писал уже. Только я писал, когда ур-ие прямой задается 2-мя точками, в случае y=Ax+B почти тоже самое, даже легче, т.е. для нахождения проекции точки, проходящей через (x,y) на прямую y=Ax+B надо решить систему 2х уравнений, соответствующих 2м прямым: первое y=Ax+B, а у второй прямой угловой коэфф. будет A'=-1/A (т.к. они перпендикулярны), смещение B' находится, если подставить известную точку (x,y).
     
  19. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Есть ещё параметрическое задание прямой: P(t) = Bt + A(1-t)
     
  20. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    Бред какой-то, при чем здесь рекурсия и стек, если ты ассемблера не знаешь? покажи сперва это
    Код (Text):
    1.    mov si,offset @str; передаем в регистр si адрес строки @str
    2.    xor cx,cx; в регистре CX будет сумма символов строки, сейчас поместим туда 0
    3. a1: lodsb; берем очередной символ из @str и передаем его в AL
    4. ;при этом SI автоматически увеличивается и указывает на следующий символ @str
    5.    test al,al; проверяем попал ли в AL завершающий строку @str ноль
    6.    jz exit; если в AL попал ноль завершаем программу
    7.    add cl,al; складываем очередной код символа
    8.    adc ch,0; если возник перенос корректируем сумму
    9.    jmp a1; возвращаемся в начало цикла
    10. exit: ... ; выход из программы
    а теперь с рекурсией
    Код (Text):
    1.    mov si,offset @str
    2.    xor cx,cx; в регистре CX будет сумма символов строки, сейчас поместим туда 0
    3.    call recurs; вызываем рекурсивную процедуру -- после выхода из неё в CX сумма кодов
    4.    ...
    5. recurs proc;рекурсивная процедура для вычисления
    6. ;суммы ASCII-кодов символов строки @str
    7. ;аргумент функции передается через регистр AL, а
    8. ;значение возвращается через регистр CX
    9.    lodsb; передаем код в AL и переходим к следующему символу строки @str  
    10.    test al,al; в AL ноль?
    11.    jz a1;выход на нерекурсивную ветвь процедуры
    12. ;рекурсивная ветвь процедуры
    13.    add cl,al; складываем очередной код символа строки @str
    14.    adc ch,0; если возник перенос корректируем сумму
    15.    call recurs; передаем в стек адрес возврата из очередной процедуры
    16. a1: ret; "раскручиваем" стек и выходим из толпы процедур recurs    
    17. recurs endp