:D :D :D :D :D :D
--------
наипростейшие вещи
ДОБРО ПОЖАЛОВАТЬ В МИР ASSEMBLERA
----
ДУМАЮ ЧТО ОДИН ИЗ САМЫХ БЫСТРЫХ (БЫСТРЕЕ НАВЕРНО МАШИННЫЕ КОДЫ)
в которых раньше и писали
---
ЯЗЫКОВ ПРОГРАММИРОВАНИЯ И САМЫХ СТАРЫХ
ЕСЛИ ВЫ ТУТ ЗНАЧИТ ВЫ ХОТИТЕ НЕЧТО БОЛЬШЕГО ЧЕМ ВАМ ДАЮТ ДРУГИЕ
ВЫСОКО УРОВНЕВЫЕ ЯЗЫКИ ЗНАЧИТ ВЫ ХОТИТЕ СТАТЬ ПРОФ
-------------
ЧТО ДАЕТ ASM
-
ОПИТИМИЗАЦИЯ ПРОГРАММЫ
-
УСТОЙЧИВОСТЬ РАБОТЫ
-
МЕНЬШИЙ ОТКОМПИЛ ИСХОДНЫЙ КОД
-
БЫСТРОТА РАБОТЫ
-----
НЕДОСТАТКИ
-
СЛИШКОМ МНОГО ТЕКСТА КОДА
-
СЛОЖНОСТЬ ПРОГРАММИРОВАНИЯ
-
МЕНЬШАЯ НАГЛЯДНОСТЬ КОДА
-
ПРОГРАММИРОВАНИЯ БОЛЬШИХ ПРОГРАММ С НУЛЯ ОДНОМУ ОЧЕНЬ СЛОЖНО
ПРОСТО НЕ ВЫНОСИМО
-
-
-
--------------
ЗАДАВАЙТЕ СВОИ ВОПРОСЫ
-------------
==================
модели памяти и общая структура программы
--------------------------------
.Model Lagre--------всех несколько<=64кило
.Model Tiny---------один сегмент 64кило причем код и данные в одном сегменте для COM файлов
.Model Small--------один DATA и один CODE по 64кило
.Model medium-------несколко CODE один DATA
.Model compact------СODE один DATA несколько
.Model Huge---------всех несколько >64
---
FLAT спец для WINDOWS сплошна модель памяти
ограничены возмажности мат платы и процом
----
Сегмент стека
.STACK
------
Сегмент данных
.DATA
------
Сегмент кода
-----
.CODE
-----
процедуры
имя Proc
имя endp
------
конец проги
end
==================
описание данных
--------------------------------
8 бит DB BYTE 255
16 бит DW WORD 65535
32 бит DD DWORD
64 бит DQ QWORD
80 бит DT TBYTE
(10 byte)
---------
описание переменных
n db 0
w db 1,1,4,45,2
st db 'HELLO'
----------
==================
регстры общего назначения
находятся именно в процессоре компа
так что Вы работаете напрямую с процессором
AX = AH + AL для счета, операций ввода вывода обязат для умножения
CX = CH + CL для счетчик для циклов, арифм команд
DX = DH + DL для регстра данных
BX = BL + BH для индексной адресации
-------------
сегментные регистры
CS сегмент кода код проги начальный адрес сегмента кода+рег IP получается адресс выполнемой команды
так в принципе и проц работает
DS содер начальный адресс сеегмета данных
SS начальный адрес сегмента стека
ES регистр сегмента расширения (дополнительный)
------
IP регист указателя команд
содержит смещения на команду, которая должна быть выполнена
тобишь
CS:[IP]-- содержит полный адресс -=следующей=- выполняемой команды
============================================
=============ФЛАГИ==========================
============================================
cf-если прозошол пернос занчения из младшего регистра Al в старший AH
то CF взводится в 1 примен в арифметич командах
pf-флаг четности для ввода вывода
af-для BCD чисел
zf-флаг нуля взводится в 1 если результат выполнения команды равен 0
sf-флаг знака
of-переполнение
tf-трассировка для отладчиков
if-флаг прерываний 1-разрешены 0-запрещены
df-флаг направления
=========================================
команды пересылки
mov ax,dx
mov al,dl
mov al,dh
----
f db 10
.........
mov ax,f
или
mov f,ax
-----
mov ax,15(bx,dx,cx,)
----
========================================
настройка сегмента данных
mov ax,@data
mov ds,ax
или
----
@data(для модели памяти .SMALL)
т.к. нельзя пересылать на прямую (ds,@data)
=======================================
К СТАТИ КОМПЬЮТЕР НЕЗНАЕТ ОТРИЦАТЕЛЬНЫХ ЧИСЕЛ
ЗНАЮТ ТОЛЬКО КОМПИЛЯТОРЫ
ASM --- НЕЗНАЕТ ОТРИЦ ЧИСЕЛ???
ОБОЗНАЧЕНИЕ ОТРИЦ ЧИСЕЛ ОТВОДИТСЯ ПРОГРАММИСТУ
В asm СУЩЕСТВУЕТ ТОЛЬКО КАК БЫ УКАЗАТЕЛЬ НА ОТРИЦ ЧИСЛО ЕТО ПОСЛЕДНИЙ
БИТ(СТАРШИЙ)
----
для отриц чисел существует дополнительна кодировка
----
ЕСЛИ ОН 1 ТО ЧИСЛО МОЖНО СЧИТАТЬ ОТРИЦ ЕСЛИ 0 ТО НЕ ОТРИЦ
---
НАПРИМЕР -1 ЕТО В БИН КОДЕ 11111111b binary или 255 положит
---
если взять 11111111b инвертировать получим 00000000b и прибавим единицу +1
получим 1 тобишь -1 просто в памяти компа -1 ето 11111111b
все зависит от вас как использовать ето число как -1 или 255
-----
-------------------------
============================
ничего не делающая программа
============================
.model small ;модель памяти
.stack 100h ;стек инициализ под хранение всячины
.data ;сегмент данных
.code ;сегмент кода
start: ;метка
mov ax,04ch ;в регист ax функция 0-выхода 4ch
int 21h ;перывания DOS
end start ;
ends ;
===========================
ето программа просто выходит
===========================
;D