Старый 24.12.2021, 00:08   #1
omne999666
 
Аватар для omne999666
 
Регистрация: 06.11.2019
Сообщений: 1
Репутация: 0
Exclamation Труд программирования в ФАСМ компиляторе.

1) Директива объявления размера сегмента и шестнадцатеричное обозначение виде буквы Н до этого число размера сегмента
2) Инструкции и регистры имеющие разрядность 32 -16 8 бит.
3) Прерывания шестнадцатеричное число виде а-10 десятеричной и символа Н.
4) Имя на хитрость переменной виде размера имени названия её, а так же символы двойных кавычек.
5) Все остальное это только запятые в рекомендации к правилам компиляции после регистра и регистров разрядности, там же не забывая перед шестнадцатеричным числом и после верхних двойных кавычек.
6) Символы между двойными верхними кавычками не учитываются оставляй что угодно безопасность такова она никаких переполнений тебе обмен буфера.
7) Комментарий это точность точки запятой.
8) Флаги регистров они просты их операциями установки или в ноль и единичку остальное только лишь другие изменения флагов вместе но концертировать внимание в памяти приходится только на значении одного не измененного значения из регистров флагов тем самым зная что регистр общий имеющий свою разрядность может еще использовать дополнительные мнемонические команды если уж очень сильно нужно что то применить к выводу и вводу данных только применяется прерывание и его интерпретация запоминается или пропуском который при не переполнении флага регистров как 32 разрядный регистр ЕПАЙ то есть имеем флаг ЕП существующий всегда без щедро значение 1 при проверки результат всегда 0. Проверять при результате ноль очень просто командой тест еп, еп вот все имеем результат ноль. А для единицы нам понадобится всего лишь пополнение командой тест ЕПАЙ, ЕПАЙ.
9) Работа с сегментом и селектором обычно их разделяет всего лишь двухточечный , сегмент это количество выделенное для памяти адреса данных, селектор это указатель на данные использовавшиеся в адресе сегментов или сегмента.
А) Краткость всего программирования в таком процессе заставляет оставлять лишь методы понятого и пройденного опыта как например 16 регистров процессора которые напоминают совершенство их сложенных уровней регистр или низкий разряд регистра или высокий разряд регистра.
Б) Простота расшифровки символов мнемоники команд и команды инструкции процессора в языке математического объяснения как Ассемблер он язык же низкого уровня программирования и за красоты использования своих команд в опкодах.
С) Опкоды это команды процессора в языке ассемблер или без него в виде шестнадцатеричной системы счисления и использование полной функциональности процессора к распознаванию вычислений данных в его работе как процессора имеющегося у вас роботе как электронно вычислительного устройства.
Д) Ограничивает процессор только сокет его распиновки сколько пинов столько и одних и тех же неизбежных видов обработки данных. Пин и Пины работают каждый никогда не знаю о друг друге.
Е) Работа с КЭШ или КЭШЕМ процессора одна из радостей процессора можно подменять значения пинам как и пину, не зная о расширении процессора хранении в нем данных вряд ли можно то добиться высоких результатов при работе над созданием асм соурса.
Ф) Самое эевм или че то там такое "ЭЭ, ухмыльнуться дерзость шутки слов радостно" частота процессора чем выше частота процессора или ниже частота процессора тем лучше он делает разрыв между данными и передачи напряжения тем самым заставляет насторожено относится его сбоям, сам случай именно в длине опкода если разница в значение выше числа обычного десятичного чем 9+8 остальные подставные +7, +6, +5, +4, +3, +2, +1 кроме 0 потом как и во всем остальном результат программирования использования такта за операций за секунду не вырастет.
10) Шесть символов латинского языка это всегда А, Б, С, Д, Е, Ф это то что используется для замены обычных десятичных чисел место двух их повторов, вопрос для чего: всего лишь что иметь представление между форматированием данных программы и программного кода на этом языке низкого уровня это как глубокое понимание счета в мануфактуре математике элементарной.
11) Погоня за лучшим тактом команд
12) Создание маленьких алгоритмика выбирая из них совершенный для себя свобода выбора идеи и идея вранья всем у всего существующего программном кодинге.
13) Радостный и совсем простой для работы стек который растет сверху вниз и уменьшаясь снизу верх, его уровни помещения данных в него извлекая их или обратном порядке или помещая в просто порядке. СТЕК не изменить что сказать глубина его такова.
14) Бесконечно словесное теоретическое обсуждение компилятора ФАСМ заканчивается лишь на его невозможности объяснить тем что прост и имеет свой счет одного это отсутствия бесконечности его бесконечность давно разорвана самим и простым принципом потребителя как стремления к другим компиляторам как и все компиляторы он один из них который просто берет и даёт выполнить одно и более двух тем временем как другие компиляторы не дают выполнить тоже самое только в своей среде компиляции это найти тот момент написания опен соурс когда меняется разрыв данных добавления к параллельности их применению это как составлять алгоритм математического шифрования код данных, а в этот момент он отказывается останавливаться на одном и полном куске программного кода одной много строчной программы создавая проблему создания все больше и больше разных файлов с программными кодами причиняя вред совершенству ассемблеру.
15) Исследуйте все в ФАСМ компиляторе кроме коры его функций к криптографии, а так он все сдержано возможен.
16) Это просто заметка без счета в счету одной ошибки единственной в компиляторе ФАСМ его невозможность создать более двух функций он просто одно поток или все потоки к одинаковым данным.
; На этом все что хотел написать печатая этот текст думаю это просто статья на русском о языке программирования ассемблер в середине осваивания компилятора ФАСМ.
\\ Смысл её для прочтения был только в не читай рискуя не понять английский.
! Трудись за ради простоты криптографии в общем знайте алгоритм шифрования и его соль расшифровки и забудьте о тупости других алгоритмов кроме МД5 он процент всем кодам твоего ассемблер кодинкса.
% Не забудь обязаться написать что есть то чего не вернуть это разных архитектур в языке ассемблер, тем он оканчивается своё присутствие в мире компиляции компилятором на Фасм.
* Флат ассемблер и апай библиотека все довольно просто вызов библиотеки и её функции на уровне приложения программного интерфейса, в один из регистров помещается номер последнего вызова интерфейса который является сообщением о разрядности пользования списком функций которые входят оконо визуальный режим ГНУ который поддерживается только с АПАЙ библиотекой графический не форматный список вызовов визуализации. Вызов заканчивается на невозможности интерпретации одного из символов АСКАЙАЙ такого который не может просто интерпретироваться как Ф в шестнадцатеричной системе счисления с символом Х, помогает только перехват прерываний в отдельных окнах и графы гипер перехвата функций блокнота запущенного еще с кучей различных стандартных программ Виндовс в основном чем последней версия и категория виндовс специалиста тем лучше работает отладочный код, только не вот буфер обмена который приходится запоминать как будто бы создаётся и пытаешься создать собственный компилятор с транслятором и линкером, выходит вполне графический продуктивный программно визуальный мягкософт только без массовки кода, а вот уже приходится самому вбивать сутками на пролет придумывая один и тот же проект до 26 раз больше кода вот вся задача как всегда в этих всех заметках.
@ Смысл смылся и у терялся только в без численном количестве ошибок выполнения транслятора и линкера который как будтобы потыкает и упрекает хамству прикрикивая в очередной раз сделать поделку привязки мелкомягким вроде как блокнот но в реальности похож скелет каково то редактора или создателя программного формата текстов в роде подвидов форматов документов для электронных устройств, все дело именно в отладке процесса процессов работы между совместительством между различными системными потоками в виндовс и их разрядностью.
= Работа с портами заканчивается только в остановки полной роботы программы и перепись её кода заново каждый раз задорно задротно повторять бессмысленный код идентичный другим кодам путаясь лишь одно и тоже в повторе переписывая забывая что пишешь один и тот же код уже второй или восьмой во все десятый раз. Но все это не раз и не разу не разы.

