ЛБ СПО. Лабораторная 1. Лабораторная работа 1 По дисциплине Системное программное обеспечение и микроконтроллеры
Скачать 55.06 Kb.
|
Федеральное агентство по образованию ГОУ ВПО «ОМСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ» (ОМГТУ) Кафедра «Автоматизированные системы обработки информации и управления» Лабораторная работа №1 По дисциплине «Системное программное обеспечение и микроконтроллеры»
Омск 2022 Лабораторная работа № 1Цель: Получить навыки написания консольных приложений на ассамблере. Задание: Написать на языке ассемблер программу, позволяющую: Ввести (взять из файла) несколько переменных; Вычислить формулу (вариант взять у преподавателя), подставляя в неё введённые переменные; Вывести результат на экран (в файл). Испольнительный файл должен иметь расширение exe/com. Для его получения использовать компилятор tasmи компоновщик tlink(см. директорию TASM). Вариант 11. ((A* X) div (B * X*Y)) div (X + 1) Практическая часть Рисунок 1 – Ввод переменных Рисунок 2 – Результат решения Вывод Получил навыки написания консольных приложений на ассамблере. Приложение А Код программы .model large DATA SEGMENT enterA db 'Enter a:$' enterB db 'Enter b:$' enterX db 'Enter x:$' enterY db 'Enter y:$' showresult2 db 'Result2 = $' otst db '', 0Dh,0Ah,'$' nameparA label byte maxlenA db 4 actlenA db ? namefldA db 4 dup('$') nameparB label byte maxlenB db 4 actlenB db ? namefldB db 4 dup('$') nameparX label byte maxlenX db 4 actlenX db ? namefldX db 4 dup('$') nameparY label byte maxlenY db 4 actlenY db ? namefldY db 4 dup('$') chisl dw 1 znam1 dw 1 znam2 dw 1 result dw 1 znambc db ' $' result2 db ' $' DATA ENDS STK SEGMENT STACK db 256 dup('') STK ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STK mov ax, data mov ds, ax ;===========Vvod i save========================= lea dx, enterA mov ah, 09 int 21h lea dx, nameparA mov ah,0ah int 21h lea dx, otst mov ah, 09 int 21h lea dx, enterB mov ah,09 int 21h lea dx, nameparB mov ah,0ah int 21h lea dx, otst mov ah, 09 int 21h lea dx, enterX mov ah,09 int 21h lea dx, nameparX mov ah,0ah int 21h lea dx, otst mov ah, 09 int 21h lea dx, enterY mov ah, 09 int 21h lea dx, nameparY mov ah, 0ah int 21h lea dx, otst mov ah, 09 int 21h ;========================================== ;a * x mov ax, 0 mov al, namefldA sub al, 48 mov bl, namefldX sub bl, 48 cbw mul bl add ax, 48 mov chisl, ax ;mov chisl + 8, '$' ;============================================== ;b*x*y mov ax, 0 mov al, namefldB sub al, 48 mov bl, namefldX sub bl, 48 cbw mul bl mov cl, namefldY sub cl, 48 cbw mul cl add ax, 48 mov znam1, ax ;========================== ;x + 1 mov ah, 0 mov al, namefldX sub al, 48 mov bl, 1 add al, bl add al, 48 mov znam, al ;================================= ;((a*x)div(b*x*y))div(x + 1) ;================================= ;(a*x)div(b*x*y) mov dx, 0 mov ax, chisl sub ax, 48 mov bx, znam1 sub bx, 48 div bx add ax, 48 mov result, ax ;=============================================== ;div result / znam mov ax, result sub ax, 48 mov bl, znam sub bl,48 div bl add al, 48 mov result2, al lea dx, showresult2 mov ah, 09 int 21h lea dx, result2 int 21h lea dx, otst int 21h mov ah,4ch int 21h CODE ENDS END |