IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

 
 Ответить  Открыть новую тему 
> НАИПРОСТЕЙШИЕ ВЕЩИ
сообщение
Сообщение #1


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


: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


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


Мнемоника ассемблера - это и есть машинные коды...   ;)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


:D
---
имею ввиду что компиляторы ошибаются
их же люди пишут
----
я видел разбоку компилятора
как бы TASM ошибался в некоторых вещах
а MASM нет
-----


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


Я это по теме:
Цитата
ДУМАЮ ЧТО ОДИН ИЗ САМЫХ БЫСТРЫХ (БЫСТРЕЕ НАВЕРНО МАШИННЫЕ КОДЫ)
в которых раньше и писали


А что ты имел ввиду в последней мессаааааге:


я видел разбоку компилятора
как бы TASM ошибался в некоторых вещах
а MASM нет  


smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Бывалый
***

Группа: Пользователи
Сообщений: 282

Репутация: -  0  +


естественно что машинный код самый быстрый...
поскольку не требует никакого перевода...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






На asm-е под Windows писать довольно прикольно, но и не менее геморройно. Сам код выглядит просто пугающим, а оптимизыция по сравнению с тем же C++ практически отсутствует (если не использовать всяческие навороты в сях). Кда веселее, когда начинаются всякого рода извпащения... Типа многоплатформенный "перезагрузчик" (довольно легко) или реализованная мною мечта идиота самоубийцы : программа создаёт пустое окошко и завершает процесс по его закрытию. Казалось бы ничего такого... Зато на TAsm, с объектами собственного производства и с расширением .СОМ (!). Как вам такое ???
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


Цитата
программа создаёт пустое окошко и завершает процесс по его закрытию. Казалось бы ничего такого.... Как вам такое ???


тоже пожалуй похвастаюсь: так хотелось написать прогу установки видеорежима обращаясь напрямую к адаптеру, и написал ведь...  :D
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Бывалый
***

Группа: Пользователи
Сообщений: 282

Репутация: -  0  +


я не противник ассем-ра, но и не сторонник(он нужен(основательное владение им) для того - для кого это "работа такая" - типа сферы защиты информации)
скажу известно правило
надо улучшать не количество машинных команд конечной программы
а алгоритмы - так как выигрышь куда больше
ну и для крюкеров
сам как будет побольше время этим займусб ненадолго smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


Трейсить/дизассемблить чужие проги - это счастье никто не отнимет!  :)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Знаток
****

Группа: Пользователи
Сообщений: 408
Пол: Мужской

Репутация: -  3  +


Я бы в раздел команд пересылок добавил бы команды movsb(w,d),
stosb(w,d) lodsb(w,d)

stosb - es:[di]=ax ; Поэтому я и люблю адреса задавать через di а не через bx...

lodsb - ax=es:[di]

movsb - es:[di]=ds:[si]

w,d <=> word, double word...


--------------------
- Где я?
- Во тьме.
- В какой тьме?
- Во тьме твоего мозга.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Знаток
****

Группа: Пользователи
Сообщений: 408
Пол: Мужской

Репутация: -  3  +


Эти команды хорощи при работе с графикой...  ;D


--------------------
- Где я?
- Во тьме.
- В какой тьме?
- Во тьме твоего мозга.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


Смотря какой графикой (640х480х4  :o такая мутотень) smile.gif

Shadow, скажи все-таки, что ты имел ввиду следующей фразой:

я видел разбоку компилятора  
как бы TASM ошибался в некоторых вещах  
а MASM нет  

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


:D
-=-=-
имею ввиду обработку и представление отрицательных чисел и чисел с плавающей запятой
-=-=-


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 




- Текстовая версия 17.08.2018 1:19
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"