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

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

  1. trash_master

    trash_master New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2006
    Сообщения:
    319
    Адрес:
    Україна
    vatneg
    CreateFile->GetFileSize->ReadFile(or CreateFileMapping->MapViewOfFile)->xor->WriteFile->CloseHandle->ExitProcess :)
     
  2. fedorstepanich

    fedorstepanich New Member

    Публикаций:
    0
    Регистрация:
    31 май 2007
    Сообщения:
    1
    Добрый день!
    Всей группе по asm задали написать планировщик задач учитывая жестко заданные приоритеты для трех циклически работающих процедур выполняющих какие либо преобразования с видеопамятью чисто прямым доступом. Сделать с помощью перехвата прерывания 08h. Т.е каждой процедуре выделяется квант времени 55 мс.

    это из методички:
    Планировщик с принудительным переключением
    В случае планирования процессов с принудительным переключе-зм наилучшим условием для переключения процессов является прерывание таймера (08h). В этом случае квант времени, выделяемый каждому процессу, равен 55 мс, что для большинства приложений вполне удовлетворительно.
    Планировщик базируется на идее перехвата прерывания 08h. После входа в прерывание стек текущего процесса содержит три слова — флаги, сегмент кода и счётчик команд. Если сейчас подать команду iret, то процесс возобновит свою работу.

    Перед переключением на другой процесс планировщик должен сохранить в стеке значения всех регистров процессора, кроме SS:SP, которые как раз и указывают на текущее состояние стека процесса. Значения этих регистров должны быть сохранены в оперативной памяти, выделенной планировщиком для хранения информации о запущенном процессе. Далее в регисты SS:SP планировщик должен занести соответствующие значения, описывающие стек возобновляемого процесса, и восстановить из него значения всех остальных регистров (естественно, кроме счётчика команд, сегмента кода и флагов). После чего новый процесс готов продолжить выполнение по команде iret.
    Таким образом, главной проблемой является начальное формирование стека запускаемого процесса. Такое, чтобы он мог быть запущен в работу стандартной процедурой переключения с процесса на процесс, описанной в предыдущем абзаце. Естественно, кроме стека, для каждого процесса должны быть созданы дополнительные переменные, позволяющие планировщику узнать, что данный процесс нужно учитывать при планировании, а также информацию о его приоритете и т. п.

    В любом случае выполняющиеся процессы не могут просто передавать управление друг другу с помощью команд безусловного перехода, так как в общем случае в произвольно заданный момент времени передачи управления неизвестно, в какую точку другой программы должно быть передано управление. Поэтому для переключения процессов и требуется планировщик, отслеживающий состояние каждого процесса в момент переключения. Это состояние, включающее в себя содержимое регистров процессора и сопроцессора, состояние стека и различную другую информацию, обычно называют контекстом процесса.
    Важно понимать, что одним из важнейших элементов контекста является именно состояние стека, так как процесс может в процессе своей работы вызывать подпрограммы, обращаться к системным подпрограммам обслуживания и т. п. И поскольку переключение на другой процесс может произойти в любой момент, сохранить текущее состояние стека очень важно для возобновления данного процесса в дальнейшем. Иными словами, мы приходим к необходимости создания отдельного стека для каждого запускаемого процесса.

    При переключении с одного процесса на другой планировщик должен сохранить контекст текущего процесса. Очевидно, что в простейшем случае наилучшим местом для сохранения контекста является сам стек текущего процесса. Далее планировщик должен выбрать из очереди следующий процесс, сделать его стек текущим, восстановить из него контекст этого процесса и передать ему управление.

    помогите! пожалуйста
    если не очень трудно напишите коментарий там где можно
     
  3. Katrin

    Katrin New Member

    Публикаций:
    0
    Регистрация:
    9 июн 2007
    Сообщения:
    2
    HELP!!!!!!

    Нужно написать программу на Assembler , такую как :

    Задан одномерный массив, и нужно поменять местами его элементы ( первый с последним и т.д.)
     
  4. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Регистрация:
    8 окт 2006
    Сообщения:
    581
    Адрес:
    МО
    Код (Text):
    1.    mov cx, длинна массива
    2.    mov si,offset исходный массив
    3.    mov di,offset конец массива для записи
    4. label:
    5.    lodsb (lodsw, lodsd)
    6.    std
    7.    stosb (stosw, stosd)
    8.    cld
    9.    loop label
     
  5. Katrin

    Katrin New Member

    Публикаций:
    0
    Регистрация:
    9 июн 2007
    Сообщения:
    2
    Это два раза перевернет массив, не то.

    Прокомментируйте, пожалуйста, всё , что после label
     
  6. pushick

    pushick New Member

    Публикаций:
    0
    Регистрация:
    22 мар 2007
    Сообщения:
    95
    lods - загрузка байтов
    std - флага направления
    stosb сохранение строки байтов
    cld - сброс флага перенаправления
    loop - переход обратно на метку
     
  7. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Не знаю, как там насчет два раза перевернет, но вторая половина массива потеряться должна.
    Это если, конечно, si и di указывают на начало и конец одного и того же массива. А если нет, то код не совсем удовлетворяет условию задачи.
    , а не создать новый перевернутый массив.
     
  8. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
  9. alexey278

    alexey278 New Member

    Публикаций:
    0
    Регистрация:
    12 июн 2007
    Сообщения:
    6
    У меня просьба строго по теме.Требуеться написать три простых маленьких программы - типо лабораторные работы для студентов, поэтому для знатоков плевое дело. Проблема в том, что нам дали задание из расчета что мы умеем это делать, а у нас даже предмета такого не было. Программисты, помогите!!! Очень нужна помощь, и лучше побыстрее в связи с приближающейся летней сессией!!
    Задание и воможный гонорар далее.
     
  10. alexey278

    alexey278 New Member

    Публикаций:
    0
    Регистрация:
    12 июн 2007
    Сообщения:
    6
    Значит так.
    Задание 1.Написать программу, реализующую формулу X=-A/2+4(B+1)+3C. Где A,B,C-любые целые знаковые числа. Организовать вывод результата на экран.
    Задание 2.Дан массив из 10 знаковых чисел (размерность чисел 1 байт). Требуется найти количество положительмых чисел массива. Организовать вывод результата на экран и ввод массива с клавиатуры.
    Задание 3. Дан массив из 10 чисел (размерность чисел 1 байт). Посчитать количество чисел массива, с числом едениц в двоичном представлении числа которых равно 3. Организовать вывод результата на экран.
    Желательно предоставить текст программ и для формата ***.EXE и для ***.COM, а так же текст из файла ***.LST
    В ответ могу предложить к примеру 3 у.е. на электронный счет за каждое выполненное задание. Жду ответы и предложения от вас (можно на мыло).
     
  11. dr_dred

    dr_dred Сергей

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    301
    Адрес:
    Russia
    alexey278
    Знакомое что-то. Ты из какого инста?
     
  12. kush

    kush New Member

    Публикаций:
    0
    Регистрация:
    24 май 2007
    Сообщения:
    46
    alexey278
    задачи 2 и 3 (COM):
    Код (Text):
    1. org 0x100
    2. jmp beg
    3.     ar2: db 0,0,0,128,0,0,0,0,129,0
    4.     ar3: db 0,0,0,0,0,00111000b,0,0,01110000b,0
    5. beg:
    6.     xor    dl, dl
    7.     xor    dh, dh
    8.     mov    si, ar2
    9.     mov    di, ar3
    10.     mov    cl, 10
    11.     loo:
    12.         test    byte [si], 128
    13.         jnz     n
    14.         inc     dl
    15.         n:
    16.         mov     ch, 8
    17.         mov     al, byte [di]
    18.         xor     ah, ah
    19.         loo1:
    20.             shl    al, 1
    21.             jnc    ok
    22.             inc    ah
    23.             ok:
    24.             dec    ch
    25.         jnz     loo1
    26.         xor     ah, 3
    27.         jnz     ok1
    28.             inc    dh
    29.         ok1:
    30.         inc     si
    31.         inc     di
    32.         dec     cl
    33.     jnz loo
    34.  
    35.     mov    cx, 2
    36.     loo3:
    37.         mov    ah, 0x02
    38.         cmp    dl, 10
    39.         jne    less10
    40.             mov    dl, 0x31
    41.             int    0x21
    42.             mov    dl, 0
    43.         less10:
    44.         add    dl, 0x30
    45.         int    0x21
    46.         mov    dl, ' '
    47.         int    0x21
    48.         mov    dl, dh
    49.         dec cx
    50.     jnz loo3
    51.  
    52.     xor    ah, ah
    53.     int    0x16
    54.     mov    ah, 0x4c
    55.     int    0x21
     
  13. alexey278

    alexey278 New Member

    Публикаций:
    0
    Регистрация:
    12 июн 2007
    Сообщения:
    6
    я из техникума МТИ и ВТ, при чем по специальности ТЕХНИК - никак не связанный с программированием, тем более на ASM.
     
  14. alexey278

    alexey278 New Member

    Публикаций:
    0
    Регистрация:
    12 июн 2007
    Сообщения:
    6
    спасибо за помощь, kush, извени меня за то что я может быть спрашиваю элементарные вещи, поясни пожалуйста где здесь 2 а где 3 задание, что можно сказать про 1 задание? как на счет ***.LST?
     
  15. DarkWarrior

    DarkWarrior New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2007
    Сообщения:
    1
    Круговая перестановка символов (с 3-го по 10-ый):
    http://pastebin.mozilla-russia.org/33410
    Проверьте, пожалуйста, есть ли ошибки?
     
  16. alexey278

    alexey278 New Member

    Публикаций:
    0
    Регистрация:
    12 июн 2007
    Сообщения:
    6
    народ, помогите пожалуйста найти все ошибки в программе! срочно!
    Код (Text):
    1. %title "l6.asm"
    2. ideal
    3. Model small
    4. stack 256
    5. dataseg
    6. a dw 10h
    7. b dw 10h
    8. c dw 10h
    9. x dw ?
    10. codeseg
    11. start:  mov ax, @data
    12.     mov dx, ax
    13.     mov ax, 0
    14.     sub ax, a
    15.     saz ax, 1
    16.     mov bx, b
    17.     add bx, 1
    18.     mul bx, 4
    19.     add ax, bx
    20.     mov bx, c
    21.     mul bx, 3
    22.     add ax, bx
    23. disp:   mov ah, 9
    24.     int 21h
    25. exit:   mov ax, 4c00h
    26.     int 21h
    27. end start
     
  17. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
  18. rudik

    rudik Руденко Артём

    Публикаций:
    0
    Регистрация:
    6 дек 2006
    Сообщения:
    302
    Адрес:
    г. Харьков
    Такой команды нету.
     
  19. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Shift arithmetic right through Z flag - всегда мечтал о такой инструкции :)
     
  20. Klipper

    Klipper New Member

    Публикаций:
    0
    Регистрация:
    20 июн 2007
    Сообщения:
    1
    Все привет, вот никак не получается решить задачку на МП i8080, за помощь буду признателен

    Умножить два двухбайтных числа в памяти адреса чисел 0А00Н (мл. байт первого числа) 0А01Н (ст. байт первого числа) 0А02Н (мл. байт второго числа) 0А03Н (ст. байт второго числа).Указатель на начало массива находится в регистровой паре ВС