Size: a a a

Ассемблер

2021 April 17

楽園松本 in Ассемблер
Блин, сколько лет змейке?!
источник

D

Den in Ассемблер
да, путаю динамические данные с исполняемым кодом, виноват 😁
источник

楽園松本 in Ассемблер
Нет разницы между ними
источник

D

Den in Ассемблер
наверное много больше чем тетрису 😁
источник

D

Den in Ассемблер
как нету? код то исполняется а данные только читать или писать можно а в код то ничего не запишешь?
источник

楽園松本 in Ассемблер
В гарвардской архитектуре данные и программа живут отдельно. В обычной фоннеймановской, или негарвардской, архитектуре данные и программа суть одно
источник

楽園松本 in Ассемблер
В код-таки и все нормальные люди пишут инфу
источник

楽園松本 in Ассемблер
Код, кстати, это нерациональное использование памяти. Потому как выполнившись один раз, код больше уже не нужен, но продолжает занимать драгоценную память. Мы же говорим про системы с 500 байтами памяти, да?
источник

D

Den in Ассемблер
ну я имею ввиду скажем вызвали int 10h значит запустили код, который уже обратился в порты видеокарты и приказал ей установить скажем видеорежим указаный в ax или сгореть 💥 например 😁 а можно просто считать данные таймера или состояния какого-то устройства по какому-то адресу там, это ведь не одно и тоже а можно вообще минуя прерывания bios и dos напрямую обратиться в какой-то порт замапленый биос-ом по какому-то сегменту:смещению, что-то записать туда, чтобы поуправлять чем-то или наоборот, что-то считать, например состояние обратного хода луча из видеокарты, как мы тут делали, в зависимости от назначения порта, порт ведь внутри устройства тоже может какую-то программу запустить, это уже надо изучать техническую документацию различных аппаратных средств, для чего какие порты предназначены, как управляются, какие состояния чего значат и тд..
источник

D

Den in Ассемблер
точно не уверен но вроде обсуждали реал моде с 640 кб памяти и страничной адресацией, это дос я так понял хотя возможно перепутал страницы с сегментами
источник

D

Den in Ассемблер
кстати может одно из этих прерываний пользуется в том числе вот тем адресом таймера?:
int 1ah  это ввод вывод таймера
int 1ch это показания таймера
источник

D

Den in Ассемблер
вот посмотрел даже, там такие штуки реализованны в  int 1ah , типа будильника:
кладем в ah 06h
затем кладем в ch, cl, dh часы, минуты, секунды, потом вызываем int 1ah (даже не в цикле на сколько я понял а единократно) и в назначеное время вызовется ваша программа по вектору int 4ah (адрес начала кода нашей программы  кладем в ax после вызова int1ah) и флаг cf станет единицей, что тоже можно использовать как триггер я думаю!
источник

ST

Saenro T in Ассемблер
И всё таки, где такое почитать? А то я иногда, как теперь оказалось, по незнанию/глупости что этого делать нельзя, осуществляю подмену 8-го вектора (системный таймер) на своё усмотрение (а он же входит в первые 32 вектора!) Ай-яй-яй...
источник

IL

Ilgga Latypovv in Ассемблер
вопрос
источник

IL

Ilgga Latypovv in Ассемблер
11 21717008
это вывод
почему меняется к10?
источник

IL

Ilgga Latypovv in Ассемблер
*r10
источник

IL

Ilgga Latypovv in Ассемблер
вот сначала вывело 11, это правильно
а потом случилось что-то очень странное
источник

A

Aleksandr in Ассемблер
Потому что не все регистры сохраняются при вызове си-функций. А ты еще и про теневую зону забыл
источник

A

Aleksandr in Ассемблер
Глянь соглашение о вызоыах
источник

IL

Ilgga Latypovv in Ассемблер
какое из?
источник