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

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

  1. _nic

    _nic New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2007
    Сообщения:
    372
    Необходимо написать программу для маскировки прерывания флоппика.Кто нибудь что то подобное делал?
     
  2. mrhx

    mrhx New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2006
    Сообщения:
    63
    Если кому-нибудь нужна лабораторная по асму "прога для перемещения директорий в FAT12 (дискета) только через прерывания BIOS", то вот тут она есть: http://mrhx.narod.ru/attic.htm
     
  3. Snowmen

    Snowmen New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2007
    Сообщения:
    1
    Всем привет
    Имеется следующий кусочек кода
    Код (Text):
    1. IDEAL
    2. P386
    3. LOCALS
    4. MODEL MEDIUM
    5.  
    6. DATASEG
    7. TestR DD ?
    8. ENDS
    В результате различных операций в TestR появляются некоторые данные (число) вопрос, как это число вывести на экран в командной строке.

    Пробовал что то вроде (из примеров)
    Код (Text):
    1. mov ax,@data   
    2. mov ds,ax
    3. mov bx,1
    4. mov cx,4
    5. mov dx,offset TestR
    6. mov ah,40h
    7. int 21h
    Но выводятся всякие крякозяблики ((
     
  4. Y_Mur

    Y_Mur Active Member

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

    svas New Member

    Публикаций:
    0
    Регистрация:
    31 окт 2006
    Сообщения:
    39
    Нужно определить тип процессора.
    При проверке получается что это 80286

    Из задания лабы
    Код (Text):
    1.                  
    2. mov bx, 0x7000
    3. push bx
    4. popf
    5. pushf
    6. pop bx
    7. and bx, 0x7000
    8. jz _286
    Но не может же он быть 286-ым?!!
    Что не так?
     
  6. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    svas
    Прикольно ;)))
    На самом деле это значит что камень >= 286
    А если он PIII или старше то:
    Код (Text):
    1.         mov EAX, 80000002h  ; Определяем процессор (для <= PII не работает)
    2.         cpuid
    3.         mov DWORD PTR [CPU_info +  0], EAX
    4.         mov DWORD PTR [CPU_info +  4], EBX
    5.         mov DWORD PTR [CPU_info +  8], ECX
    6.         mov DWORD PTR [CPU_info + 12], EDX
    7.         mov EAX, 80000003h
    8.         cpuid
    9.         mov DWORD PTR [CPU_info + 16], EAX
    10.         mov DWORD PTR [CPU_info + 20], EBX
    11.         mov DWORD PTR [CPU_info + 24], ECX
    12.         mov DWORD PTR [CPU_info + 28], EDX
    13.         mov EAX, 80000004h
    14.         cpuid
    15.         mov DWORD PTR [CPU_info + 32], EAX
    16.         mov DWORD PTR [CPU_info + 36], EBX
    17.         mov DWORD PTR [CPU_info + 40], ECX
    18.         mov DWORD PTR [CPU_info + 44], EDX
    19.         mov DWORD PTR [CPU_info + 48], 0   ; завершающий ноль для win или $ для ДОС
    20.         mov eax, 1
    21.         cpuid
    22.         mov [stepping], eax
    23.         and [stepping], 0Fh
    24.         shr eax, 4
    25.         mov [model], eax
    26.         and [model], 0Fh
    27.         shr eax, 4
    28.         and eax, 0Fh
    29.         mov [family], eax
    где CPU_info имя камня в виде текста :)
     
  7. konstantinopol

    konstantinopol New Member

    Публикаций:
    0
    Регистрация:
    14 фев 2007
    Сообщения:
    1
    Помогите написать на Си со вставками Ассеблера под DOS
    1.Отсорировать пять чисел по возрастанию.
    2.Дан массив размерности n.Найти первый отрицательный элемент.
    3.В строке заменить все символы '1' символом '0', а символы '0' символом '11'

    kamenetsky05@mail.ru
    icq487600521
     
  8. tz

    tz New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    5
    Помогите разобраться:
    Код (Text):
    1. ...
    2. // запрещаем прерывания (и NMI)
    3. $CLI
    4. // сохраняем старое значение регистра A
    5. $MOV    AL, 0x8a
    6. $OUT    0x70, AL
    7. @Pause();
    8. $IN AL, 0x71
    9. @Pause();
    10. $AND    AL, 0x7f        // сбрасываем флаг UIP
    11. $MOV    rtc_register_A_old, AL
    12. ...
    Где:
    Код (Text):
    1. // Короткое ожидание -- нужно для работы с портами ввода вывода.  
    2. : void Pause() {
    3.     $JMP    lbl
    4. @lbl:
    5. }
    Думаю язык программирования не имеет большого значения (для интересующихся, это c--). Для меня сложность состоит в следующем: непонятно зачем здесь нужны @Pause(), и нужны ли они? Обращаюсь к тем кто знает: поделитесь знаниями -- очень бы хотелось узнать в каких случаях необходимы и достаточны такие "паузы".
     
  9. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    tz
    Собственно про эти паузы много писали во времена 286 (особенно когда их разгоняли по частоте ;))) Тогда медленная периферия не успевала среагировать на действия камня. Сейчас эта проблема решается аппаратно, т.е. in, out сами тормозят камень до тех пор пока не будет достигнута синхронизация с периферией, поэтому интенсивная работа с портами (если только они не буферизированы быстрым fifo) глухо затормаживает всю многозадачную винду :)
    ЗЫ: Любопытно в Core Duo эта проблема решена или тоже могут оба ядра подвиснуть ? :)))
     
  10. tz

    tz New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    5
    Y_Mur
    Thx
     
  11. Woland88

    Woland88 New Member

    Публикаций:
    0
    Регистрация:
    23 фев 2007
    Сообщения:
    6
    Всем доброго времени суток :)
    Задача:
    Очень нужна программа на Asm, которая
    определяет серийный номер, марку и производителя
    сетевого адаптера, и потом выводит
    считаные значения на экран в понятной форме.
    (Это тема моего курсача)

    Кусочек чего-то похожего нашел здесь:
    http://www.wasm.ru/article.php?article=hardzen
    Но там прога ищет ВСЕ девайсы подключенные к шине PCI.
    И нет процедуры вывода на экран считаных значений.
    Еще нашел книгу:
    Кулаков В. - "Программирование на аппаратном уровне.
    Спец. справочник"
    ,(кому надо-могу выслаты на мыло)
    но там очень большая и очень сложная прога.
    А мне - только изготовителя, модель и серийный номер.

    Просьба - не думать, что я ленивый или халявщик,
    просто знаний нехватает чтобы из проги Кулакова сделать прогу под свою задачку.

    Или, может, чтоб не сильно вас напрягать -

    просто подскажите, как спомошью функций PCI BIOS поискать сетевуху, считать ее изготовителя, марку и серийник, и потом ето все дело акуратно вывести на экран?

    И попутно вопрос: все что я нашел касается сетевух, которые подключенны к шине PCI, а как быть, если сетевой адаптер интегрирован в материнку?

    Ребят, помогите, ПОЖАЛУЙСТА.
    Очень надо. Я в программирование не очень...
    А курсач надо здавать в понедельник.
    P.S.
    Буду ОЧЕНЬ БЛАГОДАРЕН ВСЕМ кто откликнетца ;)
     
  12. PaCHER

    PaCHER New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2006
    Сообщения:
    852
    lexer
    Научись пользоватся ХЛПшными файлами, там есть нопочкы далее.
    Позновато заглянул но всеже.
    И что, будет распознан тоже как PCI. Так что PCI поиска достаточно.

    Для этого есть согрупники, которые хоть както в програмировании, и за умеренную плату тебе естессно помогут
     
  13. Woland88

    Woland88 New Member

    Публикаций:
    0
    Регистрация:
    23 фев 2007
    Сообщения:
    6
    PaCHER
    Спасибо конечно за совет.
    Но ты будеш долго смеятся - в нашей группе я и есть тот кто
    (специальносты-обслуга ПК)
    Просто на четвертом курсе такой курсач по системному программированию задали.
    Если не внапряг-плиз, хоть подскажи
    -как для етого куска проги:
    http://www.wasm.ru/article.php?article=hardzen
    сделать преобразование в символьную форму считанных значений и вывод на экран
     
  14. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    Woland88, интересно, а как твои согрупники сдают?
     
  15. Woland88

    Woland88 New Member

    Публикаций:
    0
    Регистрация:
    23 фев 2007
    Сообщения:
    6
    RamMerLabs
    За деньги.
    Основную масу народа вообще неинтересует предмет вчасности, и специальность вцелом.

    А я хочу в этом разобратся, пусть и с чужой помощью -
    написать РАБОЧУЮ прогу.
    Мне теории не хватает (как считать параметры и как организовать их вывод на экран)

    Ты пойми - я конспект лекций нормально вел, просто напротяжении курса нам давали основы
    (очень мало и очень легкое),
    а курсачи дали - по полной программе, так что моих знаний не хватает.

    PaCHER
    Позволю себе несогласится - прога Кулакова (оригинальная, с диска который предоставляется с книгой),
    на компах где сетевухи PCI-ные пашет отлично, а на тех ПК, где сетевой контроллер интегрировани в материнскую плату - выдает сообщение
    "PCI BIOS не найден"
    Просьба не беспокоится - прогу запускал из чистого DOS`a, не емуляция, не командная строка.
    Может я в программировании чайник, но в таких вопросах я кое-что понимаю.
    Вот так.
     
  16. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Весёлый топ. Хорошо, что хоть топ, а не форум.
     
  17. Woland88

    Woland88 New Member

    Публикаций:
    0
    Регистрация:
    23 фев 2007
    Сообщения:
    6
    Я так понял, помогать никто не будет.
    Ладно.
    А так:
    Код (Text):
    1. ;BL - bus, BH - device, CL - function, CH - register
    2. RD_PCI PROC NEAR
    3.  mov dx,0CF8h
    4.  xor eax,eax
    5.  mov al,bl
    6.  or ah,80h ;
    7.  shl eax,16
    8.  mov ah,bh
    9.  shl ah,3
    10.  or ah,cl
    11.  mov al,ch
    12.  and al,0FCh
    13.  out dx,eax
    14.  mov dx,0CFCh
    15.  in eax,dx
    16.  ret
    17. RD_PCI ENDP
    - это процедура поиска устройства на шине PCI.
    Код (Text):
    1. mov bl,0;bus
    2. mov bh,0;device
    3. mov cl,0;function
    4. mov ch,0;register
    5.  
    6. label1:
    7. call rd_pci     ;Читаем регистр
    8. cmp eax,0ffffffffh  ;Если прочитались все единички - устройства нет
    9. jnz device_found        ;Если же не все единички - "что-то есть"
    10. label2:
    11.  
    12. ;inc cl         ;Если этот блок раскомментировать будут выводится не
    13. ;cmp cl,8       ;только устройства, но и  все их функции
    14. ;jnz label1
    15. ;mov cl,0
    16.  
    17. inc bh          ;Цикл устройств
    18. cmp bh,32
    19. jnz label1
    20. mov bh,0
    21.  
    22. inc bl          ;Цикл шин PCI
    23. cmp bl,255
    24. jz exit
    25. jmp label1
    26.  
    27. device_found:
    28. … ;Преобразование в символьную форму считанных значений и вывод на экран
    Уважаемые Воины дзена, я прошу совета -

    Как для этого куска кода сделать
    P.S.
    Желающих просто пообщатся на отвлеченные темы - просьба не беспокоить!

    P.P.S.
    Остальным, кто не оставит одинокого воина в беде, и кто подскажет студенту
    Буду очень признателен
     
  18. Woland88

    Woland88 New Member

    Публикаций:
    0
    Регистрация:
    23 фев 2007
    Сообщения:
    6
    IceStudent
    Извини, пожалуйста, если я кого-то обидел, или нарушил правила
    (больше не буду увлекатся форматированием шрифта)
    Но я пришел сюда за советом.
    Разве я неясно излагаю проблему?
    Или прошу очень много?
     
  19. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    Очень знакомо. Не знаю ещё как будет в этом семестре...
    Извиняюсь за оффтоп. Что-то язык (или руки) у меня развязались под конец праздника...
     
  20. Y_Mur

    Y_Mur Active Member

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