
- •Утверждаю
- •Системное программирование
- •Содержание
- •Пояснительная записка
- •Тематический план
- •Методические рекомендации по изучению тем дисциплины
- •Раздел 1. Системы программирования.
- •Раздел 2. Основы программирования на языке ассемблера.
- •Методические рекомендации по оформлению и выполнению домашней контрольной работы
- •Критерии оценки домашней контрольной работы
- •Теоретические сведения
- •Команды работы с адресами и указателями памяти
- •ПримерЫ решения задач
- •Раздел 1 Системы программирования
- •Раздел 2 Основы программирования на языке ассемблера.
- •Литература Основная
- •Дополнительная
Критерии оценки домашней контрольной работы
Выполненная в соответствии с заданием домашняя контрольная работа высылается учащимся заочной формы обучения в колледж на рецензирование, в сроки, установленные учебным графиком, который утверждается директором колледжа.
Проверка и рецензирование домашней контрольной работы осуществляется преподавателем в течение 7 дней со дня ее поступления на заочное отделение колледжа.
По результатам выполнения домашней контрольной работы выставляется «зачтено» или «не зачтено».
Отметка «не зачтено» выставляется, если:
- домашняя контрольная работа выполнена не в полном объеме, т.е. не освещен теоретический вопрос или не решены задачи;
- теоретический вопрос раскрыт поверхностно или имеются грубые ошибки в решении задач;
- контрольная работа, выполненная не по варианту, не проверяется и считается не зачтенной или теоретический вопрос (задачи) контрольной работы не соответствуют варианту учащегося;
- неверно решены задачи;
- контрольная работа со всей очевидностью выполнена не самостоятельно (несоответствие почерков, распечатка готовых материалов из интернета, ксерокопия и т.п.).
Не зачтенная контрольная работа возвращается учащемуся на доработку. В работе над ошибками ответы необходимо исправить точно в соответствии с замечаниями преподавателя, перечисленными в рецензии. Работу над ошибками следует выполнять в той же домашней контрольной работе, вставив при необходимости дополнительные листы. К работе, сдаваемой повторно, обязательно следует приложить рецензию преподавателя на ранее не зачтенную работу.
Контрольная работа, выполненная не по варианту, не проверяется.
Отметка «зачтено» выставляется в том случае, если:
- домашняя контрольная работа сдана в срок;
- выполнено 75 % задания или если выполнена вся работа, но есть ошибки, не искажающие сущность при ответе на теоретический вопрос, и не влияющие на конечный результат при решении задачи.
- работа выполнена, согласно требованиям учебного заведения.
Если в зачтенной работе есть недочеты и замечания их необходимо исправить.
Теоретические сведения
КОМАНДЫ МИКРОПРОЦЕССОРА
Команда пересылки данных: MOV приемник, источник. Пересылка данных осуществляется между: регистр – регистр; регистр – память; память – регистр.
В качестве операнда можно использовать регистр или ячейку памяти.
Команда обмена: XCHG операнд1,операнд2; обменивает содержимое указанных операндов.
Команда преобразования XLAT
Команды работы со стеком:
PUSH источник; добавляет в стек содержимое указанного операнда.
POP назначение; извлекает содержимое вершины стека и записывает его в операнд.
Пример: PUSH AX; содержимое регистра АХ записывается в стек.
РОР а; данные из вершины стека записываются в ячейку памяти а.
Команды арифметических операций выполняются над целыми числами четырех типов: беззнаковыми и знаковыми двоичными; упакованными и неупакованными десятичными.
Команды сложения:
ADD операнд1,операнд2; операнд1:=операнд1+операнд2. Пример: ADD AL,BL; AL:=AL+BL.
ADC операнд1,операнд2; операнд1:= операнд1+операнд2+ флаг CF; сложение с переносом;
INC операнд; операнд:= операнд+1; команда инкремента.
Команды вычитания:
SUB операнд1,операнд2; операнд1:= операнд1–операнд2. Пример: SUB BL,6; BL:=BL–6.
SBB операнд1,операнд2; операнд1:=операнд1–операнд2–флаг CF; вычитание с учетом заема;
DEC операнд; операнд:= операнд–1; команда декремента;
NEG операнд; операнд:=0–операнд; изменение знака или образование дополнительного кода.
Команда сравнения CMP операнд1,операнд2; операнд1–операнд2, результат вычитания операндов нигде не запоминается, а лишь влияет на состояние флажков.
Команды умножения: MUL (для чисел без знака) и IMUL (для чисел со знаком).
MUL операнд; Если перемножаются байты: один из множителей находится в регистре AL, второй указывается в команде (операнд), результат в АХ. Если перемножаются слова: один из множителей находится в регистре AХ, второй указывается в команде (операнд), результат двойное слово в регистрах АХ – младшее слово, DX – старшее слово.
Пример: умножить ячейку памяти z на 5. MOV AL,5; AL:=5 MUL z; AX:=AL*z
Команды деления: DIV (для чисел без знака) и IDIV (для чисел со знаком).
DIV операнд; производит деление аккумулятора и его расширения (AH-AL, DX-AX для 8 и 16-битного делителя соответственно) на содержимое оператора. Частное формируется в регистре AL (или AX), а остаток в регистре AH (или DX).
Пример: разделить регистр AL на 2. MOV AL,6; AL:=6; MOV BL,2; BL:=2; DIV BL; AL:=AL/BL
Команды логических операций:
AND операнд1,операнд2; логическое умножение. Команда используется для маскирования нулем: AND операнд, маска; в маске в указанных разрядах нули, в остальных – единицы.
Пример: в регистре AL маскировать нулем 3,4,5 разряды. AND AL,С7; маска 1100←С и 0111←7
OR операнд1,операнд2; логическое сложение. Команда используется для маскирования единицей: OR операнд, маска; в маске в указанных разрядах единицы, в остальных – нули.
XOR операнд1,операнд2; неравнозначность. Команда используется для инвертирования выделенных разрядов: XOR операнд, маска; в маске в указанных разрядах единицы.
TEST операнд1,операнд2; логическое умножение без записи операнда;
NOT операнд; инверсия.
Команды сдвигов:
Команды циклического сдвига через перенос RCL операнд,count - влево; RCR операнд,count - вправо. Команды циклического сдвига ROL операнд,count - влево; ROR операнд,count - вправо. |
Команды логического сдвига SHL операнд,count - влево; SHR операнд,count - вправо. Команды арифметического сдвига SAL операнд,count - влево; SAR операнд,count - вправо. |
Пример: логически сдвинуть влево на 3 разряда регистр DL. SHL DL,3
Команды условных переходов для команды сравнения cmp <операнд_1>,<операнд_2>:
Типы операндов |
Команда |
Критерий перехода |
Значения флагов |
Любые |
je |
операнд_1 = операнд_2 |
zf = 1 |
Любые |
jne |
операнд_1<>операнд_2 |
zf = 0 |
Со знаком |
jl / jnge |
операнд_1 < операнд_2 |
sf <> of |
Со знаком |
jle / jng |
операнд_1 <= операнд_2 |
sf <> of or zf = 1 |
Со знаком |
jg / jnle |
операнд_1 > операнд_2 |
sf = of and zf = 0 |
Со знаком |
jge / jnl |
операнд_1 => операнд_2 |
sf = of |
Без знака |
jb / jnae |
операнд_1 < операнд_2 |
cf = 1 |
Без знака |
jbe / jna |
операнд_1 <= операнд_2 |
cf = 1 or zf=1 |
Без знака |
ja / jnbe |
операнд_1 > операнд_2 |
cf = 0 and zf = 0 |
Без знака |
jae / jnb |
операнд_1 => операнд_2 |
cf = 0 |
Команды перехода по состоянию флагов:
-
Команда
Флаг
Команда
Флаг
jc
cf = 1
jnc
cf = 0
jp
pf = 1
jnp
pf = 0
jz
zf = 1
jnz
zf = 0
js
sf = 1
jns
sf = 0
jo
jo = 1
jno
jo = 0
Пример: если число в регистре DX больше или равно 87, то перейти на метку m.
CMP DX,87; сравниваем содержимое регистра DX и число 87
JAE M; если ≥ переход на метку m
Команда безусловного перехода: JMP метка – осуществляют передачу управления по заданному адресу. Например: JMP 05; JMP BX; JMP [DI+5]; JMP m;
Циклические команды: LOOP метка, LOOPE (LOOPZ) метка, LOOPNE (LOOPNZ) метка. В качестве счётчика цикла используется регистр CX.
Команда LOOP (повторить цикл) выполняется следующим образом:
1. Производится декремент регистра CX (CX):=(CX)-1
2. Если условие выполняется (CX)≠0, то осуществляется переход в начало цикла т.е. на метку, иначе (CX)=0 т.е цикл окончен – выполняется следующая за LOOP команда.
Мнемоники LOOPE и LOOPZ определяют машинную команду, которая:
1. Производит декремент регистра CX (CX):=(CX)-1
2. Проверяет условие (CX) ≠0 и флаг ZF=1,если оно выполняется, то осуществляется переход в начало цикла на метку, указанную в команде, иначе выполняется следующая команда.
Мнемоники LOOPNE и LOOPNZ определяют команду, которая:
1. Производится декремент регистра CX (CX):=(CX)-1
2. Проверяется условие: (CX) ≠0 и ZF=0
Команды ввода-вывода:
IN аккумулятор, №port; загружает данные из адресуемого порта в аккумулятор;
OUT №port, аккумулятор; пересылает данные из аккумулятора в порт.