Содержание
- 2. Системы счисления Использование двоичной и шестнадцатеричной систем счисления 150d=10010110b=96h 27+24+22+21=150 Результат: 150d 7 6 5 4
- 3. Системы счисления Контрольное тестирование 1
- 4. * Архитектура персонального компьютера Основная память Системная шина Внешняя память Микропроцессор Устройства ввода-вывода
- 5. Архитектура персонального компьютера История развития микропроцессоров Intel (семейство «х86»)
- 6. * Память ПК Служит для размещения кода и данных программ в период выполнения ЭнергоЗАВИСИМА Возможен непосредственный
- 7. Архитектура персонального компьютера. Основная память 0 1 1 0 1 0 0 1 7 6 5
- 8. Архитектура персонального компьютера. Сегментированная модель памяти · · · 0 1 2 S S+1 S+D S+M
- 9. Архитектура персонального компьютера. Регистры процессора Пользовательские Системные (управления) Вещественные (FPU) и мультимедиа (MMX) Общего назначения Сегментные
- 10. Архитектура персонального компьютера. Регистры общего назначения Аккумулятор (EAX, AX,AH,AL) База (EBX, BX,BH,BL) Счетчик (ECX, CX, CH,
- 11. Архитектура персонального компьютера. Сегментные регистры Указатель сегмента кода CS Указатель сегмента стека SS Указатель сегмента данных
- 12. Архитектура персонального компьютера. Регистр флагов Флаги условий: CF – флаг переноса OF – флаг переполнения ZF
- 13. Архитектура персонального компьютера. Регистр указателя команд IP EIP 31 15 0 · · · · ·
- 14. Архитектура персонального компьютера. Регистры 64-разрядного процессора AH AL AX EAX 64 31 15 8 7 0
- 15. Архитектура персонального компьютера. Алгоритм работы процессора Инициализация счетчика команд CS:IP Чтение и анализ кода команды Тип
- 16. Инициализация счетчика команд CS:IP Чтение и анализ кода команды Чтение операндов Тип команды Формирование нового значения
- 17. Разработка программ на Ассемблере Этапы разработки программ на Ассемблере Создание (редактирование) текста программы NC, FAR, Word,
- 18. Разработка программ на Ассемблере Общий вид программы на Турбо Ассемблере .MODEL модель ; используемая модель памяти
- 19. Разработка программ на Ассемблере Размещение exe-программы в памяти Сегмент данных служит для размещения переменных программы и
- 20. Представление данных Представление данных в памяти Целые числа без знака 34h A A+1 СЛОВО A A+1
- 21. Представление данных Дополнительный код Байт 98d → 62h → 01100010b -98d → (256 – 98 =
- 22. Представление данных Целые числа со знаком СЛОВО A A+1 A+2 A+3 ДВОЙНОЕ СЛОВО -32768 ÷ 32767
- 23. Представление данных Двоично-десятичные числа Неупакованный BCD формат 1936d → 1 9 3 6 0011 0110 0001
- 24. Представление данных Представление символов Таблица кодировки символов (стандарт ASCII) A A+1 A+2 A+3 32h 2 0
- 25. Представление данных Представление команд (на примере двухоперандных команд) КОП операнд1,операнд2 d – признак результата (1 -
- 26. Основные элементы языка Ассемблер. Основные элементы языка Ассемблер Правила описания Алфавит латинские буквы A – Z,
- 27. Основные элементы языка Ассемблер Основные элементы языка Ассемблер Идентификаторы ∙служебные слова (AX, EIP, MOV, ADD, END,
- 28. Основные элементы языка Ассемблер Основные элементы языка Ассемблер Целые числа ∙ Десятичные: 15, -3, 123d (пробелы
- 29. Основные элементы языка Ассемблер. Структура программы на языке Ассемблер предложение предложение . . . предложение Каждое
- 30. Основные элементы языка Ассемблер. Команды метка: – служит для переходов на данную команду; мнемокод – служебное
- 31. Основные элементы языка Ассемблер Прочие типы предложений языка Директивы - предложения, содержащие символическое указание ассемблеру (не
- 32. Определение данных Ассемблера Определение данных Ассемблера Директива : DB – байт, DW – слово (2 байта),
- 33. Определение данных Ассемблера Директива DB: определение байта .DATA ; сегмент данных X DB ? Y DB
- 34. Определение данных Ассемблера Определение массивов и строк MAS DB 1,2,5,9,0,6 STR DB ‘a’, ‘b’, ‘c’ или
- 35. Определение данных Ассемблера Директива DW: определение слова TYPE = 2, диапазон значений: -32768.. 65535 ? ?
- 36. Определение данных Ассемблера Директива DD: определение двойного слова TYPE = 4, диапазон значений: -214783648 .. 4294967295
- 37. Определение данных Ассемблера Константы. Директива эквивалентности все вхождения имени константы в программе ассемблер заменяет на значение
- 38. Определение данных Ассемблера Выражения арифметические операторы: +, -, *, / - сложение, вычитание, умножение, деление; MOD
- 39. Определение данных Ассемблера Константные выражения t_size EQU 80 e_size EQU 2 . . . MOV CX,
- 40. Определение данных Ассемблера Адресные выражения .DATA X DB 1,2,3,4,5 Y DW 6 . . . MOV
- 41. Команды пересылки Использование оператора PTR MOV [BX],28h ; ? ;Неизвестно сколько ячеек памяти нужно использовать: (2,4,8)
- 42. Определение данных Ассемблера Контрольное тестирование 2 11 A1 .DATA A1 DB 17 A2 DW 2 DUP
- 43. Команды языка Ассемблер Основные команды языка Ассемблер Команды языка Ассемблер Пере- сылки Арифме- тические Логи –
- 44. Команды языка Ассемблера Команды пересылки Общего назначения MOV, XCHG Команды чтения / записи в стек POP,
- 45. Команды пересылки Команда пересылки MOV Ограничения по использованию операндов: Операнды должны быть согласованы по размеру (типу):
- 46. Команды пересылки Методы адресации (способы задания операндов в памяти) MOV AX,MAS[BX] ; AX:=(DS:MAS+(BX)) MOV AX,[BX+2] ;
- 47. Команды пересылки Методы адресации (способы задания операндов в памяти) Косвенная базовая индексная адресация MOV AX,[BX][SI] ;AX:=(DS:(BX)+(SI))
- 48. Команды пересылки Команда обмена значениями XCHG XCHG операнд1,операнд2 B:= операнд1 операнд1:= операнд2 операнд2:= B Операнды должны
- 49. Арифметические команды Арифметические команды Команды двоичной арифметики ADD, SUB, MUL, IMUL, DIV, IDIV, INC, DEC, NEG
- 50. Арифметические команды Команда сложения ADD Операнды должны быть согласованы по типу (8, 16, 32) Операнды одновременно
- 51. Арифметические команды Сложение беззнаковых чисел MOV AL,254 ADD AL,5 ; AL = 259 – 256 =
- 52. Арифметические команды Сложение чисел со знаком Сложение чисел со знаком и без знака производится по одному
- 53. Арифметические команды Команда вычитания SUB SUB AX,17 ; АХ :=АХ - 17 SUB MEM,BX ; МЕМ:=МЕМ
- 54. Арифметические команды Вычитание беззнаковых и знаковых чисел Вычитание знаковых и беззнаковых чисел производится по общему алгоритму:
- 55. Арифметические команды Команды инкремента и декремента INC, DEC INC AX ; AX := AX + 1
- 56. Арифметические команды Команда инверсии знака NEG MOV AH,1 ; 00000001b NEG AH ; 11111111b = -1d
- 57. Арифметические команды Команды умножения MUL, IMUL ;ПРИМЕР 1: 100*2 = ? MOV AL,100 MOV BL,2 MUL
- 58. Арифметические команды Команды деления DIV, IDIV Флаги не устанавливаются Если операнд равен 0, или частное не
- 59. Арифметические команды Команды преобразования типов данных CBW, CWD MOV AL,5 ; 00000101b = 05h CBW ;
- 60. Команды передачи управления Команды передачи управления Команда безусловного перехода JMP Команды условного перехода JE, JNE, JG,
- 61. Команды передачи управления Переходы и метки Метка характеризуется: 1) сегментом кода, в котором она описана; 2)
- 62. Команды передачи управления Безусловный переход JMP FAR PTR M1 . . . . M1 LABEL FAR
- 63. Команды передачи управления Команда сравнения Jxx адрес (IF условие xx THEN GOTO адрес) CMP операнд1,операнд2 (операнд1-операнд2
- 64. Команды передачи управления Переход по результату сравнения двух чисел ;вычислить Z = max(x,y) ;X,Y,Z – числа
- 65. Команды передачи управления Переход по результату сравнения двух чисел (2) ;вычислить Z = max(x,y) X DB
- 66. Команды передачи управления Переход по результату проверки флагов ;C:=A*A+B (A,B,C-байты б/з) MOV AL,A MUL AL JC
- 67. Команды передачи управления Примеры организации ветвления программ CMP X,0 JLE M JMP FIN M: FIN: ...
- 68. Команды передачи управления Счетные циклы MOV CX,N CONT: DEC CX ;CX:=CX-1 CMP CX,0 JNE CONT MOV
- 69. Команды передачи управления Счетные циклы с условием ;ПРИМЕР Найти наименьшее число последовательности [2,K], ;на которое не
- 70. Обработка массивов Обработка одномерных массивов MAS DB 1,0,-3,5,17 . . . MOV AH,MAS+3 ;AH:=5 прямая адресация
- 71. Обработка массивов Обработка двумерных массивов A(i,j) A+i*m*t+j*t A[BX][SI] ⇒ A + (BX) + (SI) – адрес
- 72. Обработка массивов Пример работы с двумерными массивами MAS3 DB 1,2,3,1 DB 3,4,0,2 DB 7,8,9,3 M EQU
- 73. Логические команды Логические команды Команды логических операций AND, OR, XOR, NOT, TEST Команды сдвига SHR, SHL,
- 74. Логические команды Команды логических операций AND приемник,источник Логическое умножение (И) TEST приемник,источник OR приемник,источник Логическое сложение
- 75. Логические команды Применение команд логических операций Проверка значения бита числа AND X,00000010B ;проверка 1-го бита JZ
- 76. Логические команды Команды сдвига SHR операнд,счетчик Логический сдвиг SHL операнд,счетчик Операнд - m8,r8,m16,r16,m32,r32; счетчик - i8,CL;
- 77. Логические команды Применение команд сдвига Быстрое умножение на степени 2 (X*2k) MOV AL,5 ;AL=00000101b=5 SHL AL,3
- 78. Цепочечные команды Цепочечные команды Команды пересылки цепочек MOVSB, MOVSW, MOVSD, MOVS Команды сравнения цепочек CMPSB, CMPSW,
- 79. Цепочечные команды Обобщенный формат цепочечных команд [префикс_повторения] команда Неявные операнды цепочечных команд: Приемник (результирующая цепочка) –
- 80. Цепочечные команды Обобщенный формат цепочечных команд Префикс повторения REP – устанавливает повторение цепочечной команды N раз
- 81. Цепочечные команды Команды пересылки цепочек [REP] MOVSB ([ES:DI]:=[DS:SI],DI:=DI±1,SI±1) [REP] MOVSW ([ES:DI]:=[DS:SI],DI:=DI±2,SI±2) [REP] MOVSD ([ES:DI]:=[DS:SI],DI:=DI±4,SI±4) MOVSB –
- 82. Цепочечные команды Копирование блоков памяти c помощью MOVS DS:SI ES:DI .DATA STR1 DB ‘МОСКВА’ ;строка-источник N
- 83. Цепочечные команды Команды сравнение цепочек CMPSB – для цепочек байтов; CMPSW – для цепочек слов; CMPSD
- 84. Цепочечные команды Команды сканирования цепочек SCASB – для байтовых цепочек; SCASW – для цепочек слов; SCASD
- 85. Цепочечные команды Команды заполнения цепочки STOSB – для байтовой цепочки; STOSW – для цепочки слов; STOSD
- 86. Цепочечные команды Команды извлечение элементов из цепочки LODSB – для байтовой цепочки; LODSW – для цепочки
- 87. Структуры данных Структуры Описание шаблона структуры (список полей данных) STRUC, ENDS Определение экземпляров структуры в сегменте
- 88. Структуры данных Описание структуры (шаблон) STUD STRUC ;студент FAM DB 12 DUP (‘ ‘);фамилия NANE DB
- 89. Структуры данных Определение экземпляров структур D1 DATE D2 DATE D3 DATE TYPE DATE =4 ( по
- 90. Структуры данных Доступ к элементам структур Оператор (.) относится к адресным выражениям и обозначает адрес, вычисляемый
- 91. Структуры данных ;Подсчитать количество студентов мужского пола .MODEL SMALL STUD STRUC . . . STUD ENDS
- 92. Структуры данных Использование структур: пример 2 ;Посчитать количество студентов с именем Иван . . . NAMEF
- 93. Структуры данных Макросредства Макроопределения (описание макроса) MACRO, ENDM Макрокоманды (вызов макроса) Макрогенерация и макроподстановка Макродирективы WHILE,
- 94. Макросредства ассемблера Макроопределение Размещение макроопределения в программе - в начале программы (до сегмента данных); в отдельном
- 95. Макросредства ассемблера Вызов макросов: макрокоманды INCLUDE C:\TASM\MACRO.ASM .DATA S DB ‘Hello, world!$’ M1 DW 7 M2
- 96. Макросредства ассемблера 58E3F2007D2A11CD094687299FD950AC2300FC472F1A85B205810EA67F3BC58E3F2007D2A11CD094687299FD950AC2300FC472F1A85B205810EA6D950AC2C23 Ассемблирование программ, содержащих макросы Макрогенерация: поиск макрокоманд в исходной программе и замена на
- 97. Макросредства ассемблера Особенности использования макросов Программист обязан следить за соответствием типов формальных и фактических параметров и
- 98. Макросредства ассемблера Макродирективы Макродирективы повторения: WHILE REPT IRP Директивы управляются процессом макрогенерации: EXITM GOTO Макродиректива условной
- 99. Процедуры Процедуры в ассемблере Стек и стековые команды PUSH, POP, PUSHF, POPF, PUSHA, POPA Описание процедуры
- 100. Процедуры . . . Стек Дно стека . . . .MODEL SMALL .STACK N .DATA .
- 101. Процедуры Работа со стеком В А С А А А PUSH B POP B PUSH A
- 102. Процедуры Процедуры (безусловный переход с возвратом) PROC Р . . . RET . . . Использование
- 103. Процедуры Описание процедуры имя_процедуры PROC [NEAR|FAR] (последовательность команд) [имя_процедуры] ENDP Имя процедуры обрабатывается ассемблером как метка;
- 104. Процедуры Вызов процедуры CALL [SHORT] имя (SP:=SP-2,[SS:SP]:=IP,IP:=offset имя) CALL FAR PTR имя (SP:=SP-2,[SS:SP]:=CS,SP:=SP-2,[SS:SP]:=IP, CS:=seg имя,IP:=offset имя)
- 105. Процедуры Возврат из процедуры RET [число] Ближний: IP:=[SS:SP],SP:=SP+2+число Дальний: IP:=[SS:SP],CS:=[SS:SP+2],SP:=SP+4+число Извлекает из стека ранее сохраненный адрес
- 106. Процедуры Интерфейс с процедурой: методы передачи параметров Что передавать? передача по значению – передается значение параметра:
- 107. Процедуры Передача параметров по значению с использованием регистров Пример: Вычислить R=max(a,b)+max(c,d) ;Процедура AХ:=max(AX,BX) ;Параметры: АХ–первое число,ВХ–второе
- 108. Процедуры Передача параметров по ссылке с использованием регистров ;Процедура AX:=Σ(Xi), i=1..N ;Параметры: BX – адрес массива,CX
- 109. Процедуры Передача параметров через стек а3 а2 BP+6 BP+4 BP BP+8 SP1 SP2 ;Вызов процедуры P
- 110. Процедуры Пример (суммирование элементов массива) ; Процедура AX:=Σ(Xi), i=1..N SUM PROС NEAR PUSH BP ; пролог
- 111. Процедуры Сравнительный анализ макросов и процедур ;Пример (комбинирование макросов и процедур) SUMMA MACRO MAS,N LEA AX,MAS
- 112. Процедуры Модульное программирование на Ассемблере p1.asm p2.asm p3.asm tasm p1.obj tasm p2.obj tasm p3.obj tlink project.exe
- 113. Процедуры Пример многомодульной программы ;МОДУЛЬ 1 (MOD1.ASM) .MODEL SMALL .DATA . . . .CODE PROC1 PROC
- 114. Процедуры Прерывания и системные вызовы Выполняемая программа Операционная система Устройства и процессор Типы прерываний: аппаратные (внешние)
- 115. Процедуры Механизм обработки прерываний Прерывание Х . . . IRET . . . Прерывания входят в
- 116. Процедуры Вызов и возврат из прерывания INT номер (SP:=SP-2,[SS:SP]:=Flags, SP:=SP-2,[SS:SP]:=CS, SP:=SP-2,[SS:SP]:=IP, CS:IP:=[0:4*номер]) запись в стек регистра
- 117. Процедуры Использование прерываний ; Вывод символа на экран MOV AH,9 MOV AL,код_символа MOV BL,атрибут_символа MOV CX,число_повторений
- 118. Процедуры Примеры использования прерывания 33 (21h) MS DOS ; Завершение программы MOV AH,4Ch MOV AL,код_завершения INT
- 119. Программные сегменты Сегментирование памяти Сегмент памяти – непрерывная область памяти, предназначенная для размещения каких-либо блоков программы
- 120. Программные сегменты Определение программных сегментов выравнивание BYTE|WORD|DWORD|PARA – устанавливает, что адрес начала сегмента должен быть кратен
- 121. Программные сегменты Программные сегменты ;----------------------- A SEGMENT A1 DB 400 DUP(?) A2 DW 8 A ENDS
- 122. Программные сегменты Директива ASSUME ES и DS программист должен формировать сам; SS – формируется автоматически, если
- 123. Программные сегменты Модели памяти Модель: TINY – код, данные, и стек будут размещаться в одном сегменте
- 124. Программные сегменты Упрощенные директивы определения сегментов Константы, действующие при использовании директивы .MODEL @code – принимает значение
- 126. Скачать презентацию