Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабы по асм.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
257.02 Кб
Скачать

Задание

Задача заключается в вычислении результата выполнения арифметического выражения, в котором некоторые числа постоянны, а другие переменные.

Формула вычислений: 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