1 / 27

Регистров модел

Регистров модел. Основни регистри Регистри с общо предназначение 31 0 . Регистров модел. Основни регистри Регистри с общо предназначение 15 8 7 0 Регистър за указател на инструкции 31 16 15 0.

spike
Download Presentation

Регистров модел

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Регистров модел • Основни регистри • Регистри с общо предназначение 31 0

  2. Регистров модел • Основни регистри • Регистри с общо предназначение 15 8 7 0 • Регистър за указател на инструкции 31 16 15 0 старши байтмладши байт AH, BH, CH, DHAL, BL, CL, DL (AX, BX, CX, DX) [E]IPОтместване (OFFSET)

  3. Регистров модел • Основни регистри • Сегментни регистри – предназначени са за начални адреси 15 0

  4. Регистров модел • Основни регистри • Регистър на флаговете Битови полета за: • Управление на операции • Представяне на текущо състояние 31 16 15 0 [E]FLAGS

  5. Регистров модел • Основни регистри • Регистър на флаговете Флагове за състояние • Бит 0: C (Carry Flag) – Пренос (заем) • Бит 2: P (Parity Flag) – Четност/нечетност (“1” при четен брой единици) • Бит 4: A (Auxilary Carry Flag) – Десетичен пренос • Бит 6: Z (Zero Flag) – Нулев резултат • Бит 7: S (Sign Flag) – Отрицателен резултат • Бит 11: O (Overflow Flag) – Препълване

  6. Регистров модел • Основни регистри • Регистър на флаговете Управляващи флагове • Бит 8: T (Trap/Trace Flag) – Стъпков режим • Бит 9: I (Interrupt Flag) – Прекъсване • Бит 10: D (Direction Flag) • 0 – автоинкрементиране (SI/DI) • 1 – автодекрементиране (SI/DI)

  7. Регистров модел • Системни регистри • 4 регистъра по 32 бита за управление на страници: CR0, CR1, CR2, CR3 • 4 сегментни адресни регистъра за сегментация • GDTR – Global Descriptor Table Register • IDTR – Interrupt Descriptor Table Register • LDTR – Local Descriptor Table Register • TR – Task Register

  8. Сегментация на паметта • Регистрите за адресиране са от 16 бита. Следователно възможните адреси са: от 0000 0000 0000 0000 2 до 1111 1111 1111 1111 2 или 64К • Адресиране до 1 МВ (20 бита) – Процес на сегментация Сегментен адрес (от сегментен регистър) Действителен (абсолютен )адрес Отместване (Offset) (от регистри указатели и индекси)

  9. Сегментация на паметта след преместване в ляво Segment -> 0011 1111 1000 0110 0000<- 3F860 Offset -> 0000 010111011010 <- 05DA Абсолютен 0011 1111 1110 0011 1010 <- 3FE3A адрес Сегментите започват на всеки 16 байта.

  10. Изпълнение на асемблерна програма

  11. Асемблерни инструкции • Асемблерна програма • Инструкции ( 1 инструкция -> 1 машинна инструкция) • Директиви • За дефиниране на данни • За действие с Асемблер Синтаксис на асемблерна инструкция • име– етикет, име на променлива или име на сегмент • операция – мнемонично име на инструкция или директива • операнди – обекти за действие име операция операнди; коментар

  12. Асемблерни инструкции Синтаксис на асемблерна инструкция • Имена: с начален символ (буква,_,$,@,.) • Константи – общ вид: Суфиксът може да бъде: B,O,D,H символи на числена система[суфикс] Примери за имена и константи 0FF00h константа в система с основа 16 FF00h име $as име 765 константа в система с основа 8 “текст” константен символен низ ‘текст’ константен символен низ

  13. Асемблерни инструкции Синтаксис на асемблерна инструкция • Оператори – в изрази, изчислявани по време на асемблиране ( за представяне на операнди) • Някои по-често използвани оператори: • Индекси: () [ ] • Атрибути на данни: • TYPE(тип), SIZE (размер), LENGTH(дължина), OFFSET (отместване), SEG(сегментен адрес), PTR (променя типа на израз) • Операции: +, - , * , / , MOD, SHL, SHR • Логически операции: EQ, NE, LT, LE, GT, GE

  14. Асемблерни инструкции Синтаксис на асемблерна инструкция • Операнди на инструкция – 0, 1, 2 или 3 операнда • Всеки операнд може да бъде с дължина: • 8, 16 или 32 бита. • Операндите могат да бъдат: • Регистър • Непосредствен операнд • Памет

  15. Техники за адресиране • Неявно адресиране (без операнди) • Регистрово (операндите се разполагат в регистри) • Непосредствено (операндът е константа или променлива) sti ; Установява в “1” флаг за прекъсване clc ; Нулира флага за пренос аdd al,dl ;Събиране на регистрите AL с DL. Резултат -> в AL аnd al,0fh ; Отделяне на младшата тетрада mov bx,OFFSET var ; BX <- отместването на промеливата var

  16. Техники за адресиране • Адресиране на вход/изход • Входно/изходното пространство (т.нар. портове) могат да бъдат: • 64К 8 битови • 32К 16 битови • 16К 32 битови in al,40h; Вход на байт в AL от фиксиран порт (адрес 40h) out 20h,ax ;Изход на дума от AX към фиксиран порт (адрес 20h) in ax,dx;Вход на дума в AX от променлив порт ;(адреса му е в DX)

  17. Техники за адресиране • Адресиране в паметта • Изчислението на ДЕЙСТВИТЕЛЕН АДРЕС може да бъде: • Директно (абсолютно) Ако ds = 1000h, то изчислението на действителен адрес се извършва по следния начин: След преместване в ляво DS -> 0001 0000 0000 0000 0000 <- 10000 Offset -> 0010 0011 0100 0101 <- 2345 Действителен 0001 0010 0011 0100 0101 <- 12345 адрес мov ds:[2345h],ax ;Съдържанието на AX се премества в паметта

  18. Техники за адресиране • Адресиране в паметта • Изчислението на ДЕЙСТВИТЕЛЕН АДРЕС може да бъде: • Индиректно (използва се винаги индексен оператор []) • Базово • Базово с отместване • Базово с индекс mov [bx],cl ;CL се премества на адрес ds*10h+bx mov cl,[bx+4] ;CL <- съдържанието от адрес ds*10h+bx+4 mov [bx+si],bp ;BP се премества на адрес ds*10h+bx+si

  19. Техники за адресиране • Адресиране в паметта • Индиректно (използва се винаги индексен оператор[]) • Индексно с мащабиране • Базово – индексно с отместване mov [bx+2*si],ax ; AX се премества на адрес ds*10h+bx+2*si mov ax,[bp+8][si];Стек с начало BP+8 ;и индекс от SI се премества в AX

  20. Техники за адресиране • Адресиране в паметта • Изчислението на ДЕЙСТВИТЕЛЕН АДРЕС може да бъде: • Стеково (използва се стека за безадресно обръщение) push cx ;Запис на CX в стека pop dx ;Четене от стека в DX

  21. Дефиниране на данни price BYTE 1000 ;Константа, която може да сменя стойността си sum BYTE ? ;Променлива с неопределена начална стойност Константи и променливи Директиви за дефиниране на числени данни и инициализирането им

  22. Дефиниране на данни Примери Z BYTE 0 ; Цяло без знак 0 в 1 байт A SBYTE –1 ; Цяло със знак -1 в 1 байт B WORD 2*3 ; Цяло без знак 6 в 2 байта C SWORD2*3 ; Цяло със знак 6 в 2 байта Long DWORD 12345678 ; Цяло без знак в 4 байта Nbr DWORD 123400 ; Късо реално число = 1.234*105 в 4 байта Array BYTE ?,?,? ; Масив от 3 последователни байта с ; неопределена стойност ar1 WORD 1,2,5,10 ; Масив от четири последователни думи t BYTE 5 DUP(?) ; Масив от 5 байта с ; неопределена стойност d WORD 20DUP(0) ; Масив от 20 думи с нулеви стойности m WORD 10DUP(5DUP(?)) ; Матрица от 10 реда, 5 колони

  23. Дефиниране на данни Директиви за дефиниране на символи и низове Примери star BYTE ‘*’ ; Записва ASCII кода на * star1 BYTE “*” ; Записва ASCII кода на * list BYTE “abcd” ; Низ до 255 символа a1 BYTE ‘OK’ ‘;Записва в а1 4F6Bh ;(4F е кода на буква О, а 6B – на К) a2 WORD ‘OK’; Записва в паметта 6B4Fh a3 DW 1234h ; Записва в паметта 3412h, ; т.е. младши байт на по-нисък адрес

  24. Дефиниране на данни Обръщение към данни • Забележка: За езика С индексът винаги отговаря на позицията на елемента в масива. В Асемблер индексът е равен на брой байтове между елемента и началото на масива. Примери listb BYTE 1,2,3,4,5 ; listb е адреса на 1 байт mov ah,listb ; AH <- 1 т.е. първи байт mov al,listb+1 ; AL <- 2 т.е. втори байт listw WORD 10DUP(?) ; listw е адреса на първата ; двубайтова дума mov ax,listw+4 ; AX <- третата дума mov bx,listw[2] ; BX <- втората дума

  25. Дефиниране на данни Атрибути на данни • LENGTH – брой на елементите данни в променлива, създадена от първата инициализираща стойност • LENGTHOF – брой на елементите данни • SIZE – брой байтове в променлива, създадена от първата инициализираща стойност • SIZEOF – брой байтове

  26. Дефиниране на данни Атрибути на данни Примери niz BYTE ‘a’,’b’,’c’; mov al,TYPE niz ; AL <-1 movah,LENGTH niz ; AH <- 1 mov ah,LENGTHOF niz ; AH <- 3 mov bl, SIZE niz ; BL <- 1 (TYPE*LENGTH) mov bl, SIZEOF niz ; BL <- 3 (TYPE*LENGTHOF) v WORD 50DUP(?) mov ah, LENGTH v ; AH <- 50 mov al, SIZE v ; AL <- 100

  27. Дефиниране на данни Оператор PTR • Осигурява достъп до отделни байтове. • Важи само за числа без знак. v WORD ? mov bh,v ; грешка защото v е 2 байта, а bh – 1 байт . . . v WORD 0ABh ; v се инициализира с 2 байта mov bh, BYTE PTR v ; BH <- 1010 ;(т.е. първибайт=А) mov ch, BYTE PTR v+1 ; CH <- 1011 (т.е. втори байт=В) За целта се използва оператор PTR

More Related