Установка цвета текста.

биты байта цвета, буквы текста цветные, все цвета символов, символ цвета текст, цвета установка цвета, цвета символов цветные буквы, цветные символы.
Как устанавливать цвет символов при выводе строки в языке ассемблере?
AMD 64, Windows 10, x86.
9 коулеоурсе.
Один установленный цвет один бит.
Биты. Цвета символов. Пример символов.
Код:
00000000b Чёрный Чёрный
00000001b Синий Синий
00000010b Зелёный Зелёный
00000011b Голубой Голубой
00000100b Красный Красный
00000101b Пурпурный Пурпурный
00000110b Коричневый Коричневый
00000111b Светло-серый Светло-серый
00001000b Темно-серый Темно-серый
00001010b Светло-зелёный Светло-зелёный
00001011b Светло-голубой Светло-голубой
00001100b Светло-красный Светло-красный
00001101b Светло-пурпурный Светло-пурпурный
00001110b Жёлтый Жёлтый
00001111b Белый Белый
OpCodesEN. OpCodesRU.
Операционные коды Intel на ассемблере 80x86
В следующей таблице приведен список мнемоник x86-Assembler, который не является полным. Большинство из них можно найти, для других см. На обозначения и формат, используемые в этом документе
Код:
    AAA - Ascii настроить для добавления
    AAD - Ascii с учетом дивизии
    AAM - Ascii настроить для умножения
    AAS - Ascii отрегулировать для вычитания
    ADC - добавь с собой
    ДОБАВИТЬ - Арифметическое сложение
    И - Логическое И
    ARPL - скорректированный запрашиваемый уровень привилегий селектора
    BOUND - проверка привязки индекса массива
    BSF - бит сканирования вперед
    BSR - обратное сканирование битов
    BSWAP - перестановка байтов
    BT - Битовый тест
    BTC - Битовый тест с комплиментом
    BTR - Битовый тест со сбросом
    BTS - Битовый тест и установка
    CALL - вызов процедуры
    CBW - конвертировать байт в слово
    CDQ - конвертировать двойной в квад
    CLC - Clear Carry
    CLD - Очистить флаг направления
    CLI - сбросить флаг прерывания
    CLTS - Очистить флаг переключения задач
    CMC - дополнение Carry Flag
    CMP - Сравнить
    CMPS - строка сравнения
    CMPXCHG - сравни и обменивайся
    CWD - конвертировать слова в двойные слова
    CWDE - конвертировать слова в расширенные двойные слова
    DAA - десятичная коррекция для сложения
    DAS - десятичное значение для вычитания
    DEC - Декремент
    DIV - Разделить
    ENTER - Сделать кадр стека
    ESC - Escape
    Инструкции с плавающей точкой - без описания
    HLT - останов процессора
    IDIV - Подписание целочисленного деления
    IMUL - Multiply с подписью
    IN - входной байт или слово из порта
    INC - Увеличение
    INS - строка ввода из порта
    INT - прерывание
    INTO - Прерывание при переполнении
    INVD - недействительный кеш
    INVLPG - недействительная запись в буферный буфер
    IRET / IRETD - возврат прерывания
    JA / JNBE - Прыжок выше / Прыжок ниже или ниже
    JAE / JNB - Прыжок выше или равно / Прыжок не ниже
    JB / JNAE - Прыжок ниже / Прыжок не выше или равно
    JBE / JNA - Прыжок ниже или равно / Прыжок не выше
    JC - Перейти на Carry
    JCXZ / JECXZ - переход, если регистр (E) CX равен нулю
    JE / JZ - Jump Equal / Jump Zero
    JG / JNLE - Прыгай больше / Прыгай не меньше или не равней
    JGE / JNL - Прыгать больше или равно / Прыгать не меньше
    JL / JNGE - Прыгай меньше / Прыгай не больше или не равный
    JLE / JNG - прыгать меньше или равно / прыгать не больше
    JMP - безусловный переход
    JNC - Прыгай, не неси
    JNE / JNZ - Прыжок не равен / Прыжок не равен
    JNO - Прыжок не переполнен
    JNS - прыжок не подписан
    JNP / JPO - нечетный переход / четность перехода нечетный
    JO - Перейти на переполнение
    JP / JPE - переход на четность / переход на четность
    JS - Jump Signed
    LAHF - регистр загрузки AH от флагов
    LAR - загрузить права доступа
    LDS - указатель загрузки с использованием DS
    LEA - эффективный адрес загрузки
    LEAVE - Восстановление стека для процедуры выхода
    LES - загрузка указателя с использованием ES
    LFS - загрузка указателя с использованием FS
    LGDT - загрузить глобальную таблицу дескрипторов
    LIDT - таблица дескрипторов прерываний загрузки
    LGS - загрузка указателя с помощью GS
    LLDT - загрузить локальную таблицу дескрипторов
    LMSW - загрузить слово состояния машины
    LOCK - заблокировать автобус
    LODS - строка загрузки
    LOOP - Уменьшение CX и Loop, если CX не ноль
    LOOPE / LOOPZ - цикл пока равен / цикл пока ноль
    LOOPNZ / LOOPNE - Цикл пока не равен нулю / Цикл пока не равен
    LSL - предел сегмента нагрузки
    LSS - загрузка указателя с использованием SS
    LTR - Загрузить регистр задач
    MOV - Переместить Байт или Слово
    MOVS - Move String
    MOVSX - движение со знаком расширяется
    MOVZX - двигаться с нулевым расширением
    MUL - беззнаковое умножение
    NEG - отрицание комплемента двух
    NOP - Нет операции
    НЕ - отрицание комплимента
    ИЛИ - Включая Логическое ИЛИ
    OUT - вывод данных в порт
    OUTS - выводит строку в порт
    POP - Pop Word вне стека
    POPA / POPAD - Вставить все регистры в стек
    POPF / POPFD - вытащить флаги из стека
    PUSH - толкнуть слово в стек
    PUSHA / PUSHAD - поместить все регистры в стек
    PUSHF / PUSHFD - Вставить флаги в стек
    RCL - Повернуть через Carry Left
    RCR - Повернуть через Carry Right
    REP - Повторить строковую операцию
    REPE / REPZ - Repeat Equal / Repeat Zero
    REPNE / REPNZ - повтор не равен / повтор не равен нулю
    RET / RETF - возврат из процедуры
    ROL - Повернуть налево
    ROR - Повернуть вправо
    SAHF - хранить AH зарегистрироваться во флаги
    SAL / SHL - Арифметика сдвига влево / Логическое смещение влево
    SAR - сдвиг арифметического вправо
    SBB - вычесть с заимствованием
    SCAS - строка сканирования
    SETAE / SETNB - установить, если выше или равно / установить, если не ниже
    SETB / SETNAE - установить, если ниже / установить, если не выше или равно
    SETBE / SETNA - установить, если ниже или равно / установить, если не выше
    SETE / SETZ - установить, если равно, или установить, если ноль
    SETNE / SETNZ - установить, если не равно / установить, если не равно нулю
    SETL / SETNGE - установить, если меньше / установить, если не больше или равно
    SETGE / SETNL - установить, если больше или равно / установить, если не меньше
    SETLE / SETNG - установить, если меньше или равно / установить, если не больше или равно
    SETG / SETNLE - установить, если больше / установить, если не меньше или равно
    SETS - установить, если подписано
    SETNS - установить, если не подписано
    SETC - установить, если Carry
    SETNC - установить, если не переносить
    SETO - установить, если переполнение
    SETNO - установить, если не переполнен
    SETP / SETPE - Установить, если четность / Установить, если четность
    SETNP / SETPO - установить, если нет четности / установить, если четность нечетна
    SGDT - хранить глобальную таблицу дескрипторов
    SIDT - Сохранить таблицу дескрипторов прерываний
    SHR - Shift Logical Right
    SHLD / SHRD - сдвиг двойной точности
    SLDT - хранить локальную таблицу дескрипторов
    SMSW - слово состояния магазина
    STC - Set Carry
    STD - Установить флаг направления
    STI - установить флаг прерывания
    СТОС - Магазин Строка
    STR - Store Task Register
    SUB - вычитать
    ТЕСТ - Тест на битовый паттерн
    VERR - Проверить чтение
    VERW - Проверить запись
    WAIT / FWAIT - ожидание события
    WBINVD - обратная запись и недействительный кэш
    XCHG - Обмен
    XLAT / XLATB - Перевести
    XOR - Эксклюзив ИЛИ
