Исходный код для был взят мною из статьи "Низкоуровневое программирование для дZенствующих". Открываю "Блокнот", пишу: CSEG segment org 100h Begin: xor al,al mov bh,10 mov ch,05 mov cl,10 mov dh,10 mov dl,3E mov ah,06 int 10 mov bh,20 mov ch,06 mov cl,11 mov dh,0F mov dl,3D int 10 mov ah,10h; эти 2 строки добавил сам, чтобы форточка не закрывалась int 16h int 20 CSEG ends end Begin Сохраняю файл, например как 1.asm. Далее, в командной строке пишу как обычно masm 1.asm. Компилятор выдаёт сообщение об ошибке: "error A2048". Стоит поменять значение dl для второго окна, например на Dh, или скажем на 10h, код компилируется. Затем линкую: "link 1.obj /TINY;" В результате создаётся одно окно с бегунком, которое закрывается при нажатии любой клавиши. При этом не важно пытаюсь я создать таким образом 2 окна или 5 (как в статье), результат такой же. Интересно, что если обнулить регистры координат окна, ничего не меняется. Помогите, пожалуйста разобраться, в чём причина? P.S. Если не сложно, объясните почему "xor al,al" а не "mov al,00"?
это один хрен, но xor быстрее. Для шестнадцеричных значений на конце 'h' должно быть это у тебя выходит int 0Ah int 20h!!! отсюда и неработа прерываний, ты не те вызываешь и сбои из за ошибок вводных данных) в шестнадцеричном числе, если первая цифра буква (adfh), то перед ней ставится нолик (0adfh), иначе ассемблер воспренимает её как переменную элсо: для доса лучше tasm, а не masm
Оформи _все_ числа в 16-ричном формате (например, "20h" вместо "20") и будет тебе щастье. А "xor al,al" вместо "mov al,0" - это сделано спецом, чтобы все спрашивали.
О-ё-ё-ё-ёй. А я вот слышал, что быстрее было во времена ещё самых первых процессоров, а сейчас чисто машинально так делают.
а щас вон, действие с 32 битовым числом быстрее, чем с 8 битовым. Перестраивают процессоры под С++ и другие комп.