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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
bomzzz



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

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 11:00 28-03-2012
cp58

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

Всего записей: 295 | Зарегистр. 06-12-2011 | Отправлено: 11:16 28-03-2012
MERCURY127



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

Всего записей: 11553 | Зарегистр. 03-08-2008 | Отправлено: 15:50 28-03-2012
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
"Как же я, как же я сильно хочу... Как же я, как же я очень хочу... "
... собрать DOSIDLE ... где бы добыть эти инклуды:
 
include "_stddata.ah"
include "_tsrres.ah"
include "_dcon.ah"
include "_tsrinit.ah"
include "_cmdline.ah"
include "_console.ah"
include "_process.ah"
include "_test.ah"
include "_irq.ah"
include "_vcpi.ah"
include "_cpu.ah"
 
понятно, что они Written by Marton Balog... быть может, тут обитает кто нибудь более изощрённый в поисках в сети???

Всего записей: 11553 | Зарегистр. 03-08-2008 | Отправлено: 18:50 29-03-2012
cp58

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MERCURY127
Давно собирал через nasm одну из реализаций, она действительно небольшая, непонятно зачем столько подключается дополнительных средств. Если надо выложу бинарник, так как исходники как обычно куда-то исчезли.
 
google -> "filetype:asm dosidle" выдает тучу вариантов.

Всего записей: 295 | Зарегистр. 06-12-2011 | Отправлено: 22:10 29-03-2012
MERCURY127



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

Всего записей: 11553 | Зарегистр. 03-08-2008 | Отправлено: 09:38 30-03-2012
akaGM

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

Цитата:
ВНУТРИ MZ ЗАГОЛОВКА! Один вопрос: КАК???
что-то я тут пропустил...
 
а это не стабом делается?

Всего записей: 24106 | Зарегистр. 06-12-2002 | Отправлено: 11:09 30-03-2012
MERCURY127



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

Всего записей: 11553 | Зарегистр. 03-08-2008 | Отправлено: 11:23 30-03-2012
A1exSun



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

Код:
data segment
    char db "123QWErty"
    scan db 2, 3, 4, 5, 6, 7, 8, 9, 0ah, 0bh
data ends
 
code segment
    ...
    mov cx, 9
    xor si, si
    next_key:
    ; имитация нажатий клавиш
    mov ah, 5
    push cx
    mov cl, [char+si]
    mov ch, [scan+si]
    int 16h
    pop cx
    inc si
    loop next_key

Почему символы вводятся начиная со второй клавиши? То есть получается "23QWErty".
Если так:

Код:
    mov cx, 10
    ...
    mov cl, [char+si-1]
    mov ch, [scan+si-1]

То норм, вся строка.
 
2. Как установить собственный обработчик INT 9h под 8086? Можно код-пример пожалуйста.
Переписывал отсюда, стандартный не возвращается, MS-DOS виснет.
Еще почему в этом коде "down" и "up" выводятся много раз при кратковременном, меньше секунды, нажатии стрелок, а не один раз?

Код:
in al, 60h ; get keyboard port status

Здесь скан-код только что нажатой клавиши?

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 13:21 30-03-2012 | Исправлено: A1exSun, 13:28 30-03-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A1exSun
(1)
странно, у тебя скан-коды вообще с символами не совпадают, начиная с 'Q'
123QWErty
2 3 4 16 17 18 19 20 21
вроде так вот должно быть...
 
и ты бы al после int16 проверял

Всего записей: 24106 | Зарегистр. 06-12-2002 | Отправлено: 15:17 30-03-2012
A1exSun



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

Цитата:
у тебя скан-коды вообще с символами не совпадают

Да, то просто раньше там было 1-9, не исправил. Можно вообще их не писать, а ставить 0, это ничего не меняет.

Цитата:
ты бы al после int16 проверял

Окай, попробую.

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 17:48 30-03-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A1exSun
 
а ты читаешь их по 16h/00?
обычно лучше задержку ввести по 16h/01, появилось в буфере -- прочитать
+
попробуй ещё:
Код:
 