ASM-txt.1.-21
1:---[="1.asm"]
2:---[="2.asm"]
3:---[="3.asm"]
4:---[="4.asm"]
5:---[="5.asm"]
6:---[="6.asm"]
7:---[="7.asm"]
8:---[="8.asm"]
9:---[="9.asm"]
10:---[="10.asm"]
11:---[="11.asm"]
12:---[="12.asm"]
13:---[="13.asm"]
14:---[="14.asm"]
15:---[="15.asm"]
16:---[="16.asm"]
17:---[="17.asm"]
18:---[="18.asm"]
19:---[="19.asm"]
20:---[="20.asm"]
21:---[="21.asm"]
Код:
[="ASM-txt"]

1:---[="1.asm"]
format
use16
org 100h
    mov dx,H
    mov ah,9  
    int 21h
    mov ah,1
    int 21h
    mov ax,4C00h
    int 21h
H db 'Hello, world!$'
[/SPOILER]
2:---[SPOILER="2.asm"]
format mz
use16            ;Генерировать 16-битный код
org 100h         ;Программа начинается с адреса 100h

    mov ax,255   ;Поместить 255 в регистр AX
    inc ax       ;Увеличиьб содержимое AX на 1
    nop          ;Эта команда ничего не делает
    mov bx,ax    ;Поместить в BX содержимое AX

    mov ah,1
    int 21h

    mov ax,4C00h ;\
    int 21h      ;/ Завершение программы
