Владимир Боровик: start - new_int09h -- это расстояние от new_int09h до start, но реальный размер резидента -- от точки загрузки exe до последнего байта, который должен остаться в памяти. Я бы сказал, что если функции перенести до start:, то резервировать надо (start + 0fh) / 16, но для exe могу ошибиться в меньшую сторону. Это точно должно работать для com, поскольку там адреса считаются от точки загрузки.
В получившемся коде ещё остаётся два странных места:
первое: repe cmps s1,s2 заканчивается не только когда встречаются разные символы,
второе: получившаяся строка s3 не обязательно будет длиной в 5 символов.
> в Массив s3 в ячейку под номером, который лежит в bx, запишется символ, лежащий по адресу di? Firetheestle: вовсе нет, с чего бы? Запишется сам регистр di. У intel нет команд пересылающих из памяти в память, за исключением movs. Вам надо загрузить временный регистр из [di] и записать его в s3[bx].
Firetheestle: Уже лучше. Ещё пара вопросов:
Первый:
> ...обнуляем регистр bx...увеличиваем регистр bx на единицу, чтобы он не перезаписал одну букву на другую
-- что при этом происходит с регистром bx?
Чтобы понять что сделать я поискал prefix в каталоге debian, нашел его в файлике debian/rules2, нашёл там PF, поискал его, нашёл его в debian/changelog и увидел, что его можно передать через окружение.
Если в binutils нет такого механизма, можно отредактировать debian/rules (если prefix там) или скрипт, который вызывается оттуда для сборки.
Defaults env_keep += "http_proxy https_proxy ftp_proxy rsync_proxy no_proxy"