НАИПРОСТЕЙШИЕ ВЕЩИ |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
НАИПРОСТЕЙШИЕ ВЕЩИ |
Shadow |
28.04.2003 11:39
Сообщение
#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/ |
Текстовая версия | 19.09.2024 4:27 |