Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на Assembler

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обсуждаются все вопросы, связанные с программированием на Ассемблере как общего так и конкретного характера.
 
важное примечание
для тех кто считает, что здесь место халявных исполнений курсовых и лабораторных работ.
тут обычно помогают тем, кто сам хоть что-то пытается понять и сделать, но что-то не понимает, что-то не получается...
ведь ассемблер изучают и задачки на нём дают обычно не менеджерам по продажам и даже не всем физ.-мат. специальностям
вы сами избрали этот путь? вот и идите по нему сами, ножками... с ручками и с головой...
 
короче, тут не сборище придурков-альтруистов, которым нечего делать и они ждут-не дождутся когда вы их попросите
что-то сделать _за_ вас
если позарез надо и вы даже готовы заплатить, тогда вам сюда
удачи
 
некоторые ресурсы
http://www.wasm.ru/ Самый популярный русскоязычный ресурс. https://wasm.in/
Ассемблер - книги (ASM, Assembler)
 
Просьба все большие листинги оформлять тегом more.
 
если вам вдруг не отвечают или ответ вас не устраивает
и вообще полезно прочитать всем спрашивающим

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 01:42 29-11-2006 | Исправлено: akaGM, 17:44 11-06-2020
G36

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
странно ждать чудес от трупа

А что есть такое же удобное для отладки в наше время? Даже OllyDbg не умеет отображать исходники.

Всего записей: 37 | Зарегистр. 15-08-2008 | Отправлено: 15:51 20-10-2011 | Исправлено: G36, 15:55 20-10-2011
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
windbg, softice
 
Добавлено:
нашел проблему минимальный размер секции данных (те всех db dw dd dq) для норм отладки должен быть более 512 байт
 
Добавлено:
вот такие пироги...

Всего записей: 11554 | Зарегистр. 03-08-2008 | Отправлено: 17:02 20-10-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
 
   
 
как правильно переопределить все диски, ни фига из описания не ясно. что в DL
 запихать?
 
80h означает что только первый диск сбросится или все жесткие диски?
а 80h+1000000B=С0h означает что все диски сбросятся и жесткие и мягкие или по другому надо?
то есть это все таки номер дисковода или происходит сброс контроллера и соответсвенно всех жестких-мягких дисков?
 
Добавлено:
DL -номер дисковода - может кулаков погорячился?
 

Цитата:
mov dl, 80h
mov ah, 0
int 13h

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 23:42 20-10-2011 | Исправлено: bomzzz, 00:17 21-10-2011
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
из RBIL:
--------B-1300-------------------------------
INT 13 - DISK - RESET DISK SYSTEM
        AH = 00h
        DL = drive (if bit 7 is set both hard disks and floppy disks reset)
