Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

SP PR 3

.docx
Скачиваний:
10
Добавлен:
01.04.2022
Размер:
688.29 Кб
Скачать

Министерство цифрового развития, связи и массовых

коммуникаций Российской Федерации

Ордена Трудового Красного Знамени федеральное государственное

бюджетное образовательное учреждение высшего образования

«Московский Технический Университет Связи и Информатики»

Кафедра математической кибернетики и информационных технологий

Практическое задание №3 по дисциплине «Системное программирование»:

«Работа с командами условного и безусловного перехода. Работа с командами ввода/вывода данных. Выполнение прерываний в программе»

Выполнил

Проверил:

Фатхулин Тимур Джалилевич

Москва 2021 г.

Цель работы

Научиться работать с командами условного и безусловного перехода, с командами ввода/вывода данных. Научиться выполнять прерывания в программе.

Выполнение работы

Задание №1

Вычислить выражение 18*z*x*y-15*x*y*z+30+19*(x-y). Если задать величины x, y, z=1, то ответ? Все величины в выражении однобайтовые. Результат выдать на экран.

Программный код:

format PE GUI 4.0

include 'include\WIN32AX.INC'

.data

formath db "%0lx",0 ; Setting the output format 16

formatd db "%0d",0 ; Setting the output format 10

result db 256 dup(?) ;The result is stored in this line

; after its conversion

x db 1 ; 20h

y db 1 ; 40h

z db 1 ; 50h ; 18*z*x*y-15*x*y*z+30+19* (x-y)= if ;x=y=z=1

cdb 7

.code

start:

xor AX,AX

xor dX,dX

MOV AL,18

MUL [x]

MUL [y]

MUL [z]

mov bx,ax

MOV AL,15

MUL [x]

MUL [y]

MUL [z]

sub bx,ax

add bx,30

MOV CL,19

MOV al,[x]

sub al,[y]

MUL cl

add ax,bx

invoke wsprintf,result,format d,ax,dx ;Convert the number to the string

invoke MessageBox,0,result,"multiply,add and subtract bytes",MB_OK ;Output

invoke ExitProcess,0 ;Exit the program

.end start

Результат, полученный при значениях x = y = z = 1, показан на рисунке 1:

Рисунок 1 – Результат работы программы

Задание №1.1

Аналогично составьте программу с величинами: x, y, z=2.

Программный код:

format PE GUI 4.0

include 'include\WIN32AX.INC'

.data

formath db "%0lx",0 ; Setting the output format 16

formatd db "%0d",0 ; Setting the output format 10

result db 256 dup(?) ;The result is stored in this line

; after its conversion

x db 2 ; 20h

y db 2 ; 40h

z db2 ; 50h ; 18*z*x*y-15*x*y*z+30+19* (x-y)= if ;x=y=z=1

cdb 7

.code

start:

xor AX,AX

xor dX,dX

MOV AL,18

MUL [x]

MUL [y]

MUL [z]

mov bx,ax

MOV AL,15

MUL [x]

MUL [y]

MUL [z]

sub bx,ax

add bx,30

MOV CL,19

MOV al,[x]

sub al,[y]

MUL cl

add ax,bx

invoke wsprintf,result,format d,ax,dx ;Convert the number to the string

invoke MessageBox,0,result,"multiply,add and subtract bytes",MB_OK ;Output

invoke ExitProcess,0 ;Exit the program

.end start

Результат выполнения программы показан на рисунке 2:

Рисунок 2 – Результат работы программы

Задание №2

Вычислить выражение 2-30*z*x*y-16*x*y*z-41+4*(х-y).

Программный код:

format PE GUI 4.0

include 'include\WIN32AX.INC'

.data

formath db "%0lx",0 ; Setting the output format 16

formatd db "%0d",0 ; Setting the output format 10

result db 256 dup(?) ;The result is stored in this line

; after its conversion

x db 1 ; 20h

y db 1 ; 40h

z db 1 ; 50h ; 2-30*z*x*y-16*x*y*z-41+4* (x-y) if ;x=y=z=1

c db2

.code

start:

xor AX,AX

xor dX,dX

MOV AL,30

MUL [x]

MUL [y]

MUL [z]

sub bx,ax

MOV AL,16

MUL [x]

MUL [y]

MUL [z]

sub bx,ax

sub bx,41

MOV CL,4

MOV al,[x]

sub al,[y]

MUL cl

MOV bx, 2

sub bx, ax

not bx

inc bx

add ax,bx

invoke wsprintf,result,format d,ax,dx ;Convert the number to the string

invoke MessageBox,0,result,"Calculation result (negative number): ",MB_OK ;Output

invoke ExitProcess,0 ;Exit the program

.end start

Рисунок 3 – Результат работы программы

Задание №3

Вычислить выражение 129- z*x*y+x/y+85.

Программный код:

format PE GUI 4.0

include 'include\WIN32AX.INC'

.data

formath db "%0lx",0 ; Setting the output format 16

formatd db "%0d",0 ; Setting the output format 10

result db 256 dup(?) ;The result is stored in this line

; after its conversion

x db 1 ; 20h

y db 1 ; 40h

z db 1 ; 50h ; 2-30*z*x*y-16*x*y*z-41+4* (x-y) if ;x=y=z=1

c db2

.code

start:

xor AX,AX

xor dX,dX

MOV AL, [x]

MUL [y]

MUL [z]

sub bx,ax

MOV AL,[x]

DIV [y]

add bx,ax

add bx,85

MOV ax, 129

sub ax, bx

invoke wsprintf,result,format d,ax,dx ;Convert a number to a string

invoke MessageBox,0,result,"Calculation result: ",MB_OK ;Output

