; Обработка горизонтальных линий. IsHorizontalLine: push SCREEN_SEGMENT;установим pop es ;ES:DI на первый байт для отображения mov al,[bp].Color;...
Рисование линий на экранеПроведение линий подразумевает установку на экране всех точек, принадлежащих отрезку. Сложность при рисовании линии в...
Вывод монохромного рисунка на экран в VESA-режиме 640x480x256; masm dos com # .286 .model tiny .code org 100h BITMAPFILEHEADER STRUCT bfType...
Вывод монохромного рисунка на экран в DOSВывод монохромного рисунка на экран в режиме от 0Dh до 12h [IMG] Программа приведенная ниже будет...
Код не использует регистры XMM4-XMM7, и поэтому не было нужды создавать их просмотр. Код просмотра XMM располагается после каждых двух строк SSE2...
Мы видим, что оптимизационные шаги d и h очень хороши, а шаги e, f g и I плохие. Вполне возможно, что оптимальной реализации нет. Мы можем выбрать...
function ArcSinApprox3c(X, A, B, C, D : Double) : Double; asm //push ebp //mov ebp,esp add esp,-8 //Result := ((A*X + B)*X + C)*X + D; fld qword...
В действительности компилятор также вставил инструкцию MOV и мы можем избавиться от лишних пересылок, но не получим преимущества, поскольку нет...
Все, что делается в оптимизаторе это возможность расчета максимально количества комбинаций. По этой причине мы должны оптимизировать оптимизатор...
F_MULF_ADD A*X Такт 1 F_MULF_ADD A*X Такт 2 F_MULF_ADD B*X A*X Такт 3 F_MULF_ADD B*X A*X Такт 4 F_MULF_ADD C*X B*X A*X Такт 5...
Урок 7 Добро пожаловать на урок номер 7. Темой сегодняшнего урока является плавающая запятая в BASM. Это уже было темой в более раннем уроке, но...
Метка If2 становится лишней и когда мы доходим до этой позиции, то мы знаем, что достигнут конец строки (ограничитель #0) и поэтому на не надо...
Когда мы проанализируем код, то мы увидим, что здесь есть смещение -1 при адресации строки. Нет необходимости вычитать это смещение при каждой...
Теперь можно выполнить некоторую оптимизацию. В начале превратим функцию в чисто ассемблерную. Метки были объяснены в листинге предыдущего кода....
В данный момент здесь нет фрейма стека. Регистры EBX и ESI используются, и поэтому требуется их сохранения и восстановление при выходе из функции....
Урок 6Это урок 6 и его тема CharPos. Данная функция ищет первое вхождение символа в строке, и возвращает его позицию когда найдет. Если ничего не...
function ForLoopBASM13(Start, Stop : Integer) : Integer; asm push ebx //push esi push edi //mov esi,eax //for I := Start to Stop do //mov ecx, esi...
function ForLoopBASM8(Start, Stop : Integer) : Integer; asm push ebp push ebx mov ebp,esp add esp,-14h mov edx,edx mov [ebp-4],eax //Result := 0;...
Регистр EAX используется для Start вверху функции и как Result в остальной части функции. Если нет перекрытия по использованию, то мы можем...
Урок 5Добро пожаловать на пятый урок. Его тема циклы. Мы увидим, как компилятор реализует циклы, и какую оптимизацию мы можем сделать в них. Мы...
Имена участников (разделяйте запятой).