
- •Include macro.Lib ;Подключение библиотеки
- •Скриншот Программы №1
- •Скриншот Программы №2
- •Скриншот Программы №3
- •Include macro.Lib ;Подключение библиотеки
- •Include macro.Lib ;Подключение библиотеки
- •Include macro.Lib ;Подключение библиотеки
- •Include macro.Lib ;Подключение библиотеки
- •Include macro.Lib ;Подключение библиотеки
- •Скриншот программы
Теория
Задача№1
Условие
Калькулятор с меню
Листинг Программы
include macro.lib ;Подключение библиотеки
stec segment 'stack' ;Начало сегмента стека
dw 256 dup(?) ;Выделение в памяти 256 двойных байт
stec ends ;Конец сегмента стека
data segment 'data' ;Начало сегмента стека
a db ? ;Объявление переменной
b db ? ;Объявление переменной
a1 db 'Введите первое число: $' ;Сообщение
b1 db 'Введите второе число: $' ;Сообщение
h1 db 'продол.-1,выход-2$';Сообщение
o1 db 'Ответ: $' ;Сообщение
z1 db '1)Сложение $' ;Сообщение
z2 db '2)Вычитание $' ;Сообщение
z3 db '3)Умножение $' ;Сообщение
z4 db '4)Деление $' ;Сообщение
z5 db 'Выбор пункта: $' ;Сообщение
z6 db 'Такого пункта нет! $' ;Сообщение
k db ? ;Объявление переменной
data ends ;Конец сегмента данных
code segment 'code' ;Начало сегмента код
begin proc far ;Начало программы
Assume ss:stec,ds:data,cs:code ;Задает адрес каждого сегмента
mov ax,data ;Команда начальной инициализации
mov ds,ax ;Команда начальной инициализации
z: ;Метка z
cls ;Очистка экран
move_cursor 0,0 ;Курсор на (0,0)
message a1 ;Вывод сообщения
key_$2bin ;Ввод переменной
mov a,al ;Пересылка в ячейку
crlf ;Переход на след. строку
message b1 ;Вывод сообщения
key_$2bin ;Ввод переменной
mov b,al ;Пересылка в ячейку
crlf ;Переход на след. строку
message z1 ;Вывод сообщения
crlf ;Переход на след. строку
message z2 ;Вывод сообщения
crlf ;Переход на след. строку
message z3 ;Вывод сообщения
crlf ;Переход на след. строку
message z4 ;Вывод сообщения
crlf ;Переход на след. строку
message z5 ;Вывод сообщения
key_$2bin ;Ввод переменной
mov k,al ;Пересылка в ячейку
mov al,k ;Пересылка в ячейку
cmp al,1 ;Сравнение рабочей ячейки
jne m1 ;Если не равно,то на метку m1
mov al,a ;Пересылка в ячейку
add al,b ;Прибавление к рабочей ячейке
jmp con ;Переход на метку
m1: ;Метка m1
mov al,k ;Пересылка в ячейку
cmp al,2 ;Сравнение рабочей ячейки
jne m2 ;Если не равно,то на метку m2
mov al,a ;Пересылка в ячейку
sub al,b ;Вычитание ячейки
jmp con ;Переход на метку
m2: ;Метка m2
mov al,k ;Пересылка в ячейку
cmp al,3 ;Сравнение рабочей ячейки
jne m3 ;Если не равно,то на метку m3
mov al,a ;Пересылка в ячейку
imul b ;Умножение рабочей ячейки
jmp con ;Переход на метку
m3: ;Метка m3
mov al,k ;Пересылка в ячейку
cmp al,4 ;Сравнение рабочей ячейки
jne m4 ;Если не равно,то на метку m4
mov al,a ;Пересылка в ячейку
idiv b ;Деление рабочей ячейки
jmp con ;Переход на метку
m4: ;Метка m4
cls ;Очистка экрана
move_cursor 0,0 ;Курсор на (0,0)
mov al,k ;Пересылка в ячейку
cmp al,4 ;Сравнение рабочей ячейки
jle con ;Переход на метку
message z6 ;Вывод сообщения
crlf ;Переход на след. строку
jmp m5 ;Переход наМеткУ m5
con: ;Конец
cls ;Очистка экрана
move_cursor 0,0 ;Курсор на (0,0)
message o1 ;Вывод сообщения
jmp m5 ;Метка m5
m5: ;Переход на метку
CBW ;Расширить до 2 байт
print_number ;Выводзначения
crlf;Переход на след. строку
messageh1 ;Вывод сообщения
key_$2bin ;Ввод переменной
cmpal,1 ;Сравнение рабочей ячейки
jnecon1 ;Если не равно, то на метку con1
jmpz ;Переход наМетку z
con1: ;Меткаcon1
mov ax,4c00h ;Задание прерывание на выход из DOS
int 21h ;Прерывание
ret ;Возврат
begin endp ;Конец программы
code ends ;Конец сегмента кода
end begin ;Конец
Скриншот Программы
Отчёт №2
Условные безусловные операторы
Теория
Задача №1
ЛистингПрограммы
Include macro.Lib ;Подключение библиотеки
stec segment 'stack' ;Начало сегмента стека
dw 256 dup(?) ;Выделение в памяти 256 двойных байт
stec ends ;Конец сегмента стека
data segment 'data' ;Начало сегмента данных
a db ? ;Объявление переменной
b db ? ;Объявление переменной
cdb ? ;Объявление переменной
xdb ? ;Объявление переменной
XKONdb ? ;Объявление переменной
DLXdb ? ;Объявление переменной
ydb ? ;Объявление переменной
const2 db -1 ;Объявление переменной
z1 db ' x | y$' ;Сообщение
z2 db ' $ |' ;Сообщение
z3 db ' | $' ;Сообщение
a1 db'vveditea= $' ;Сообщение
b1 db'vvediteb= $' ;Сообщение
s1 db'vveditec= $' ;Сообщение
a2 db'vvedite x= $' ;Сообщение
d1 db'vvedite DLX= $' ;Сообщение
d2 db'vvediteXKON= $' ;Сообщение
data ends ;Конец сегмента данных
code segment 'code' ;Начало сегмента код
begin proc far ;Начало программы
Assume ss:stec,ds:data,cs:code ;Задает адрес каждого сегмента
mov ax,data ;Команда начальной инициализации
mov ds,ax ;Команда начальной инициализации
cls ;Очистка экран
move_cursor 0,0 ;Курсор на (0,0)
message a1 ;Вывод сообщения
key_$2bin ;Ввод переменной
mov a,al ;Пересылка в ячейку
crlf ;Переход на след. строку
message b1 ;Вывод сообщения
key_$2bin ;Ввод переменной
mov b,al ;Пересылка в ячейку
crlf ;Переход на след. строку
messages1 ;Вывод сообщения
key_$2bin ;Ввод переменной
movc,al ;Пересылка в ячейку
crlf ;Переход на след. строку
messagea2 ;Вывод сообщения
key_$2bin ;Ввод переменной
movx,al ;Пересылка в ячейку
crlf ;Переход на след. строку
messaged1 ;Вывод сообщения
key_$2bin ;Ввод переменной
movDLX,al ;Пересылка в ячейку
crlf ;Переход на след. строку
messaged2 ;Вывод сообщения
key_$2bin ;Ввод переменной
movXKON,al ;Пересылка в ячейку
crlf ;Переход на след. строку
messagez1 ;Вывод сообщения
crlf ;Переход на след. строку
m: ;Метка m
moval,c ;Пересылка в ячейку
cmpal,0 ;Сравнение рабочей ячейки
jgm1 ;Если больше,то на метку m1
jem3 ;Если равно,то на метку m3
moval,x ;Пересылка в ячейку
cmpal,0 ;Сравнение рабочей ячейки
jem1 ;Если равно,то на метку m1
moval,x ;Пересылка в ячейку
subal,c ;Вычитание ячейки
imula ;Умножение рабочей ячейки
imulconst2 ;Умножение рабочей ячейки
jmpcon ;Переход на метку
m1: ;Метка m1
moval,x ;Пересылка в ячейку
cmpal,0 ;Сравнение рабочей ячейки
jnem3 ;Если не равно,то на метку m3
moval,x ;Пересылка в ячейку
subal,a ;Вычитание ячейки
imulc ;Умножение рабочей ячейки
imulconst2 ;Умножение рабочей ячейки
jmpcon ;Переход на метку
m3: ;Метка m3
moval,c ;Пересылка в ячейку
subal,a ;Вычитание ячейки
imulb ;Умножение рабочей ячейки
imulx ;Умножение рабочей ячейки
con: ;Метка con
movy,al ;Пересылка в ячейку
messagez2 ;Вывод сообщения
moval,x ;Пересылка в ячейку
CBW ;Расширить до 2 байт
print_number ;Выводзначения
messagez3 ;Вывод сообщения
moval,y ;Пересылка в ячейку
CBW ;Расширить до 2 байт
print_number ;Выводзначения
crlf ;Переход на след. строку
moval,x ;Пересылка в ячейку
addal,DLX ;Прибавление к рабочей ячейке
movx,al ;Пересылка в ячейку
cmpal,XKON ;Сравнение рабочей ячейки
JEcon1 ;Если равно,то на метку con1
jmpm ;Переходнаметку
con1: ;Меткаcon1
mov ax,4c00h ;Задание прерывание на выход из DOS
int 21h ;Прерывание
ret ;Возврат
begin endp ;Конец программы
code ends ;Конец сегмента кода
end begin ;Конец