Return: AH = status (see #00234)
        CF clear if successful (returned AH=00h)
        CF set on error
Note:   forces controller to recalibrate drive heads (seek to track 0)
        for PS/2 35SX, 35LS, 40SX and L40SX, as well as many other systems,
          both the master drive and the slave drive respond to the Reset.
дело наверное в том, что для биоса диски с 0 по 127 включительно - гибкие, а с 128 по 255 включительно - жесткие. 80h означает что сбросятся только первый жесткий и первый гибкий диски, без учета примечания выше... я понимаю так

Всего записей: 11554 | Зарегистр. 03-08-2008 | Отправлено: 14:32 21-10-2011 | Исправлено: MERCURY127, 14:33 21-10-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вообще если контроллер сбросится все что к нему прицепленно тоже сбросится. вот же блин нигде четко не написано не понятно чему верить
 
Добавлено:
вот еще вариант. на кулакова и так часто жалуются а этот справочник производит впечатление серьезного
Начала системного программирования в среде MS-DOS 7  Автор: Н.Г. Хитрово  
http://old-dos.ru/lib/book_1.html

Цитата:
 
8.01-44     INT 13\AH=00h\0Dh – сброс контроллера дисковода  
 
    При сбросе в начальное состояние контроллер заново заполняет свои регистры  
данными из таблицы параметров соответствующего дисковода (A.08-2,  A.13-1).  
  Сброс контроллера в начальное состояние необходим после каждого неудачного  
обращения к дисководу на гибких или жестких магнитных дисках, и только потом  
попытка обращения может быть повторена.  
 
При вызове:  
            AH    = 00h – обращение к флоппи-дисководу (на гибких дисках)  
                  = 0Dh – обращение к HDD (на жестких магнитных дисках)  
            DL    – номер дисковода (примечание1)  
 
При неудачном завершении флаг CF установлен, в AH – код завершения (A.06-1).  
  Сброс флага CF означает успешное завершение  
 
Примечание1: нумерация дисководов на гибких магнитных дисках начинается с  
               нуля:  00h  –  первый,  01h  –  второй и так далее,    а нумерация  
               дисководов на жестких магнитных дисках –  с 80h: 80h  –  первый,  
                81h –  второй, и так далее.   Нумерация дисководов  (физических  
               дисков)   не связана с буквенными обозначениями логических  
               дисков, которых может быть несколько на каждом дисководе.  
Примечание2: если к одному контроллеру подключены два дисковода,            то при  
               сбросе контроллера в начальное состояние происходит перевод  
               головок на нулевую дорожку в обоих дисководах.         Когда нужна  
               только рекалибровка дисковода переводом головок на нулевую  
               дорожку  без  сброса  контроллера,        тогда  нужно  вызывать  
               INT 13\AH=11h (все прочие спецификации вызова такие же).  

кулаков в принципе тоже самое опять же пишет, почти
   
 

Цитата:
что сбросятся только первый жесткий и первый гибкий диски, без учета примечания выше... я понимаю так

7 бит это 40H , а не 80H

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 15:00 21-10-2011 | Исправлено: bomzzz, 18:32 21-10-2011
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
всегда думал, что биты считаются с нуля...

Всего записей: 11554 | Зарегистр. 03-08-2008 | Отправлено: 19:48 21-10-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
хм. может быть. знать бы что имелось ввиду. но тогда нельзя отличить 80h от 7 бита
 
Добавлено:

Цитата:
REBOOT очищает буферы диска, перезадает диски и организует 1-секундное ожидание перед осуществлением перезагрузки, чтобы дать возможность программам кэширования диска закончить запись любых кэшевых данных.  

мне вообще вот это надо сделать. и вот понять не могу как. хотя и без этого работает вроде
 
Добавлено:

http://emanual.ru/download/8869.html
да вот тута пишуть как ты гавариш
 
Добавлено:
MERCURY127
ну как сделать то вот так: ???

Цитата:
mov    dl, 80h
mov    ah, 0
int    13h
mov    dl, 81h
mov    ah, 0
int    13h

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 19:50 21-10-2011 | Исправлено: bomzzz, 19:52 21-10-2011
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
похоже да, если дисков два то 81, а вот если больше...

Всего записей: 11554 | Зарегистр. 03-08-2008 | Отправлено: 21:40 21-10-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ну вот я и хотел сбросить сразу все. под досом максимум 4 может быть

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 21:41 21-10-2011
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
почему 4?

Всего записей: 11554 | Зарегистр. 03-08-2008 | Отправлено: 21:59 21-10-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
хм. патамуша. у меня так в биосе написькано если система легаси - то в режиме эммуляции включается только четыре устройства, а если нативная - винда то можно сразу и 4 иде устровства пихануть и два сата
 
Добавлено:
может 80аш все таки все сбросит? как бы проверить

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 22:10 21-10-2011 | Исправлено: bomzzz, 22:16 21-10-2011
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Легаци и пр это для иде только вроде. Раз написано от 0 до 255 значит теоретических ограничений нет. Можно в 12 усб портов воткнуть 12 флешек, в 6 сата - 6 винтов - и в теории они все должны быть перечислены... Не факт что дос их все увидит, но биосу же это пофиг - он про дос ничего не знает вообще?
 
Добавлено:
На скази вообще никаких лимитов

Всего записей: 11554 | Зарегистр. 03-08-2008 | Отправлено: 23:21 21-10-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ну я не утверждаю а гавару почему так думаю. тем более как же правильно все диски сбросить.

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 23:36 21-10-2011
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Надо код любого загрузчика типа граб посмотреть они же вроде норм работают

Всего записей: 11554 | Зарегистр. 03-08-2008 | Отправлено: 11:30 22-10-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ни фига там в коде ковыряться. биос диски сбрасывают, а груб не обязательно это делает, ему же не надо выгружать кеширующие дос драйвера

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 13:29 22-10-2011
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Разве мбр сектор знает о существовании "кеширующих драйверов" ?

Всего записей: 11554 | Зарегистр. 03-08-2008 | Отправлено: 13:36 22-10-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
врядлт мбр=пбр сбрасывают диски. контролер инициализируется в биосе

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 14:29 22-10-2011
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
    p = &time[0]; // time - строка "чч:мм"
    _asm { // вывод времени в правом верхнем углу
        mov ah, 0x13  
        les bp, p  
        mov cx, 5  
        mov dh, 0  
        mov dl, 75
        mov bh, 0x00  
        mov bl, 0x07  
        mov al, 0x00  
        int 0x10
    }

Почему после этого виснет, программа дальше не выполняется? Это если выполнять из компилятора.
А если запустить из доса, пишет "неверное время" и просит ввести новое значение Оо
 

Цитата:
13H write string ¦AT¦  EGA  Displays a string at a selected cursor position.
    Characters 0dH (CarRet), 0aH (LineFeed), 08H (bksp), and 07H (Beep) are
    treated as control commands and are not displayed.
    вход:   ES:BP => string to display (special format for AL=2 and AL=3)
            CX = length of string (character count only)
            DH,DL = row,column to start displaying
            BH = page number
            AL = sub function code:
                 0 = use attribute in BL; don't update cursor
                 1 = use attribute in BL; leave cursor at end of string
                 2 = string format: char,attr, char,attr...; don't update cursor
                 3 = string format: char,attr, char,attr...; do update cursor

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 23:37 22-10-2011 | Исправлено: A1exSun, 23:50 22-10-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
это у тебя ассемблерная вставка для какого то языка?
 
http://www.emu8086.com/ отладчик удобный для 16 бит

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 00:07 23-10-2011
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bomzzz
ага, для C, компилятор Borland C++ 3.1

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 00:09 23-10-2011 | Исправлено: A1exSun, 00:09 23-10-2011
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на Assembler


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru