
- •Л Составитель: преп.Каф.Информатики Аркабаев Нуркасым Кылычбекович абораторная работа №1 Начало работы на языке ассемблера
- •Теоретическая часть
- •Задание
- •Контрольные вопросы.
- •Лабораторная работа №2 д Составитель: преп.Каф.Информатики Аркабаев Нуркасым Кылычбекович ирективы языка ассемблера
- •Теоретическая часть
- •Задания (2 часа)
- •Контрольные вопросы
- •Лабораторная работа №3 к Составитель: преп.Каф.Информатики Аркабаев Нуркасым Кылычбекович оманды пересылки данных. Стек.
- •Теоретическая часть
- •Команды пересылки данных
- •Задание
- •Контрольные вопросы:
- •Лабораторная работа №4 а Составитель: преп.Каф.Информатики Аркабаев Нуркасым Кылычбекович рифметические операции. Битовые команды.
- •Теоретическая часть
- •Битовые команды
- •Задание
- •Контрольные вопросы:
- •Теоретическая часть
- •Задание
- •1. Предварительная подготовка
- •2 Порядок выполнения работы на эвм
- •Контрольные вопросы:
- •С Составитель: преп.Каф.Информатики Аркабаев Нуркасым Кылычбекович троковые функции и массивы (4 часа).
- •Теоретическая часть Строковые инструкции
- •Инициализация массивов
- •Задание
- •Контрольные вопросы:
- •Лабораторная работа №7 п Составитель: преп.Каф.Информатики Аркабаев Нуркасым Кылычбекович роцедуры.
- •Теоретическая часть
- •Работа команд ret и retf
- •Задание
- •Программа №7.1
- •Контрольные вопросы
Задание
Задача заключается в вычислении результата выполнения арифметического выражения, в котором некоторые числа постоянны, а другие переменные.
Формула вычислений: X = (A * 2 + B * C ) / (D - 3)
Приведенная Программа сначала резервирует ячейки памяти под переменные, затем выполняет умножение однобайтовых чисел (A * 2), результат умножения - двухбайтовое число в регистре AX, сохраняется в регистре СХ, далее выполняется умножение однобайтовых чисел (В * С), результат - двухбайтовое число хранится в аккумуляторе AX. После сложения двух сомножителей и вычисления знаменателя (D-3) выполняется деление. Результат присваивается переменной Х.
1. Наберите приведенную программу 1, запишите исходный файл с расширением *.ASM, получите файл с расширением *.EXE.
2. Загрузите программу в отладчик TURBODEBUG (команда TURBODEBUG *.exe). Выполните программу по шагам, команда F7(F8), посмотрите, как она работает, получите результат.
3. Выполните программу с 5 вариантами различных начальных значений переменных A,B,C,D по шагам (см. таблицу 1) и запишите результат выполнения в таблицу 2 (в регистре AL - частное, AH - остаток). Переведите результат в десятичную систему.
Таблица 1
Вариант |
|
1 |
2 |
3 |
4 |
5 |
Значения |
A |
3 |
0AH |
20 |
60 |
20H |
|
B |
4 |
5H |
4 |
16 |
9H |
C |
2 |
8H |
15 |
5 |
4H |
|
D |
5 |
9H |
6 |
18 |
1CH |
|
Частное AL |
|
|
|
|
|
|
Остаток AH |
|
|
|
|
|
|
;программа 1
;x =(a*2+b*c)/(d-3)
.model small
.stack 100h
.data
a db ?
b db ?
c db ? ;Резервируем память для переменных
d db ? ; A,B,C,D,X
x dw ?
.code
start:
mov ax,@data
mov ds,ax
mov a,3
mov b,4
mov c,2
mov d,5
mov al,2
mul a
mov cx,ax
mov al,b
mul c
add ax,cx
mov cl,d
sub cl,3
div cl
mov x,ax
mov ah,4ch
int 21h
end start
4. Наберите приведенную программу 2, запишите исходный файл с расширением *.ASM, получите файл с расширением *.EXE.
5. Загрузите программу в отладчик TURBODEBUG (команда TURBODEBUG *.exe). Выполните программу по шагам, команда F7(F8), посмотрите, как она работает, получите результат. Обратите внимание на флаг CF.
6. Выполните программу с 5 вариантами различных начальных значений регистра al. Переведите результат запишите в таблицу 2 в двоичной и десятичной системе.
;программа 2
.model tiny
.stack 100h
.code
start:
mov ah, 01001101b
shr ah,1
mov ah, 01001101b
shl ah,1
mov ah, 01001101b
sar ah,1
mov ah, 01001101b
ror ah,1
mov ah, 01001101b
rol ah,1
mov ax,4c00h
int 21h
end start
Команды |
|
SHL |
SHR |
SAR |
ROR |
ROL |
Значение |
01001101b |
|
|
|
|
|
01101010b |
|
|
|
|
|
|
10101101b |
|
|
|
|
|
|
11011011b |
|
|
|
|
|
|
10101100b |
|
|
|
|
|