100 likes | 309 Views
Организация ЭВМ. Система команд и типы данных. Типы данных. db – 1 байт ИЛИ символьная строка из одного и более символов dw – 2 байта ИЛИ 1-2 байтовая строка dd – 4 байта ИЛИ адрес/смещение ИЛИ строка 4 байта df & dp – 6 байт dq – 8 байт ИЛИ адрес/смещение ИЛИ строка 8 байт
E N D
Организация ЭВМ Система команд и типы данных
Типы данных • db – 1 байт ИЛИ символьная строка из одного и более символов • dw – 2 байта ИЛИ 1-2 байтовая строка • dd – 4 байта ИЛИ адрес/смещение ИЛИ строка 4 байта • df & dp – 6 байт • dq – 8 байт ИЛИ адрес/смещение ИЛИ строка 8 байт • dt – 10 байт ИЛИ BCD константа • ! младший байт по младшему адресу • dd f54d567ah развернется в 7a 56 4d f5 в памяти
Массивы • masdd 1,2,3,4,5 // intmas[5]={1,2,3,4,5}; • masdd 5 dup (0) // intmas[5]; • Адресация: • masdw 0,1,2,3,4,5 • mov si,4 • movax,mas[si] // в ах будет 3й элемент массива
Типы адресации • mov al,[ebx] – базовая адресация • add eax,mas[ebx*4] – прямая адресация • наличие ebp/esp + edi/esi – базово-индексная адресация • Двухмерные массивы – аналогично • mov ax, mas[ebx][esi]
Основные команды asm • add/adc – сложение и сложение с переносом • add ax,5 ;(ax)=(ax)+5 • sub/sbb – вычитание и вычитание с переносом • sub ax,5 ;(ax)=(ax)-5 • xadd – сложение и обмен двух значений • mov al,08h • mov bl,01h • xadd al,bl ;al=09h, bl=08h • clc – сброса флага переноса • cli – переноса флага прерываний
Логические команды • and/or/ • /xor/not • Логическое И/ИЛИ/ • /исключающее ИЛИ/инвертирование бит • neg – изменить знак операнда • mov al,2 • neg al ;al=0feh или -2 • test/bt/btc/btr/bts – побитовое сравнение • test al,01h • jnzmetka ;переход, если нулевой бит равен 1
Переходы • call – вызов функции с запоминанием в стеке адреса возврата • ret – возврат управления из функции • ret x – добавляет x байт к указателю стека esp • jmp – переход безусловный • jxx– переход условный • jc/je/jz/jg/jge/jl/jle/jne/jnc/jp/jnp/jnz/js/jns/jz/jpe/jpo • cmp – сравнение двух операндов • cmpax,bx • jnemetka ;переход, если ax<>bx
Работа с памятью • mov – пересылка данных без ограничений • lods – загрузка строки lods/lodsb/lodsw/lodsd • lea – загрузка эффективного адреса • lea bx,mas[4] или lea bx,mas+4 • загрузить в bxадреса 5 элемента массива • push/pop – работа со стеком
Прочие команды • dec/inc – декремент и инкремент регистра • div/idiv – целочисленное деление чисел/со знаком • mul/imul – целочисленное умножение чисел • in/out – работа с портами • int – прерывание • loop – организация цикла со счетчиком в cx • mov cx,10 • cycl: loop cycl ; цикл 10 раз • nop – пустая команда, пропуск такта, 0x90