• Как продвинуть сайт на первые места?
    Вы создали или только планируете создать свой сайт, но не знаете, как продвигать? Продвижение сайта – это не просто процесс, а целый комплекс мероприятий, направленных на увеличение его посещаемости и повышение его позиций в поисковых системах.
    Ускорение продвижения
    Если вам трудно попасть на первые места в поиске самостоятельно, попробуйте технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Если ни один запрос у вас не продвинется в Топ10 за месяц, то в SeoHammer за бустер вернут деньги.
    Начать продвижение сайта


  • Иллюстрированный самоучитель по задачам и примерам Assembler

    Массивы структур – таблицы

    mov bx.si
    add bx.di
    shr bx.l; делим на 2 push bx
    movax.type element_tab
    mul bx
    mov bx.ax
    mov al.key:искомое значение в ах
    cmp [bx].Ten.al сравниваем с искомым значением
    je @@rn4; искомое значение найдено
    ja ШтЗ:[bx].len>k;[bx].len<k: popbx
    mov si,bx
    inc si
    jmpcont_search @@m3: pop bx:1
    mov di.bx
    dec di
    jmp cont_search @@m4: movax.type element_tab
    mul si
    mov si.ax
    : конец поиска – в si адрес элемента таблицы со словом длиной 5 байт
    :выводим его на экран:преобразуем длину в символьный вид:
    mov al, [si]. Ten
    хог ex.ex
    movcl.al;длина для movsb
    aam
    or ах.;в ах длина в символьном виде
    mov buf. 1 en_buf.ah
    mov buf.lerMn.al push si:сохраним указатель на эту запись
    add si.simvjd
    lea di.buf.buf_in rep movsb
    mov byte ptr [di].'$':конец строки для вывода 09h (int 21h):теперь выводим:
    lea dx.buf
    mov ah.09h
    int 21h
    :удаляем запись pop si:-i – восстановим указатель на удаляемую запись
    mov di.si
    add si.type element_tab
    mov cx.len_tab
    sub ex.si;в сх сколько пересылать rep movsb:обнуляем последнюю запись
    xor al.al
    mov ex.type element_tab rep stosb
    :вводим слово с клавиатуры: insert:;вводим слово с клавиатуры lea dx.buf mov ah.0ah int21h
    :c помощью линейного поиска ищем место вставки, в котором выполняется условие buf.1еn_
    in=<[si].Ten
    lea si.tab
    mov al.buf.len_in @@m5: emp al,[si].Ten
    jbe @@m6
    add si.type element_tab
    jmp @@m5
    @@m6: push si сохраняем место вставки:раздвигаем таблицу, последний элемент теряется
    add si.type element_tab
    mov cx.len_tab
    sub ex.si;сколько пересылать std
    lea si.tab
    add si, lentab
    mov di.si
    sub si.type element_tab rep movsb eld
    ;формируем и вставляем новый элемент pop di восстанавливаем место вставки
    :обнуляем место вставки push di
    хог al.al
    mov ex.type element_tab rep stosb popdi
    lea si,buf.bufjn
    mov cl.buf.lenjn
    mov [di].len,cl
    add di,simv_id rep movsb
    

    Таблицы с вычисляемыми входами

    Ранее мы отмечали, что скорость доступа к элементам таблицы зависит от двух факторов – способа организации поиска нужного элемента и размера таблицы. Для маленьких таблиц любой метод доступа будет работать быстро. С ростом размера таблицы выбор способа организации доступа приходится производить прежде всего исходя из критерия скорости локализации нужного элемента таблицы. Элементы таблицы отличаются друг от друга уникальным значением ключевого поля. При этом ключевыми могут являться не только одно, но и несколько полей элемента таблицы. Ключ, в том числе и символьный, в памяти представляется последовательностью двоичных байт. Исходя из того что ключ уникален, соответствующая двоичная последовательность также будет уникальной.

    А нельзя ли использовать это уникальное значение ключа для вычисления адреса местоположения элемента в таблице? Оказывается, можно, а в ряде приложений это оказывается очень эффективно, так как в идеальном случае доступ к нужному элементу таблицы осуществляется всего за одно обращение к памяти. С другой стороны, на практике часто возникает необходимость размещения элементов таблицы с достаточно большим диапазоном возможных значений ключевого поля, в то время как программа реально использует лишь небольшое подмножество значений этих ключей. Например, значение ключевого поля может быть в диапазоне 0..3999, но задача постоянно использует не более 50 значений. В этом случае крайне неэффективным было бы резервировать память для таблицы размером в 4000 элементов, а реально использовать чуть больше 1% отведенной для нее памяти. Гораздо лучше иметь возможность воспользоваться некоторой процедурой, отображающей задействованное пространство ключей на таблицу размером, близким к значению 50.

    Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.