div w1 |
|
|
|
mov word ptr rezult,ax |
; результат деления d1/w1 |
||
mov word ptr rezult+2,0 |
|
|
|
call bin_ASCII |
;вызов процедуры перевода из bin в ASCII |
||
mov ah,09h |
;вывод на экран |
||
lea dx,msg_d1w1 |
; сообщения «d1/w1=» |
||
int 21h |
|
|
|
mov ah,09h |
;вывод на экран |
||
lea dx,ascval |
; полученного значения |
||
int 21h |
|
|
|
call cursor |
|
|
|
mov ah,09h |
; вывод на экран сообщения |
||
lea dx,msg_e |
;"Для выхода нажмите любую клавишу!" |
||
int 21h |
|
|
|
mov ah,0 |
;-ожидание нажатия клавиши |
||
int 16h |
|
|
|
ret |
; возврат в DOS |
||
begin endp |
|
|
|
;процедуры
;сюда вставляется текст процедуры l_1proc7.asm из файла с таким же именем include l_1proc7.asm
;сюда вставляется текст процедуры bin_ASCII из файла bin_asci.asm
include bin_asci.asm codesg ends
end begin
116
|
|
|
|
|
|
|
|
|
|
Приложение 1.1 |
||
|
|
Варианты формул для программирования |
|
|
||||||||
|
|
Первая формула (в 1 – 5, 7, 9 – 12 и 14 лабораторных работах) |
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
№ |
Выполняемые |
№ |
Выполняемые |
|
|
№ |
Выполняемые |
|||||
п/п |
вычисления |
п/п |
вычисления |
|
|
п/п |
вычисления |
|||||
1 |
b1+b2-w1*w2+d1/b3 |
17 |
|
w1*w2-d1/b1+w3+b2 |
33 |
d1+b1-w1*w2*b3+w3/b2 |
||||||
2 |
b1-b2+w1*w2-d1/b3 |
18 |
|
w1*w2+d1/b1-(w3+b2) |
34 |
d1-b1-w1*w2*b3+w3/b2 |
||||||
3 |
w1+w2-b1*b2+d1/b3 |
19 |
|
b1*b2-w1/b3+d1+d2 |
35 |
d1+w1+b4-b1*b2+w2/b3 |
||||||
4 |
w1-w2+b1*b2-d1/b3 |
20 |
|
b1*b2+w1/b3-(d1-d2) |
36 |
d1-w1+b1*b2*b4-w2/b3 |
||||||
5 |
w1+b1-w1*w2+d1/b2 |
21 |
|
w1*w2-w3/b1+d1+b2 |
37 |
w1*w2*b3-d1/b1+b2+b3 |
||||||
6 |
w1-b1+w1*w2-d1/b2 |
22 |
|
w1*w2+w3/b1-(d1-b2) |
38 |
w1*w2*b3+d1/b1-(b2-b3) |
||||||
7 |
d1+d2-b1*b2+w1/b3 |
23 |
|
b1*b2-w1/b3+d1+w2 |
39 |
b1*b2*b3-d1/b3+w1+w2 |
||||||
8 |
d1-d2+b1*b2-w1/b3 |
24 |
|
b1*b2+w1/b3-(d1-w2) |
40 |
b1*b2*b3+d1/b3-(w1+w2) |
||||||
9 |
d1+b1-w1*w2+w3/b2 |
25 |
|
b1+b2+b3-w1*w2+d1/b3 |
41 |
w1*w2-d1/b1+w3+b2+b3 |
||||||
10 |
d1-b1-w1*w2+w3/b2 |
26 |
|
b1-b2-b3+w1*w2-d1/b3 |
42 |
w1*w2+d1/b1-w3+b2*b3 |
||||||
11 |
d1+w1-b1*b2+w2/b3 |
27 |
|
w1+w2+w3-b1*b2+d1/b3 |
43 |
b1*b2*b3-w1/b3+d1+d2 |
||||||
12 |
d1-w1+b1*b2-w2/b3 |
28 |
|
w1-w2-w3+b1*b2-d1/b3 |
44 |
b1*b2*b3+w1/b3-(d1-d2) |
||||||
13 |
w1*w2-d1/b1+b2+b3 |
29 |
|
w1+b1+b3-w1*w2+d1/b2 |
45 |
w1*w2-w3/b1+d1+b2 |
||||||
14 |
w1*w2+d1/b1-(b2-b3) |
30 |
|
w1-b1-b3+w1*w2-d1/b2 |
46 |
w1*b3+w3/b1-(d1-b2) |
||||||
15 |
b1*b2-d1/b3+w1+w2 |
31 |
|
d1+d2-b1*b2*b4+w1/b3 |
47 |
b1*b2*b3-w1/b3+d1+w2 |
||||||
16 |
b1*b2+d1/b3-(w1+w2) |
32 |
|
d1-d2+b1*b2*b4-w1/b3 |
48 |
b1*b2+w1/b3-(d1-w2) |
||||||
|
|
Вариант № 49 для лабораторной работы №1 |
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Выполняемые |
|
Х1= |
|
Выполняемые |
Х1= |
|
Выполняемые |
Х1= |
|
|
|
|
вычисления |
|
|
|
вычисления |
|
|
вычисления |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
b1*b2 |
|
1 |
|
d5/d6 |
12 |
|
w16-w17 |
23 |
|
|
|
|
w1*w2 |
|
2 |
|
d7/w9 |
13 |
|
w18+b17 |
24 |
|
|
|
|
b3*w2 |
|
3 |
|
d8/b10 |
14 |
|
w19-b18 |
25 |
|
|
|
|
b4*d1 |
|
4 |
|
w10/w11 |
15 |
|
d13+d14 |
26 |
|
|
|
|
w3*d2 |
|
5 |
|
w12/b11 |
16 |
|
d15-d16 |
27 |
|
|
|
|
w4*b5 |
|
6 |
|
d9/d10 |
17 |
|
d17+b19 |
28 |
|
|
|
|
d3*b6 |
|
7 |
|
d11/w13 |
18 |
|
d18-b20 |
29 |
|
|
|
|
d4*w5 |
|
8 |
|
d12/b12 |
19 |
|
d19+w20 |
30 |
|
|
|
|
b7/b8 |
|
9 |
|
b13+b14 |
20 |
|
d20-w21 |
31 |
|
|
|
|
w6/w7 |
|
10 |
|
b15-b16 |
21 |
|
|
|
|
|
|
|
w8/b9 |
|
11 |
|
w14+w15 |
22 |
|
|
|
|
|
b1, b2, b3 – переменные, занимающие один байт, т.е. определенные директивой db;
w1, w2, w3 – переменные, занимающие одно слово (два байта), т.е. определенные директивой dw;
d1, d2 – переменные, занимающие двойное слово (четыре байта), т.е. определенные в сегменте данных директивой dd.
117
Приложение 1.2
Структура (схема) программы
А. Общая структура
; Лабораторная работа №1 ; выполнена студентом группы <обозначение группы> <Фамилия Имя Отчество>;
;тема: «Определение данных. Операции двоичной арифметики. Экранные операции»
;вычисление по формуле <первая формула индивидуального задания>
; г.Омск, СибАДИ, <месяц> <год> г.
;Ограничения: не вводить отрицательных чисел;
;не получать отрицательный результат.
;Сегмент стека
;Сегмент данных
;Сегмент кода
;Начало сегмента кода
;Начало главной процедуры
;Директива, устанавливающая соответствие сегментных регистров сегментам (директива assume)
;Команды, которые должны быть в любой EXE-программе
;Вывод на экран сообщения 'Привет, пользователь!'
;Вывод на экран сообщения 'Эта программа производит вычисления по формуле d1 - (b1+ w1/b2)*w2’
;ввод с клавиатуры числа b1
;ввод с клавиатуры числа b2
;ввод с клавиатуры числа w1
;ввод с клавиатуры числа w2
;ввод с клавиатуры числа d1
; вычисление по формуле |
<формула> |
;Вывод результата на экран
;выход из главной процедуры (возврат в DOS)
;Конец главной процедуры
;Конец сегмента кода (директива ends)
;Конец программы (директива end)
118
Продолжение прил. 1.2
Б. Детализированная структура (шаг 1)
; Лабораторная работа №1 ; выполнена студентом группы <обозначение группы> <Фамилия Имя Отчество>;
;тема: «Определение данных. Операции двоичной арифметики. Экранные операции»
;вычисление по формуле <первая формула индивидуального задания>
; г. Омск, СибАДИ, <месяц> <год> г.
;Ограничения: не вводить отрицательных чисел;
;не получать отрицательный результат.
;Сегмент стека
;Начало сегмента стека (директива segment)
;резервирование ячеек памяти под стек
;Конец сегмента стека (директива ends)
; Сегмент данных
;Начало сегмента данных (директива segment)
;ячейки памяти b1, b2,…,bm, определенные директивой db;
;ячейки памяти w1, w2,…,wn, определенные директивой dw;
;ячейки памяти d1, d2,…,dk, определенные директивой dd;
;списки параметров для ввода с клавиатуры
;символьные константы (тексты сообщений, выдаваемых на экран)
;ячейки промежуточных результатов
;Конец сегмента данных (директива ends)
;Сегмент кода
;Начало сегмента кода (директива segment)
;Начало главной процедуры (директива proc)
;Директива, устанавливающая соответствие сегментных регистров сегментам (директива assume)
;Команды, которые должны быть в любой EXE-программе
;Вывод на экран сообщения 'Привет, пользователь!' ;Вывод на экран сообщения
;'Эта программа производит вычисления по формуле d1 - (b1+ w1/b2)*w2’
;ввод с клавиатуры и преобразование из ASCII в двоичное (bin) числа b1
;ввод с клавиатуры и преобразование из ASCII в двоичное (bin) числа b2
;ввод с клавиатуры и преобразование из ASCII в двоичное (bin) числа w1
;ввод с клавиатуры и преобразование из ASCII в двоичное (bin) числа w2
;ввод с клавиатуры и преобразование из ASCII в двоичное (bin) числа d1
; вычисление по формуле <формула> ; Вывод результата на экран
; выход из главной процедуры (возврат в DOS, команда ret)
;Конец главной процедуры (директива endp)
;Конец сегмента кода (директива ends)
;Конец программы (директива end)
119
Продолжение прил. 1.2
В. Детализированная структура (шаг 2)
; Лабораторная работа №1 ; выполнена студентом группы <обозначение группы> <Фамилия Имя Отчество>;
;тема: «Определение данных. Операции двоичной арифметики. Экранные операции»
;вычисление по формуле <первая формула индивидуального задания>
; г. Омск, СибАДИ, <месяц> <год> г.
;Ограничения: не вводить отрицательных чисел;
;не получать отрицательный результат.
;Сегмент стека
;Начало сегмента стека (директива segment)
;резервирование 1024 ячеек памяти под стек
;(директива db оператор dup)
;Конец сегмента стека (директива ends)
; Сегмент данных
;Начало сегмента данных (директива segment)
;ячейки памяти b1, b2,…,bm, определенные директивой db;
;ячейки памяти w1, w2,…,wn, определенные директивой dw;
;ячейки памяти d1, d2,…,dk, определенные директивой dd;
;списки параметров для ввода с клавиатуры значений, занимающих
;один байт, т.е. значений b1, b2,
; список параметров vvod_b (поле для символов - field_b);
;одно слово (w1, w2)
;список параметров vvod_w (поле для символов - field_w); двойное слово (d1)
;список параметров vvod_d (поле для символов - field_d);
;символьные константы (тексты сообщений, выдаваемых на экран)
;ячейки памяти, используемые процедурами ascii_binb, ascii_binw, ascii_bind, bin_ascii и др.
;ячейки промежуточных результатов
;Конец сегмента данных (директива ends)
;Сегмент кода
;Начало сегмента кода (директива segment)
;Начало главной процедуры (директива proc)
;Директива, устанавливающая соответствие сегментных регистров сегментам
(директива assume)
;Команды, которые должны быть в любой EXE-программе ;очистка экрана ;Вывод на экран сообщения 'Привет, пользователь!',
;Вывод на экран сообщения
;'Эта программа производит вычисления по формуле d1- (b1+ w1/b2)*w2’
;***************************************************************************
;ввод с клавиатуры и преобразование из ASCII в двоичное (bin) числа b1 ;***************************************************************************
;вывод на экран сообщения: 'b1= '
;ввод с клавиатуры (функция 0ah) значения переменной b1 в field_b списка параметров vvod_b
120