Главная страница

ЛБ СПО. Лабораторная 1. Лабораторная работа 1 По дисциплине Системное программное обеспечение и микроконтроллеры


Скачать 55.06 Kb.
НазваниеЛабораторная работа 1 По дисциплине Системное программное обеспечение и микроконтроллеры
АнкорЛБ СПО
Дата05.08.2022
Размер55.06 Kb.
Формат файлаdocx
Имя файлаЛабораторная 1.docx
ТипЛабораторная работа
#641005

Федеральное агентство по образованию

ГОУ ВПО «ОМСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

(ОМГТУ)

Кафедра «Автоматизированные системы обработки информации и управления»

Лабораторная работа №1

По дисциплине «Системное программное обеспечение и микроконтроллеры»






Принял: НИКОНОВ В.А.





Подпись, дата




Выполнил: Студент ЗИВТ-181 И. Х. Тимиров





Подпись, дата


Омск 2022

Лабораторная работа № 1



Цель: Получить навыки написания консольных приложений на ассамблере.

Задание:

Написать на языке ассемблер программу, позволяющую:

  1. Ввести (взять из файла) несколько переменных;

  2. Вычислить формулу (вариант взять у преподавателя), подставляя в неё введённые переменные;

  3. Вывести результат на экран файл).

Испольнительный файл должен иметь расширение 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


написать администратору сайта