Приложение: команды: mov загружает данные из источника в приемник. mov ax,ds ax-приемник,ds-источник. регистр-регистр память-регистр регистр-память кроме сегментных регистров, у которых только регистр-регистр. cmp - сравнивает источник и приемник. Изменяет флаги регистра флагов. CMP ax,bx jmp - безусловный переход на метку. jmp start Команды условного перехода. Используют регистр флагов, обычно используются после команды CMP. JCXZ Перейти если CX=0 JE Перейти если равно. JG Перейти если больше. JGE Перейти если больше или равно. JL Перейти если меньше. JLE Перейти если меньше или равно. jle begin Переход на метку begin если в результате сравнения (cmp) источник меньше или равен приемнику. Опкод Значение(переход,если...) Условие JA Jump if above (X > Y) CF=0 & ZF=0 JAE Jump if above or equal (X >= Y) CF=0 JB Jump if below (X < Y) CF=1 JBE Jump if below or equal (X < Y) CF=1 or ZF=1 JC Jump if carry (cf=1) CF=1 JCXZ Jump if CX=0 регистр CX=0 JE (то же, что и JZ) Jump if equal (X = Y) ZF=1 JG Jump if greater (signed) (X > Y) ZF=0 & SF=OF JGE Jump if greater or equal (signed) (X >= Y) SF=OF JL Jump if less (signed) (X < Y) SF != OF JLE Jump if less or equal (signed) (X <= Y) ZF=1 or SF!=OF JMP Безусловный переход - JNA Jump if not above (X <= Y) CF=1 or ZF=1 JNAE Jump if not above or equal (X < Y) CF=1 JNB Jump if not below (X >= Y) CF=0 JNBE Jump if not below or equal (X > Y) CF=1 & ZF=0 JNC Jump if not carry (cf=0) CF=0 JNE Jump if not equal (X != Y) ZF=0 JNG Jump if not greater (signed) (X <= Y) ZF=1 or SF!=OF JNGE Jump if not greater or equal (signed) (X < Y) SF!=OF JNL Jump if not less (signed) (X >= Y) SF=OF JNLE Jump if not less or equal (signed) (X > Y) ZF=0 & SF=OF JNO Jump if not overflow (signed) (of=0) OF=0 JNP Jump if no parity (pf=0) PF=0 JNS Jump if not signed (signed) (sf=0) SF=0 JNZ Jump if not zero (X != Y) ZF=0 JO Jump if overflow (signed) (of=1) OF=1 JP Jump if parity (pf=1) PF=1 JPE Jump if parity even ( PF=1 JPO Jump if parity odd PF=0 JS Jump if signed (signed) SF=1 JZ Jump if zero (X = Y) ZF=1 Условная пересылка данных CMOV CMOVA если выше CF=0 и ZF=0 CMOVBE если не ниже и не равно CMOVAE если выше или равно CMOVNB если не выше и не равно CF=0 CMOVNC если нет переноса CMOVB если ниже CMOVNAE если не выше и не равно СF=1 CMOVC если перенос CMOVBE если ниже или равно CF=1 или ZF=1 CMOVNA если не выше CMOVE если равно ZF=1 CMOVZ если ноль CMOVG если больше ZF=0 и SF=OF CMOVNLE если не меньше и не равно CMOVGE если больше или равно SF=OF CMOVNL если не меньше и не равно CMOVL если меньше SF<>OF CMOVNGE если не больше и не равно CMOVLE если меньше или равно ZF=1 или SF<>OF CMOVNG если не больше CMOVNE если не равно ZF=0 CMOVNZ если не ноль CMOVNO если нет переполнения OF=0 CMOVO если есть переполнение OF=1 CMOVNP если нет четности PF=0 CMOVPO если нечетное CMOVP если есть четность PF=1 CMOVPE если четное CMOVNS если нет знака SF=0 CMOVS если есть знак SF=1 CALL -вызов процедуры, т.е. переход на метку с записью текущего местоположения в стек. call move RET Переход на адрес, лежащий в стеке. Обычно используется в паре с CALL, для возврата из функции. LEA bx,perem помещает смещение источника в приемник, в данном случае смещение perem помещается в регистр bx. аналогично MOV bx,offset perem offset переводится как смещение. add ax,12 складывает источник с приемником, результат помещает в приемник. Аналогично ax=ax+12 в С sub ax,45h отнимает от приемника источник и результат помещает в приемние. Аналогично ax=ax-45h mul умножение(по аналогии см. выше) div деление XCHG операнд1,операнд2 обмен операндов между собой. push операнд поместить операнд в вершину стека. pop операнд поместить из вершины стека слово в операнд. Типы данных. word(слово) - два байта. Размер - 16 бит. DWORD(Double word - двойное слово) последовательность из двух слов. Директивы резервирования. DB - резервирование памяти размером 1 байт. можно задавать значения: -128...+127(для чисел со знаком), 0...255(для беззнаковых) 8 РАЗРЯДНОЕ ОТНОСИТЕЛЬНОЕ ВЫРАЖЕНИЕ, ИСПОЛЬЗУЮЩЕЕ ОПЕРАЦИИ hight И low. Cимвольную строку из одного или более символов, которая заключается в кавычки(определяется столько байтов, сколько символов в строке) DW - размером 2 байта. -32 768...32 767(для чисел со знаком), 0...65535(для беззнаковых) Выражение, занимающее 16 или менее битов, в качестве которого может выступать смещение в 16-битовом сегменте, или адрес сегмента. 1- или 2- х байтовая строка, заключенная в кавычки. DD - размером 4 байта. -2 147 483 648...+2 147 483 647(для знаковых), 0...4 294 967 295(для беззнаковых) относительное или адресное смещение, состоящее из 16-разрядного адреса сегмента и 16-разрядного смещения. строку длиной до 4 символов, заключенную в кавычки. DF И DP 6 БАЙТ DQ 8 БАЙТ DT 10 БАЙТ Операнд - то над чем мы производим действия(число, буква, короче переменная). Регистры - ячейки памяти находящиеся внутри чипа процессора. Смещение - пример. смещение числа 15 относительно числа 9 равно 6, а относительно 0 равно 15. высчитывается так: SM=CX-AS где SM смещение, CX - число, AS - начальное число. В нашем примере: 6=15-9 функции DOS (int 21h) 1 - вывод символа с клавы на экран. 8 - ввод с клавы в регистр al 9 - вывод текста(ASCII) на экран. в DS:DX - адрес текста, текст должен оканчиваться $. Ah - ввод с клавы в буфер. DS:DX -адрес буфера. Формат буфера: байт длины текста, резервный байт, место для ввода текста. 4Сh - выход в О.С. Стандартная ASCII таблица цифры: 0-9 30h-39h буквы: A-Z 41h-5Ah a-z 61h-7Ah