push si
    int 16h
pop si

Всего записей: 24106 | Зарегистр. 06-12-2002 | Отправлено: 18:05 30-03-2012
A1exSun



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

Цитата:
а ты читаешь их по 16h/00?

Точно! В конце программы строки для того чтоб не сразу закрывалась:

Код:
    mov ah, 0h
    int 16h

А я про них забыл. Все окай.
 
Я их пока никак не читал, смотрел что в командной строке появится после запуска программы.
А читать буду с помощью 0Ah INT 21h.

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 18:40 30-03-2012 | Исправлено: A1exSun, 18:41 30-03-2012
bomzzz



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

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 19:07 30-03-2012
cp58

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bomzzz
Что? Откуда? Куда?
 
Переносить можно код с одной операционной системы на другую.(Win->Linux)
Портировать также можно ассемблерный код с других платформ(x86 -> SPARC -> ARM).
Переносить можно код движка для разных DE сред(Qt, GNOME).
И т.д.
 
Чаще всего с самого начала используют переносимые библиотеки, например стандартная библиотека C.

Всего записей: 295 | Зарегистр. 06-12-2011 | Отправлено: 10:40 31-03-2012
bomzzz



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

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 10:42 31-03-2012
cp58

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

Цитата:
библиотека сзначит нужна специальная.  

Сомневаюсь.
 
Часть API от win32 перенесется легко, например CreateFile, с более высокоуровневыми могут быть проблемы.
Больше всего хлопот будет с динамической памятью.

Всего записей: 295 | Зарегистр. 06-12-2011 | Отправлено: 11:09 31-03-2012
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bomzzz, на голом ядре чего? NT Kernel? Linux/BSD Kernel? На каком именно уровне ядра нужно работать? Драйвер или Native NT Application? Покажи уж хоть что именно и куда нужно портировать... а то Телепаты в отпуске

Всего записей: 11553 | Зарегистр. 03-08-2008 | Отправлено: 13:57 31-03-2012
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
да мне сам принцип интересн, хоть куда
 
Добавлено:
должна значица быть какая то комнада компилятору которая позволить все вызовы других библиотек импортировать в саму программу или в дллку специальную типа такого
 
Добавлено:
я даже не знал как писать то правельна пАртировать или пОртировать, от слова part или port

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 14:06 31-03-2012
MERCURY127



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

Цитата:
должна значица быть какая то комнада компилятору которая позволить все вызовы других библиотек импортировать в саму программу

пример для мс компилеров: cl /MT ... file1.c file2.c ... /link /map lib1.lib lib2.lib ...
только врядли тебе это поможет потому что портировать означает вручную переписать/заменить/дописать свои внешние зависимости от исходной платформы на аналоги в целевой. А этот ключ тупо вклеивает все внешние модули в библиотеках в ехе. Т.о. зависимости от msvcrt.dll и пр уйдут, но Win32 зависимости от kernel32.dll и иже с ними никуда не денутся. Хочешь запустить это на лине или на нативной машине НТ - убирай зависимости от kernal32.dll и пр РУЧКАМИ! Т.е. ВРУЧНУЮ ищи или пиши замены всему этому добру: http://i.imgur.com/ak0hg.png
 
Добавлено:
ну разумеется, это нужно, если портируемая программа представляет реальную полезную штуку, а не:
 
include <stdio.h>
main( int arg){
    printf( "\nArgument: %d\n", arg);
}// main
 
это на любой системе с любым си компилером соберется и будет работать но достаточно заменить Argument на Аргумент - и уже весьма вероятны проблемы
 
Добавлено:
и кстати раз уж тема Ассемблер - то знай: портировать прогу на Асме гораздо сложнее, чем на Си - потому как привязка к деталям рабочей платформы обычно намного сильнее, т.к. нет изолирующей прослойки в виде C Run Time routines ...

Всего записей: 11553 | Зарегистр. 03-08-2008 | Отправлено: 14:28 31-03-2012
Открыть новую тему     Написать ответ в эту тему

Страницы: 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