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

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

  1. Student

    Student New Member

    Публикаций:
    0
    Регистрация:
    16 фев 2009
    Сообщения:
    7
    Здравствуйте, объясните пожалуйста отличие условных предикатов от безусловных в Visual Prolog. Я смотрел в книгах, но там это либо не написано, либо далёко от моего понимания.
     
  2. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.784
    Student
    Сайт посвящен низкоуровневому программированию на языке ассемблер. При чем здесь условные предикаты в Visual Prolog?
     
  3. Clear__Energy

    Clear__Energy New Member

    Публикаций:
    0
    Регистрация:
    30 янв 2009
    Сообщения:
    432
    Student
    nuff said
     
  4. Student

    Student New Member

    Публикаций:
    0
    Регистрация:
    16 фев 2009
    Сообщения:
    7
    "Внелогические предикаты – предикаты, действие которых выходит за рамки логического программирования, т. е. предикаты, которые не используют механизм логического вывода и в процессе решения логических целей порождают побочный эффект.

    Существует три основных вида внелогических предикатов:

    предикаты, относящиеся к вводу/выводу информации (read, write).
    предикаты, обеспечивающие доступ к программе и ее обработку (retract, consult).
    предикаты, для связи с внешней операционной системой (exit, abort). "

    Как понять что делает эти предикаты внелогическими? Или может ток стандартные предикаты являются внелогическими?
     
  5. Clear__Energy

    Clear__Energy New Member

    Публикаций:
    0
    Регистрация:
    30 янв 2009
    Сообщения:
    432
    Вероятно то, что они участвуют в логических операциях косвенно, не вычисляя ничего, а только служа сервисными функциями?
    Исправьте меня, если не так.
     
  6. MEPOX

    MEPOX New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    259
    это немного не в тему, но может кто поможет.. короче такая задача:

    Искусственный спутник обращается по круговой орбите на высоте 600 км от поверхности планеты со скоростью 3,4 км\с радиус планеты равен 3400 км. чему равно ускорение свободного падения на поверхности планеты?
    Как я её не вертел у меня получается ответ 2,89 м\с, а должно быть 4,0 м\с что я делаю не так?
     
  7. MEPOX

    MEPOX New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    259
    Всё, сегодня с утра решил.
     
  8. Helenka

    Helenka New Member

    Публикаций:
    0
    Регистрация:
    31 май 2009
    Сообщения:
    9
    Уважаемые! Кто может помочь девушке с лабораторной по проц. KP580, тема "Управление УСAПП КP58OВB51"
    надо программку реализации асинхронной передачи сделать. Я не халявщица, могу заплатить.
    Пишите в личку, пожалуйста!
     
  9. Julia

    Julia New Member

    Публикаций:
    0
    Регистрация:
    14 июн 2009
    Сообщения:
    3
    Помогите пожалуйста,написать прогу:
    В двусвязном кольцевом списке определить min и max элементы, а затем заменить их на на два новых элемента.
    Заранее огромное СПАСИБО!!!
     
  10. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    а что тут сложного?
    virtual at ebx
    struc xlist
    {
    .previous dd 0
    .item dd 0
    .next dd 0
    }
    xlist xlist
    end virtual
    ;указатель на любой элемент списка в ebx
    @@:
    cmp [xlist.previous], 0
    jz @f
    mov ebx, [xlist.previous]
    jmp @b
    @@:
    ;нашли указатель на первый элемент
    mov eax, [xlist.item]
    mov ecx, [xlist.next]
    mov edx, [xlist.item]
    @@:
    cmp eax, [xlist.item]
    cmovae eax, [xlist.item]
    cmp edx, [xlist.item]
    cmovbe edx, [xlist.item]
    mov ebx, [xlist.next]
    cmp [xlist.next], ecx
    jnz @b
    ;минимальный элемент в eax, максимальный элемент в edx, компилятор FASM, для перехода к TASM и MASM надо переобъявить структуры и использовать директиву assume
    struct xlist
    previous dd ?
    item dd ?
    next dd ?
    ends
    для перехода к С/C++ надо переписать весь код, но вот структуру переобъявлять не надо
    для перехода на делфи/паскаль надо переписывать все (лень)
    для *nix придется переписывать все (ибо ассемблер там изменяет правила)
     
  11. Julia

    Julia New Member

    Публикаций:
    0
    Регистрация:
    14 июн 2009
    Сообщения:
    3
    Спасибо!! Ну я совсем в программировании не шарю, только если долго сидеть и разбираться, можешь мне на языке С++ написать, пожалуйста, буду очень благадарна!!!
     
  12. Julia

    Julia New Member

    Публикаций:
    0
    Регистрация:
    14 июн 2009
    Сообщения:
    3
    Может кому надо будет вот прога:В двусвязном кольцевом списке определить min и max элементы, а затем заменить их на на два новых элемента. На С++
    #include <iostream>
    #include <conio.h>
    using namespace std;
    struct dsp{
    int d;
    dsp*next;
    dsp*pred;};

    dsp*make_list()
    {
    int n,j=0;
    cout<<"Razmernost spiska: ";cin>>n;
    dsp *p,*r,*beg;
    p=new (dsp);//создать первый элемент
    beg=p;//запомнить адрес в переменную beg, в которой хранится начало списка
    cout<<"a1: ";cin>>p->d;//заполнить ключевое поле
    p->pred=0;p->next=0;//запомнить адресные поля
    j=1;
    for(int i=1;i<n;i++)//добавить элементы в конец списка
    {
    r=new(dsp);//новый элемент
    cout<<"a"<<i+1<<": ";cin>>r->d;//адресное поле
    p->next=r;//связать начало списка с r
    r->pred=p;//связать r с началом списка
    r->next=beg;//обнулить последнее адресное поле
    beg->pred=r;
    p=r;//передвинуть p на последний элемент списка
    }
    return beg;//вернуть первый элемент списка
    }


    void print_list(dsp *beg)
    {dsp *p,*r;
    if (beg==0)//если список пустой
    {
    cout<<"The list is empty\n";
    }
    p=beg;
    cout<<p->d<<"\t";
    p=p->next;
    //r=p->next;//r->pred=p;
    while(p!=beg)//пока не конец списка
    { cout<<p->d<<"\t";
    p=p->next;//перейти на следующий
    }
    }

    void newspisok(dsp *beg)
    { dsp *p,*r,*min,*max;int l,k;
    int minimum=100000,maximum=-10000000;
    cout<<"vvedite element kotory nado vstavit vmesto minimuma";
    cin>>l;
    cout<<"vvedite element kotory nado vstavit vmesto maximuma";
    cin>>k;
    if (beg==0)//если список пустой
    {
    cout<<"The list is empty\n";
    }
    p=beg;//r=p->next;r->pred=p;
    if(maximum<(beg->d)) {maximum=(beg->d);max=beg;}
    if((beg->d)<minimum) {minimum=(beg->d);min=beg;}
    p=p->next;
    while(p!=beg)//пока не конец списка
    { if(maximum<(p->d)) {maximum=(p->d);max=p;}
    if((p->d)<minimum) {minimum=(p->d);min=p;}
    p=p->next;//перейти на следующий
    }
    cout<<maximum<<'\n';
    cout<<minimum<<'\n';
    (max->d)=k;(min->d)=l;
    }

    int main()
    {
    dsp *beg1;
    beg1=make_list();
    print_list(beg1);
    newspisok(beg1);
    print_list(beg1);
    _getch();
    return 0;
    }
     
  13. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    MEPOX
    F - GRAVITY FORCE
    M - weight of the planet
    m - weigth of the satellite
    R - radius of the planet
    r - distance between planet and satellite
    V - speed of the satellite
    E - accelerate of the free falling

    E=GM/(R^2)
    F=m*((V^2)/(R+r)) or F=GM*m/((R+r)^2)
    GM=(V^2)(R+r)
    E=(V^2)(R+r)/(R^2)
    E=(3,4^2)*(3400+600)/(3400^2)=0,004 km/s or 4 m/s
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...................................
     
  14. bajun

    bajun New Member

    Публикаций:
    0
    Регистрация:
    28 мар 2009
    Сообщения:
    2
    Помогите пожалуйста!
    Разработать програму на Асемблере:
    - организация двухмерного (5х3) и трехмерного (3х2х4) массивов для хранения чисел от 0 до 300
    - нахождение суммы парных элементов в массиве
    - вывод на экран элемента,индекс которого задан с клавиатуры.


    Организовать массив - это вроде бы как даже получилось,дальше - хуже.
    У меня не работает корректно вывод на экран - то есть даже не вывод,а эммм...маршрутизация по памяти чтоли...в общемто когда я делаю пошаговое выполнение (TASM -> TD.exe),то у меня даже с адрессом не складываеться - то он больше,то меньше.Вот на этом то шаге я и застопорился.Очень прошу помогите,так как послезавтра сдать уже надо =)
     
  15. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    а что сложного. для 2*х мерного массива
    first_byte_of_element=(x*sy+y)*se+ad
    для 3*х мерного
    first_byte_of_element=((x*sy+y)*sz+z)*se+ad
    где sy, sz - размерность массива по y и по z соответственно
    se - размер элементов массива
    ad - адрес положения массива в памяти
    x, y, z - индексы нужного элемента в массиве
    а дальше:
    element=[first_byte_of_element]
     
  16. bajun

    bajun New Member

    Публикаций:
    0
    Регистрация:
    28 мар 2009
    Сообщения:
    2
    да,єто несложно.загвоздка в том,что вот у меня где element там не то число.но это могут быть грехи мои в плане невнимательности.помогите с остальным пожалуйста.
     
  17. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    Ну я не знаю, что тут еще может не получиться. Суть вашей загвоздки в реализации только того, что я вам написал. Реализуйте корректно, аккуратно проверьте и если не получится пишите сюда.
     
  18. Daphne

    Daphne Оксана

    Публикаций:
    0
    Регистрация:
    27 июн 2009
    Сообщения:
    4
    Адрес:
    Белгород
    Assembler: Вывод символа в графическом режиме с заданием его размера и положения.

    Есть задание, вывести слово по горизонтали и вертикали.
    С обычным выводом символов в граф режиме понятно:

    ;Граф режим
    mov AX,00h; (30) функция задания режима
    mov AL,12h; (31) графический режим EGA
    int 10h; (32) вызов BIOS

    ;Вывод символов
    MOV AH,0AH ;Функция вывода
    MOV AL,'1' ;Выводимый символ
    MOV BL,6h ;Атрибут или цвет
    MOV CX,45 ;Число повторений символа
    INT 10H ;Вызвать BIOS

    , но как вывести символ с заданным размером и положением на экране? (возможно как то задается количество строк на экране и позиция символа в строке?) Чем подробнее будет код, тем лучше. Заранее спасибо.
     
  19. Daphne

    Daphne Оксана

    Публикаций:
    0
    Регистрация:
    27 июн 2009
    Сообщения:
    4
    Адрес:
    Белгород
    с вопросом кое как разобралась

    задание изначально было нарисовать шахматную доску с координатами полей.
    вот исходник и exe: http://narod.ru/disk/10361674000/shahmatD.rar.html

    вывод символа с заданными координатами:

    Код (Text):
    1. MOV AH,02 ;Установить положение курсора
    2. MOV BH,00 ;Страница 0
    3. MOV DH,строка ;Строка
    4. MOV DL,столбец ;Столбец
    5. INT 10H ;Вызвать BIOS
    6.  
    7. MOV AH,09 ;Функция вывода
    8. MOV AL,символ ;Выводимый символ
    9. MOV BH,страница ;Номер страницы (текст.реж.)
    10. MOV BL,атрибут ;Атрибут или цвет
    11. MOV CX,повторение ;Число повторений символа
    12. INT 10H ;Вызвать BIOS
    Однако такой код

    Код (Text):
    1. MOV AH,01 ;Установить размер курсора
    2. MOV CH,00 ;Верхняя линия сканирования
    3. MOV CL,13 ;Нижняя линия сканирования
    4. INT 10H ;Вызвать BIOS
    у меня так и не заработал, точнее размер символа не менялся, возможно я не правильно её использовала
     
  20. rdtsc

    rdtsc Параллелепипедов Артем

    Публикаций:
    0
    Регистрация:
    10 мар 2009
    Сообщения:
    180
    Адрес:
    Москва
    Ну и курсорище у тебя) Ты хочешь длинным курсором рсиовать линию?)
    Не проще ли печатать спецсимвол (178 или 219)

    Например вот вертикальная линия:
    mov bx,101h
    mov cx,10
    mov ah,2
    l1:
    mov dx,bx
    int 10h
    mov dl,178
    int 21h
    inc bh
    loop l1