Он останавливается и выдает незаконное чтение / запись всякий раз, когда я использую задержку. Отстойно, что все время нужно создавать реле для условных переходов, когда программа действительно большая.
blockquote>Это проблема с DOSBox, которая дает сбой функции
int 15h AH=86h
.
Я обошел проблему, запрограммировав механизм задержки, основанный на таймере BIOS. Вы можете найти все детали в a-low-tech-подхода к измерению скорости игрыМои первые параграфы соответствуют описанию вашей проблемы:
[1114 ] При разработке игры мне понадобилась процедура задержки, способная выполнять задержки в диапазоне от 0,5 с до нескольких мс. Очевидным выбором было использовать функцию задержки BIOS 86h на 15h. В среде с реальным реальным адресом он работает правильно, но я видел, что эмулятор, такой как DOSBox, все портит. Тонны нелегального чтения и записи . Поэтому мне пришлось придумать другое решение.blockquote>
Если вас беспокоит размер программы, вы можете изменить эти макросы на подпрограммы. Каждый раз, когда вы вызываете макрос, весь его код вставляется в программу, тогда как подпрограмма кодируется один раз и вызывается несколько раз с помощью простой команды
call
.blockquote>.code org 100 main proc far mov ax, @data mov ds, ax mov es, ax
Вы уверены, что ваша
.model small
программа нуждается в этой директивеorg 100
?Если, как указано в комментарии [119 ], вы изменили на
.model tiny
,ORG
скорее всего должно бытьorg 256
.
С помощью кода:
myButton.enabled = NO;
при использовании интерфейсного разработчика, существует "включенная" опция.