ПРОГРАММИРОВАНИЕ НА АССЕМБЛЕРЕПлан Ассемблер. Этапы разработки программы Предложения
ПРОГРАММИРОВАНИЕ НА АССЕМБЛЕРЕ
План Ассемблер. Этапы разработки программы Предложения языка Ассемблера. Структура программы Шаблоны для программ. Примеры Понятие о мультипрограммном режиме работы.
Машинно -ориентированный язык символического программирования, включающий в набор своих операторов операции, выполняемые той или иной ЭВМ, называется языком Ассемблера. Программа, написанная на Ассемблере, называется исходной программой.
Современные Ассемблеры: MASM 5.x, 6.x фирмы MS; Quick Assembler фирмы MS; Turbo Assembler (TASM) фирмы Borland; интегрированные среды: Pwb (для MASM), qc (для Quick Assembler ), tc, bc (для C, C++)
Разработка программы на Ассемблере состоит из следующих этапов: 1) Составление алгоритма в виде блок-схемы или структурного описания, 2) Ввод в ЭВМ текста исходной программы PROG.ASM с помощью редактора текстов. Имя PROG может быть произвольным, а расширение ASM - обязательно, 3) Перевод (трансляция или ассемблирование) исходной программы в машинные коды с помощью транслятора TASM.EXE. На этом этапе получается промежуточный продукт PROG.OBJ (объектный код). Выявленные при этом синтаксические и орфографические ошибки исправляются повтором пп.2 и 3, 4) Преобразование с помощью программы TLINK.EXE объектного кода PROG.OBJ в выполнимый код PROG.EXE или PROG.COM. 5) Выполнение программы и ее отладка начиная с п.1, если встретились логические ошибки.
Создание программы на Ассемблере
Предложения языка Ассемблера. Структура программы Текст программы на Ассемблере содержит следующие операции: а) команды или инструкции, б) директивы или псевдооператоры, в) операторы, г) предопределенные имена.
Команда (инструкция)
ПРЕДОПРЕДЕЛЕННЫЕ ИМЕНА $ - программный счетчик. Этот символ отмечает текущий адрес в текущем сегменте. @data - адрес начала сегмента данных. .... mov ax,@data mov ds,ax; в сегментном регистре DS теперь адрес сегмента данных. ??date, ??time, ??filename - эти имена во время трансляции заменяются, соответственно на текущие дату, время и имя файла в формате ASCII.
ОПЕРАТОРЫ 1. () - скобки, определяют порядок вычислений 2. [] - например [BX] означает содержимое ячейки памяти с адресом в регистре bx. Признак косвенной адресации. 3. +, -, *, / - операторы сложения, вычитания, умножения и деления. mov ax, (2 * 3 + 8 / 2) - 2; в регистр ax будет помещено число 8. 4. MOD - деление по модулю. Даёт остаток. 5. SHL,SHR - сдвиг операнда влево, вправо. mov si, 01010101b SHR 3; в регистр SI будет загружено число 0Ah (00001010).
6. NOT - побитовая инверсия. 7. AND,OR,XOR - операции "И","ИЛИ","ИСКЛ.ИЛИ". mov dl, (10d OR 5d) XOR 7d; (dl) будет равно 8. 8. : - переназначение сегмента. mov dl,[es:bx]; поместить в dl байт данных из сегмента es и отстоящий от его начала на (bx) байтов (смещение). 9. OFFSET - оператор получения смещения адреса относительно начала сегмента (то есть количества байтов от начала сегмента до идентификатора адреса). mov bx, OFFSET table
ДИРЕКТИВЫ (ПСЕВДООПЕРАТОРЫ) 1. : - определяет близкую метку (в пределах сегмента). jmp lbl .... .... lbl: .... 2 . = - присваивает символическому имени значение выражения. videoram = 0B800h; присвоение videoram = 0B000h; 3. .CODE - определяет начало кодового сегмента, то есть сегмента, где располагаются коды программы. 4. .DATA - определяет начало сегмента данных. 5. DB,DW - директивы резервирующие один или несколько байтов: DB, или одно или несколько слов: DW. .... .DATA fibs DB 1,1,2,3,5,8,13 rus DB 'Турбо Ассемблер‘ buf DB 80 DUP(0);резервируется 80 байтов, каждый обнуляется int DW 65535;в двух байтах располагается число FFFFh. Array DW 100 DUP (0);резервируется 100 слов 6. END - обозначает конец программы. 7. ENDP - обозначает конец подпрограммы.
9. .MODEL - определяет размер памяти под данные и код программы. .MODEL tiny; под программу, данные и стек отводится один общий сегмент (64 Kb). 10. PROC - определяет начало подпрограммы. 11. .STACK - определяет размер стека. .STACK 200h; выделяет 512 байтов для стека. 12. .RADIX base - определяет систему счисления по умолчанию, где base - основание системы счисления: 2, 8, 10, 16. .RADIX 8 oct = 77; oct равно 63d. 13. ; - начало комментария.
Резервирование памяти
Пример полной программы на Ассемблере s segment stack db 128 dup(?) s ends data segment x dw 5 y dw 3 z dw ? data ends
code segment assume cs:code, ds:data, ss:s begin: mov ax,data mov ds,ax mov ax,x add ax,y mov z,ax mov ah,4ch int 21h code ends end begin
Директивы упрощенного описания (в режиме MASM) .CODE [ИМЯ] .DATA .MODEL .STACK [РАЗМЕР] и др.
ШАБЛОН ДЛЯ ПРОГРАММ тип exe .MODEL small .STACK 200h ;можно и меньше .DATA .....;здесь располагаются ваши данные .CODE mov ax,@data mov ds,ax ..... ;здесь располагаются ..... ;команды вашей программы mov ah,4ch ;две команды для возврата в DOS int 21h; END
ШАБЛОН ДЛЯ ПРОГРАММ тип COM .MODEL tiny .CODE ORG 100h main: ..... ;здесь располагаются ..... ;команды вашей программы mov ah,4ch ;две команды для возврата int 21h; в DOS ..... ;здесь располагаются ваши данные END main
.model small .stack 100h .data x dw 5 y dw 3 z dw ? .code mov ax,@data mov ds,ax mov ax,x add ax,y mov z,ax mov ah,4ch int 21h end Программа «Сумма чисел»
Программа «Вывод строки» .MODEL small .STACK 100h .DATA Hi DB 'Hello, world',13,10,'$' .CODE mov ax,@data mov ds,ax mov ah,9 mov dx,offset Hi int 21h mov Hi[8], 'W' mov ah,9 int 21h END
4. Понятие о мультипрограммном режиме работы. Мультипрограммный режим работы означает, что в оперативной памяти компьютера одновременно находится несколько независимых друг от друга и готовых к счёту программ.
Основные черты мультипрограммного режима: в оперативной памяти находятся несколько пользовательских программ в состояниях активности, ожидания или готовности; время работы процессора разделяется между программами, находящимися в памяти в состоянии готовности; параллельно с работой процессора происходит подготовка и обмен с несколькими устройствами ввода-вывода.
Базовыми понятиями мультипрограммного режима функционирования ЭВМ являются процесс и ресурс. Процесс - это система действий, реализующая определенную функцию в вычислительной системе и оформленная так, что управляющая программа вычислительной системы может перераспределять ресурсы этой системы в целях обеспечения мультипрограммирования Ресурс - всякий потребляемый объект (независимо от формы его существования), обладающий некоторой практической ценностью для потребителя. Примеры ресурсов: центральный процессор (время, отдельные блоки), память
Мультипрограммный режим имеет в ЭВМ аппаратную и программную поддержку: аппаратная: контроллеры устройств ввода-вывода, которые могут работать параллельно с процессором; система прерывания; аппаратные средства системы защиты программ и данных в микропроцессоре; программная: мультизадачная операционная система (ОС); системные программы, управляющие работой устройств ввода-вывода и специализированных средств вычислительной системы.
Прерывание - это прекращение выполнения текущей команды или текущей последовательности команд для обработки некоторого события специальной программой - обработчиком прерывания, с последующим возвратом к выполнению прерванной программы. Событие может быть вызвано особой ситуацией, сложившейся при выполнении программы, или сигналом от внешнего устройства. Любая особая ситуация, вызывающая прерывание, сопровождается сигналом, называемым запросом прерывания
Система прерываний Различают: внутренние прерывания: возникают в процессоре при возникновении специально оговоренных ситуациях, например при делении на 0. программные прерывания: вызываются командой int с числовым аргументом – номером вектора прерывания, например int 21h. аппаратные прерывания, поступающие от устройств через контроллер прерывания.
Процессор, получив сигнал прерывания, выполняет последовательность действий (процедуру прерывания): сохранение текущего содержимого регистров, загрузка адресов обработчиков прерывания из самого начала ОП (области векторов прерывания) в адресные регистры, выполнение программы –обработчика прерывания, восстановление содержимого регистров для продолжения выполнения основной программы.
Группы векторов прерываний: векторы внутренних прерываний процессора (01h,02h и др.) векторы аппаратных прерываний (08h…0Fh, 70h…77h) программы BIOS обслуживания аппаратуры компьютера (10h,13h, 16h и др.) программы DOS (21h,22h, 23h и др.) адреса системных таблиц BIOS (1Dh, 1Eh и др.)
ak_modul2_tema3_11-12.ppt
- Количество слайдов: 31

