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

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A1exSun
Потому что не надо портить содержание некоторых регистров. Во встроенном ассемблере BC 3.1 можно безопасно менять AX, BX, CX, DX, ES. Если отключено использование регистровых переменных, ещё SI и DI. Всё остальное лучше не трогать, а если уж трогается - сохранять до и восстанавливать после.

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 00:09 23-10-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A1exSun
bp стрёмный регистр...
 
попробуй перед
les bp, p
 
написать
push bp
 
а после
int 10
его вытолкнуть
pop bp

Всего записей: 24120 | Зарегистр. 06-12-2002 | Отправлено: 00:09 23-10-2011
A1exSun



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

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 00:12 23-10-2011
bomzzz



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

Цитата:
Команда les считывает из памяти по указанному адресу двойное слово (32 бит), содержащее указатель (полный адрес некоторой ячейки), и загружает младшую половину указателя (т.е. относительный адрес) в указанный в команде регистр, а старшую половину указателя (т.е. сегментный адрес) в регистр ES. Таким образом, команда
 
    les reg,mem
 
эквивалентна следующей группе команд:
 
    mov reg,word ptr mem
 
     mov ES,word ptr mem+2
 
В качестве первого операнда команды les указывается регистр общего назначения; в качестве второго - ячейка памяти с двухсловным содержимым. Указатель, содержащийся в этой ячейке, может быть адресом как процедуры, так и поля данных. Команда не воздействует на флаги процессора.


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



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

Цитата:
А если запустить из доса, пишет "неверное время" и просит ввести новое значение Оо

А это потому что имя моей программы time.exe

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



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

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



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

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



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bomzzz
это в обработчик прерывания, там DOS нельзя

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 14:13 23-10-2011
bomzzz



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

Цитата:
это в обработчик прерывания, там DOS нельзя

не понил. программа под биосом что ли работает?
 
Добавлено:
самое быстрое было бы прямо в видео память записать

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



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bomzzz
ну в обработчике прерывания от какого-либо устройства printf выводит не то что ей указано
 

Цитата:
самое быстрое было бы прямо в видео память записать

как?

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 14:57 23-10-2011
bomzzz



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

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

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A1exSun
писать в в ега/вга буфер
b800:xxxx в текстовом режиме или
a000:xxxx в графическом

Всего записей: 24120 | Зарегистр. 06-12-2002 | Отправлено: 15:00 23-10-2011 | Исправлено: akaGM, 15:01 23-10-2011
bomzzz



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

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

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A1exSun
 
b800:0000 1-ый символ
b800:0001 его атрибут цвет/фон (тетрадный типа 70h)
b800:0002 2-ой символ
b800:0003 его атрибут цвет/фон
 
и так далее...

Всего записей: 24120 | Зарегистр. 06-12-2002 | Отправлено: 15:03 23-10-2011 | Исправлено: akaGM, 15:08 23-10-2011
MERCURY127



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

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



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
B800:0000 вот начальный адрес щас покажу на эммуляторе

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

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

Всего записей: 24120 | Зарегистр. 06-12-2002 | Отправлено: 15:04 23-10-2011 | Исправлено: akaGM, 15:07 23-10-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вот запись байта с асци кодом буквы а привел к выводу ее на экран, второй байт это цвет.
   
 
Добавлено:
так быстрее всего, по крайней мере когда на бейсике программы писал такой вывод НУ ОЧЕНЬ быстродействие ускорял
 
Добавлено:
игрушку на бейсике по другому не напишешь
 
Добавлено:
я какда это узнал - это был первый шаг от бейсика к ассемблеру
 
Добавлено:
насчет stosb  я погорячился, дата сегмент будет указывать у тебя на сегмент где твоя переменная с временем, а записывать надо относительно es. сходу не вспомню какие команды надо использовать
 
Добавлено:
mov ax, 0B800h
mov es, ax
mov es:0000h, 61h
 
вот так. но это тасм, не знаю как для вставки на Си будет
 
Добавлено:
lodsb ds si
stosb es di
 
вот эта связка

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



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

Цитата:
mov es:0000h, 61h

invalid combination of opcode and operands
 
чем такие анимации записывать?

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



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

Цитата:
чем такие анимации записывать?

http://forum.ru-board.com/topic.cgi?forum=62&bm=1&topic=21681#1
 
Добавлено:
http://256bit.ru/Assembler/Pr/Index19.htm
Команды предназначены для операций над строками (строкой называется последовательность байтов или слов памяти с любым содержимым). Они пересылают по одному элементу строки, который может быть байтом или словом. Первый операнд (приемник) адресуется через ES:DI, второй (источник) - через DS:SI. Операцию пересылки можно условно изобразить следующим образом:
 
    (DS:SI) -> (ES:DI)
 
 
только что не получится в одну строку. di надо будет на 1 увеличивать чтоб атрибут цвета пропустить
 
Добавлено:

Цитата:
invalid combination of opcode and operands  

синтаксис у тебя другой у тебя асм для Си, а эммулятор это фасм тасм совместимый
 
Добавлено:
или все таки в ah записать 07 и использовать lodsb stosw тут уже надо такты считать. причем на разных процах разные результаты будут

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 15:48 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