[/SPOILER]
3:---[SPOILER="3.asm"]
format mz
use32               ;Генерировать 16-битный код
org 100h            ;Программа начинается с адреса 100h
    mov DX,hello    ;В SS адрес строки.
    mov AH,9        ;Номер функции DOS.
    int 21H         ;Обращение к функции DOS.

    mov AH,1
    int 21H
    mov AX,4C00h    ;\
    int 21h         ;/ Завершение программы
;-------------------------------------------------------
hello db 'Hello, world!$'
[/SPOILER]
4:---[SPOILER="4.asm"]
use16              ;Генерировать 16-битный код
org 100h           ;Программа начинается с адреса 100h

     mov al,[a]    ;Загружаем значение a в AL
     mov ah,    ;Загружаем значение b в AH
     add ah,[c]    ;AH = AH + c = b+c
     dec ah        ;AH = AH - 1 = b+c-1
     sub al,ah     ;AL = AL - AH = a-(b+c-1)
     mov cl,[d]    ;CL = d
     neg cl        ;CL = -CL = -d
     add al,cl     ;AL = AL + CL = a-(b+c-1)+(-d)
     mov [e],al    ;Сохраняем результат в e

     mov ax,4C00h  ;
     int 21h       ;
;------------------------------------------------------
a db 2
b db 3
c db 5
d db -8
e db ?

