Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методическое пособие Ассемблер.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
8.71 Mб
Скачать

Теория

Задача№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 ;Конец