Лекция_9_рус.ppt
- Количество слайдов: 40
Лекция 9
0 -уровень: цифровой логический 1 -уровень: микроархитектурный 2 -уровень: архитектура команд 3 -уровень: операционных систем 4 -уровень: уровень языка ассемблер 5 -уровень: языки высокого уровня
Язык ассемблера — язык программирования, описывающий символьную форму машинного языка. В языке ассемблер предусмотрена некоторые возможности языков высокого уровня (макросы).
1. Высокая производительность. 2. Полный доступ к аппаратному обеспечению.
Организация регистров Регистры процессора – вид специальной памяти для временного хранения данных. 1. Программные – используются для хранения промежуточных данных. 2. Регистры управления и состояния – используются для управления работой процессора (в программах ОС).
Программные регистры • Регистры общего назначения (РОН): универсальные, программист использует по своему усмотрению. • Регистры данных: используется только для записи операндов и хранения результата. • Адресные регистры: указатель сегмента, индексные регистры, указатель стека. • Регистры кодов условии: одно битный код условии или флаги.
Регистры управления и состояния • Счетчики команд • Регистры адресов памяти • Регистры данных памяти • Регистры состояния программы
INTEL x 86 (РОН) EAX (32 bit аккумулятор) EBX (32 bit база) ECX (32 bit счетчик) EDX (32 bit регистр данных) ESI (32 bit индекс источника) EDI (32 bit индекс приемника) EBP (32 bit указатель базы) ESP (32 bit указатель стека)
INTEL x 86 15 0 AX ah al 15 0 BX bh bl 0 SI 15 15 0 CX ch cl 0 DI 15 15 0 DX dh dl 0 BP 15 15 0 SP
INTEL x 86 (регистры сегмента) с CS (16 bit) DS (16 bit) ES (16 bit) SS (16 bit) FS (16 bit) GS (16 bit)
INTEL x 86 EFLAGS (32 bit) EIP (32 bit) Флаги Указатели инструкции DR(0 -6) - (32 bit) Регистры отладки CR(0 -5) - (32 bit) Регистры управления
INTEL x 86 GDTR – 32 bit IDTR – 32 bit LDTR – 16 bit TSR – 16 bit
оператор mov - пересылка данных (копирует содержимое источника в приемник, источник не изменяется) Формат: mov приемник, источник mov al, 10 h mov ax, 25000 h mov cx, 200 h mov bx, 760 h
INTEL x 86 mov ax, 1234 h EAX ah=12 h, al=34 h 0000 0001 0010 0011 0100 mov bx, 5678 h EBX ax=1234 h, bx=5678 h, bh=56 h, bl=78 h 0000 0101 0110 0111 1000 mov ecx, 10078 h ECX 0000 1000 0000 0111 1000 mov dh, o. F 5 h EDX xxxx 1111 0101 xxxx
INTEL x 86 mov esi, 400000 h ESI 0000 0100 0000 0000 mov di, 0 F 0 F 0 h EDI xxxx 1111 0000
INTEL x 86 mov ebp, 0 F 0000000 h EBP 1111 0000 0000 mov sp, 0406 h ESP xxxx 0000 0100 0000 0110
INTEL x 86 mov dx, 1563 h mov es, dx EDX ES xxxx 0001 0101 0110 0011
INTEL x 86 mov eax, 100000001 h mov ax, 1 FFFFh mov al, 811 h
INTEL x 86 mov eax, 12345678 h mov ah, al EAX 0001 0010 0011 0100 0101 0110 0111 1000 EAX 0001 0010 0011 0100 0111 1000
оператор аdd - сложение Формат: add приемник, источник mov al, 10 h mov ax, 25000 h add al, 15 h add ax, 10000 h mov cx, 200 h mov bx, 760 h add ax, bx
оператор sub - вычитание Формат: sub приемник, источник mov al, 10 h mov ax, 25000 h sub al, 5 h sub ax, 10000 h mov cx, 200 h mov bx, 160 h sub ax, bx
оператор inc - увеличение на 1 Формат: inc приемник mov cx, 200 h inc cx mov cx, 200 h add cx, 1
оператор dec - уменьшение на 1 Формат: dec приемник mov cx, 200 h dec cx mov cx, 200 h sub cx, 1
оператор and - операция логического умножения Формат: and 1 -ый операнд, 2 -ой операнд. data mov aх, 0 FFEh and ax, 0 Fh op dw 0 A 003 h. code … mov ax, 100 h and ax, op
оператор or or - операция логического сложения Формат: or 1 -ый операнд, 2 -ой операнд. data mov aх, 000 Fh mov bх, 00 F 0 h or ax, bx op db 97 h. code … mov ax, 0 E 1 h or ax, op
оператор смр - операция сравнения (сравнивает и устанавливает флаги) Формат: смр 1 -ый операнд, 2 -ой операнд cmp cx, 9 h jne begin
Операторы сдвига Команды беззнакового логического сдвига: shr – сдвиг в право; shl – сдвиг в лево. Арифметический сдвиг: sar – сдвиг в право; sal – сдвиг в лево.
Операторы сдвига Циклический сдвиг: ror – сдвиг в право; rol – сдвиг в лево; rcr – сдвиг в право с переносом; rcl - сдвиг в лево с переносом солға.
; q 9. asm include 'win 32 ax. inc'. data a dw 6, 11, 15, -7, 1. code start: xor ecx, ecx xor ebx, ebx xor eax, eax xor esi, esi mov mov esi, a ax, [esi] bx, [esi+2] cx, [esi+4] invoke Exit. Process, 0. end start
; q 6. asm include 'win 32 ax. inc'. data a dd 12345678 h. code start: xor eax, eax xor ebx, ebx mov ax, word ptr a mov bx, word ptr a+2 xchg ax, bx invoke Exit. Process, 0. end start
; q 8. asm include 'win 32 ax. inc'. data a db 6, 1, 5, -7, 1. code start: xor ebx, ebx xor eax, eax xor esi, esi mov esi, a mov al, [esi] mov bl, [esi+1] mov ah, [esi+2] invoke Exit. Process, 0. end start
; q 4. asm ; Сумма цифр от 1 до 9 include 'win 32 ax. inc'. code start: xor cx, cx xor ax, ax begin: inc cx add ax, cx cmp cx, 9 h jne begin exit: invoke Exit. Process, 0. end start
Сумма элементов одномерного массива ; q 5. asm include 'win 32 ax. inc'. data a dd 6, 11, -5, -7, 15. code start: xor cx, cx xor eax, eax xor esi, esi mov esi, a mov cx, 5 begin: add eax, [esi] add esi, 4 dec cx jne begin exit: invoke Exit. Process, 0. end start