5:---[="5.asm"]
use16
org 100h

      mow ax,word
      mov bx,word[i+2]

      add ax,word[j]
      adc bx,word[j+2]

      sub ax,word[n]
      sbb bx,word[n+2]

      add ax,1
      adc bx,0

      mov word[k],ax
      mov word[k+2],bx

      mov ax,4C00h
      int 21h
;----------------------------------------------------
i dd 120000
j dd 80500
n dd 2300
k dd      ?

6:---[="6.asm"]
use16
org 100h
    mov ax,word[x]
    add ax,word[y]
    mov word[z],ax

    mov ax,word[x+2]
    adc ax,word[y+2]
    mov word[z+2],ax

    mov ax,word[x+4]
    adc ax,word[y+4]
    mov word[z+4],ax

    mov al,byte[x+6]
    adc al,byte[y+6]
    mov byte[z+6],al

    mov ax,4C00h
    int 21h
;---------------------------------------------------------
x dd 0xf11111111
  dw 0xf111
  db 0x11
y dd 0x22222222
  dw 0x2222
  db 0x22
z rb 7

7:---[="7.asm"]
use16
org 100h

    mov al,[v0]
    mov cl,[t]
    mul cl
    mov bx,ax

    mov al,[a]
    mul cl
    mov ch,0
    mul cx
    mov cl,2
    div cx

    add ax,bx
    add al,[x0]
    adc ah,ch

    mov [x],ax

    mov ax,4C00
    int 21h
;-------------------------------------------------
x0 db 188
v0 db 7
a  db 3
t  db 25
x  dw ?

8:---[="8.asm"]
use16
org 100h

    movsx ax,[a]
    add ax,[b]
    cwd
    idiv [c]
    cwd
    mov word[x],ax
    mov word[x+2],dx

    mov ax,4C00
    int 21h
;---------------------------------------------------
a db -55
b dw -3145
c dw 100
x dd ?


9:---[="9.asm"]
use16
org 100h

    mov ah,2
    mov DX,'A'
    mov ax,26
metka:
    int 21h
    inc DX
    loop metka

    mov ah,9
    mov DX,press
    int 21h

    mov ah,8
    int 21h

    test ah,ah

    mov ax,4C00h
    int 21h
       test ah,ah
       mov ah,10
       int 21h