invoke ExitProcess,0 ;Exit the program

.end start

Результат показан на рисунке 4:

Рисунок 4 – Результат работы программы

Задание №4

Вычислить выражение 70-17*x-65*y+13*z.

Программный код:

format PE GUI 4.0

include 'include\WIN32AX.INC'

.data

formath db "%0lx",0 ; Setting the output format 16

formatd db "%0d",0 ; Setting the output format 10

result db 256 dup(?) ;The result is stored in this line

; after its conversion

x db 1 ; 20h

y db 1 ; 40h

z db 1 ; 50h ; 2-30*z*x*y-16*x*y*z-41+4* (x-y) if ;x=y=z=1

c db2

.code

start:

xor AX,AX

xor dX,dX

MOV bx,70

MOV AL,17

MUL [x]

MOV bx,ax

MOV AL,65

MUL [y]

add bx,ax

MOV AL,13

MUL [z]

sub bx,ax

MOV ax, 70

sub ax, bx

invoke wsprintf,result,format d,ax,dx ;Convert a number to a string

invoke MessageBox,0,result,"Calculation result: ",MB_OK ;Output

invoke ExitProcess,0 ;Exit the program

.end start

Результат показан на рисунке 5:

Рисунок 5 – Результат работы программы

Задание №5

Вычислить выражение 88*z-76*y+51*x.

Программный код:

format PE GUI 4.0

include 'include\WIN32AX.INC'

.data

formath db "%0lx",0 ; Setting the output format 16

formatd db "%0d",0 ; Setting the output format 10

result db 256 dup(?) ;The result is stored in this line

; after its conversion

x db 1 ; 20h

y db 1 ; 40h

z db 1 ; 50h ; 2-30*z*x*y-16*x*y*z-41+4* (x-y) if ;x=y=z=1

c db2

.code

start:

xor AX,AX

xor dX,dX

MOV AL,88

MUL [z]

MOV bx,ax

MOV AL,76

MUL [y]

sub bx,ax

MOV AL,51

MUL [x]

add bx,ax

invoke wsprintf,result,format d,ax,dx ;Convert a number to a string

invoke MessageBox,0,result,"Calculation result: ",MB_OK ;Output

invoke ExitProcess,0 ;Exit the program

.end start

Результат показан на рисунке 6:

Рисунок 6 – Результат работы программы

Задание №6

Вычислить выражение x*x*x-y*y*y-z*z*z*z+137. Если задать величины x, y, z=1. Все величины в выражении однобайтовые. Результат выдать на экран.

Программный код:

format PE GUI 4.0

include 'include\WIN32AX.INC'

.data

formath db "%0lx",0 ; Setting the output format 16

formatd db "%d",0 ; Setting the output format 10

result db 256 dup(?) ;The result is saved in this line

; after its conversion

x db 01h

y db 02h

z db 05h

.code

start:

xor AX,AX

xor dX,dX

MOV AL,[x] ;byte multiplied by byte

MUL [x] ;result in AH,

MUL [x]

mov bx,ax

MOV AL,[y] ;byte multiplied by byte

MUL [y] ;result in AH,

MUL [y]

sub bx,ax

MOV AL,[z] ;byte multiplied by byte

MUL [z] ;result in AH,

MUL [z]

sub bx,ax

;mov bx,z

add bx,137

invoke wsprintf,result,format,bx,dx ;ax,dx ;Convert the number

invoke MessageBox,0,result,"change and subtract bytes",MB_OK ;Output

invoke ExitProcess,0 ;Exit the program

.end start

Результат показан на рисунке 7:

Рисунок 7 – Результат работы программы

Задание №7

Вычислить выражение Z3-T3. В выражении используются однобайтовые величины.

Программный код:

format PE GUI 4.0

include 'include\WIN32AX.INC'

.data

formath db "%0lx",0 ; Setting the output format 16

formatd db "%d",0 ; Setting the output format 10

result db 256 dup(?) ;The result is saved in this line

; after its conversion

x db 01h

y db 02h

z db 05h

.code

start:

xor AX,AX

xor dX,dX

MOV AL,[t]

MUL [t]

MUL [t]

MOV bx, ax

MOV AL,[z]

MUL [z]

MUL [z]

sub bx,ax

invoke wsprintf,result,format,bx,dx ;ax,dx ;Convert the number

invoke MessageBox,0,result,"change and subtract bytes",MB_OK ;Output

invoke ExitProcess,0 ;Exit the program

.end start

Результат показан на рисунке 8. Значения Z = 2 и T = 1:

Рисунок 8 – Результат работы программы

Задание №8

Вычислить выражение Z^3 - T^3 + 45. В выражении используются однобайтовые величины.

Программный код:

format PE GUI 4.0

include 'include\WIN32AX.INC'

.data

formath db "%0lx",0 ; Setting the output format 16

formatd db "%d",0 ; Setting the output format 10

result db 256 dup(?) ;The result is saved in this line

; after its conversion

x db 01h

y db 02h

z db 05h

.code

start:

xor AX,AX

xor dX,dX

MOV AL,[t]

MUL [t]

MUL [t]

MOV bx, ax

MOV AL,[z]

MUL [z]

MUL [z]

sub bx,ax

add bx, 45

invoke wsprintf,result,format,bx,dx ;ax,dx ;Convert the number

invoke MessageBox,0,result,"change and subtract bytes",MB_OK ;Output

invoke ExitProcess,0 ;Exit the program

.end start

Результат показан на рисунке 9:

Рисунок 9 – Результат работы программы

Вывод

Я научился работать с командами условного и безусловного перехода, с командами ввода/вывода данных, а также выполнять прерывания в программе.

Соседние файлы в предмете Системное программирование