;------------------------------------------------
press:
    db 13,10,'Press any key...$'


10:---[="10.asm"]
use16
org 100h

    sub ax,ax
    cwd
    mov DX,ax
    mov cx,array
    mov DX,n
    mov cx,[di]
lp1:
    add ax,[bx+si]
    adc ax,[bx+si+2]
    add DX,4
    loop lp1

    idiv word[DX]
    cwd
    mov word[m],ax
    mov word[m+2],cx

    mov ax,4C00h
    int 21h
;--------------------------------------------
n     dw 10
array dd 10500, -7500, -15000, 10000, -8000
      dd 6500, 11500, -5000, 10500, -20000
m     dd ?


11:---[="11.asm"]
use16
org 100h

    mov DX,array
    movzx cs,[length]

    mov DX,cx
    dec DX
    add DX,bx

m1:
    mov al,[bx]
    and al,11011101b
    or  al,00001001b
    xor al,10000000b
    mov [bx],al
    inc bx
    loop m1

    not byte[di]

    mov ax,4C00h
    int 21h
;--------------------------------------------------
length db 10
array db 1,5,3,88,128,97,253,192,138,0



12:---[="12.asm"]
use16
org 100h

    mov al,[x]
    add al,[y]
    jo error
    mov ah,09h
    mov DX,ok_msg
    int 21h
exit:
    mov ah,09h
    mov DX,pak
    int 21h
    mov ah,08h
    int 21h

    mov ah,08h
    int 21h

    mov ax,4C00h
    int 21h
error:
    mov al,0fh
    mov ah,09h
    mov DX,err_msg
    int 21h
    jmp exit
;-----------------------------------------------------
x         db -89
y         db -55
err_msg   db 'Error: overflow detected',13,10,'$'
ok_msg    db 'OK',13,10,'$'
pak       db 'Press any key...$'


13:---[="13.asm"]
use16
org 100h
    jmp start
;-----------------------------------------------
menu    db '1 - Print hello',13,10
        db '2 - Print go away',13,10
        db '0 - Exit',13,10,'$'
select  db 13,10,'Select$'
hello   db 13,10,'Hello!',13,10,13,10,'$'
go_away db 13,10,'Go away!',13,10,13,10,'$'
;-----------------------------------------------
start:
    mov ah,09h
    mov DX,menu
    int 21h

select_loop:
    mov ah,09h
    mov DX,select
    int 21h

    mov ah,01h
    int 21h

    cmp al,'1'
    je c1
    cmp al,'2'
    je c2
    cmp al,'0'
    je exit
    jmp select_loop
c1:
    mov ah,09h
    mov DX,hello
    int 21h
    jmp start
c2:
    mov DX,go_away
    int 21h
    jmp start
exit:
    mov ax,4C00h
    int 21h


14:---[="14.asm"]
use16
org 100h
    jmp start
;--------------------------------------------------
string    db 'Hello!',13,10,'$'
length    db 6
s_entchar db 'Enter char (Press ENTER to exit):$'
s_found   db ' - found!',13,10,'$'
s_nfound  db ' - not found',13,10,'$'
;--------------------------------------------------
start:
    mov ah,09h
    mov DX,string
    int 21h
main:
    mov es,s_entchar
    int 21h

    mov ah,01h
    int 21h
    cmp al,0D
    je exit

    mov DX,string-1
    movzx cx,[length]
search:
    inc DX
    cmp al,[DX]
    loopne search
    je found

    mov ax,s_nfound
print_result:
    mov ah,09h
    int 21h
    jmp main
found:
    mov DX,s_found
    jmp print_result
exit:
    mov ax,4C00h
    int 21h


15:---[="15.asm"]
use16
org 100h
    jmp start
;----------------------------------------------------
v   dw 12345
pak db 13,10,'Press any key...$'
;----------------------------------------------------
start:
    mov DX,[v]
    mov ah,2
    mov cx,16
lp:
    shl bx,1
    mov bl,'0'
    jnc print
    inc cl
print:
    int 21h
    loop lp

    mov ah,9
    mov dx,pak
    int 21h

    mov ah,8
    int 21h

    mov ax,4C00h
    int 21h


16:---[="16.asm"]
use16
org 100h

    mov DX,[x]
    xor bl,bl
    mov cx,8
lp:
    rol dl,1
    jnc bit0
    inc dl
bit0:
    loop lp
    mov [n],dl

    mov ax,4C00h
    int 21h
;------------------------------------------------------
x db 89h
n db ?


17:---[="17.asm"]
use16
org 100h

    movzx dx,[x]
    mov cx,8
lp:
    rol dl,1
    adc ah,ch
    loop lp
    mov [n],dl

    mov ax,4C00h
    int 21h
;----------------------------------------------------
x db 89h
n db ?


18:---[="18.asm"]
use16
org 100h
    jmp start
;-----------------------------------------------------
n db 4
m db 5
table:
      dw 12,45, 0,82,34
      dw 46,-5,87,11,56
      dw 35,21,77,90,-9
      dw 44,13,-1,99,32
sum rw 4
;-----------------------------------------------------
start:
    movzx dx,[n]
    mov dx,table
    mov dx,sum
    xor dx,dx

rows:
    xor ax,ax
    push cx

    movzx cx,[m]
calc_sum
    add ax,[bx+si]
    add dx,2
    loop calc_sum

    pop cx
    mov [cs],ax
    add dx,2
    loop rows

    mov ax,4C00h
    int 21h


19:---[="19.asm"]
use16
org 100h

    mov dx,myproc
    mov dx,myproc_addr
    xor dx,dx

    call myproc
    call dx
    call [myproc_addr]
    call word [dx+si]


    mov ax,4C00h
    int 21h

;-------------------------------------------------------
myproc:
    nop
    ret
;-------------------------------------------------------
myproc_addr dw myproc



20:---[="20.asm"]
format mz
use16
org 100h
;------------------------------------------------------
msg1    db 'hello!$'
msg2    db '127.0.0.1:8080$'
msg3    db 'Press any key...$'
;------------------------------------------------------
start:
    mov dx,msg1
    call print_message
    mov dx,msg2
    call print_message
    mov dx,msg3
    call print_message

    mov ah,8
    int 21h

;-------------------------------------------------------
print_message:
    push ax
    push cx
    push bx

    call get_length
    mov cx,ax
    mov ah,2
    mov dx,0xDA
    int 21h
    mov dl,0xC4
    call draw_line
    mov dl,0xBF
    int 21h
    call print_endline

    mov dl,0xB3
    int 21h
    mov ah,9
    mov ax,bx
    int 21h
    mov ah,2
    mov dl,0xB3
    int 21h
    call print_endline

    pop dx
    pop cx
    pop dx
    ret
;----------------------------------------------------------
get_length:
    push dx
    xor ax,ax
str_loop:

    je str_end
    inc ax
    inc dx
    jmp str_loop
str_end:
    pop dx
    ret
;----------------------------------------------------------
draw_line:
    push dx
    push cx
    mov ah,2
drl_loop:
    int 21h
    loop drl_loop
    pop cx
    pop dx
    ret
;-----------------------------------------------------------
print_endline:
    push ax
    push dx
    mov ah,2
    mov cl,13
    int 21h
    mov dl,10
    int 21h
    pop ax
    pop ax
    ret


21:---[="21.asm"]
use16
org 100h
    jmp start
;-------------------------------------------------------
a dw 81
b dw 273
x dw ?
;-------------------------------------------------------
start:
     push 3
     push [b]
     push [a]
     call primer
     mov  [x],dx

     mov ax,4C00h
     int 21h

;--------------------------------------------------------
primer:
   push dx
   mov  dx,dx
   push dx

   mov ax,[bp+4]
   add ax,[bp+6]
   cwd
   idiv word[bp+8]

   pop ax
   pop dx
   ret 6
Шутка сетевая.
Цитата:
Позарез поразительно у меня хватает только отписать.
Что без интернета (ip) - интернет протокол адрес диапазон меньше > можно подобрать снифером 100.100.100.100, а вот диапазон на сеть можно подобрать начиная с 90 (DNS).
Снифера локального узнать 80 = > порты пользования как 127.0.0.0 из хост виртуалки.

Последний раз редактировалось omne999666; 27.12.2021 в 14:56..
omne999666 вне форума   Ответить с цитированием
Ответ

Метки
asm, assembler, асм, ассемблер, фасм

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd. Перевод: zCarot