Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
base.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
494.08 Кб
Скачать

Вираз: ((44/3+24)*3-56)/2.

(6*3-4)/3+(4*7-2)/5

.8086

.model small

.stack 200h

.data

a db 6

b db 3

c db 4

d db 7

e db 2

f db 5

result dw ?

.code

.startup

mov al,a

mul b ;ax=a*b

mov bl,c

cbw

sub ax,bx ;ax=a*b-c

div b ;al=(a*b-c)/b

cbw

mov result,ax

mov al,c

mov ah,0

mul d

mov bl,e

cbw

sub ax,bx

div f

cbw

add result,ax

.exit 0

end @startup

((85/6-24)*2)+48)/(24-11)

.8086

.model small

.stack 200h

.data

a dw 85

b db 6

c db 24

d db 2

e dw 48

f db 11

result dw ?

.code

.startup

mov ax,a

div b ; al=a/b

mov bl,c

sub al,bl ; al=a/b-c

imul d

mov bx,e

add ax,bx ; ax=(a/b-c)*d+e

cwd

mov al,c

sub al,f ; al=c-f

div al

mov result,ax

.exit 0

end @startup

(45/3-12)*12+56/4

.8086

.model small

;ogoloshennia steku

.stack 100h

.data

;ogoloshennia zminnyh

a dw 45

b db 3

c db 12

d dw 56

e db 4

result1 dw ?; zminna dlia perevirky promizhnyh obchyslen'

result dw ?; zminna dlia resultatu vyrazu

.code

.startup

mov ax,a; zanosymo zminnu a v registr ax

div b; a/b

mov bl, al; tsila chastyna u registri al->bl

xor al,al; ochystka al

mov al,c ; c->al

sub bl,al ; bl-al->bl

xor al,al

mov al,c ; c->al

mul bl; al*bl->ax

mov result1, ax;result1=(a/b-c)*c

xor ax,ax

mov ax,d; d->ax

div e; ax/e->al(tsila chastyna)

add al,0; dostup do al

cbw; dodpovnennia al do ax

add ax,result1;result1+ax->ax

mov result,ax; ax->result(result=(a/b+c)*c+d/e)

.exit 0

end @startup; end of program

(8-10)*(5/2+4)/(9-3*2)

.8086

.model small

.stack 200h

.data

a db 8

b db 10

c db 5

d db 2

e db 4

f db 9

g db 3

result dw ?

.code

.startup

mov al,b

cbw

sub al,a ; ax=b-a

mov bx,ax ; bx=b-a

xor ax,0

mov al,c

cbw

div d ; ax=c/d

xor ah,ah

add al,e; ax=c/d+e

mul bx ; ax=(b-a)*(c/d+e)

mov bx,ax ;bx=(a-b)*(c/d+e)

xor ax,0

mov al,d

cbw

mul g ; ax=d*g

mov cx,ax ; cx=d*g

xor ax,ax

mov al,f

cbw

sub ax,cx ; ax=f-d*g

xchg bx,ax

div bl

xor ah,0

;(8-10)*(5/2+4)/(9-3*2)

mov result,ax

.exit 0

end @startup

;((9-21)*(3+43)/(4-15))*2

.8086

.model small

.stack 200h

.data

a db 9

b db 21

c db 3

d db 43

e db 4

f db 15

g db 2

result dw ?

.code

.startup ;((9-21)*(3+43)/(4-15))*2

mov al,a

mov bl,b

sub ax,bx ; ax=a-b -12

mov bx,0

mov bl,c

mov cl,d

add bx,cx; bx= c+d 46

imul bx ; ax*bx 552

mov bl,e

mov cl,f

sub bx,cx; bx=e-f -11

idiv bx; ax/bx 50,18

mov bx,0

mov bl,g

imul bx; ax*2 100

mov result, ax

.exit 0

end @startup

(34-24/7)/6-8*5+48

.model small

.stack 100h

.data

a db 34

b db 24

c db 7

d db 6

e db 8

f db 5

g db 48

z db ?

result dw ?

.code

.startup

mov al ,b ;Заношу у регістр al число b

div c ;Виконую операцію ділення числа с у регістрі al

mov ah,0 ;Обнуляю залишок

mov z,al ;Переміщую значення регістру al у змінну z

mov al,a ;Заношу у регістр al число a

sub al,z ;Виконую операцію віднімання

mov bl,d ;Заношу у регістр bl число d

div bl ;Ділю число яке за знаходиться у ax на bl

mov result,ax ;Заношу у змінну result значення регістру ax

xor ax,ax ;Очищаю регістр

mov al,e ;Поміщаю у очищений регістр число e

mul f ;Виконую операцію множення числа f у регістрі al

add al, g ;Виконую операцію додавання числа g регістрі al

sub result,ax

mov ax,result ;Віднімаю значеня яке знаходиться у регістрі

xor ah,ah ;обнуляю залишок

.exit 0

end @startup

(6-4)*(10+5)/(34-48/3)

.8086

.model small

.stack 200h

.data

a db 6

b db 4

c db 10

d db 5

e db 34

f db 48

g db 3

result dw ?

.code

.startup

mov al,a

sub al,b

mov bx,ax ;bx=a-b=6-4=2

mov ax,0

mov al,c

add al,d

cbw

mul bx ;___ax=2*15=30

mov bx,0 ;bx=0

mov bl,f ;bl=48

div g ;bl=48/3=16

cbw ;bx=16

mov cx,bx ;cx=16

mov bx,0 ;bx=0

mov bl,e

cbw

sub bx,cx ;___bx=34-16=18

mov cx,0

mov cx,ax

div bl

mov result,cx

.exit 0

end @startup

(6*3-24/5)/(2*4-5)

Обчислити суму непарних чисел з діапазону [23, 125].

.8086

.model small

.stack 200h

.data

S dw ?

.code

.startup

mov cx, 51 ; кількість повторень циклу

mov ax, 23 ; ах=значення першого елемента проміжку [23,125]

mov bx, ax ; bx=23

m1: mov S, bx ; S=bx

add ax, 2 ; ax=ax+2

add S, ax ; S=S+ax

mov bx, S ; bx=S

loop m1

.exit 0

end @startup

Знайти кількість простих чисел з дiапазону [2, n], n>2

.model small

.stack 100h

.data

a dw 2 ;ліва межа

b dw 10 ;права межа

n dw ? ;кількість простих чисел

dil db 1 ;дільник

k dw 100 ;число повторень

.code

.startup

mov ax,b

sub ax,a

inc ax

mov n,ax ;знаходимо кількість всіх чисел в заданих межах

xor ax,ax ;обнулюємо ах

mov cx,k ;встановлюємо кількість повторень циклу

m1: ;перша мітка - підготовка діленого і дільника

mov ax,a ;заносимо в регістр ах число, яке будемо перевіряти на простоту

mov bl,dil ;заносимо дільник в bl

cmp ax,b ;порівнюємо число з правою межею

jg m5 ;якщо більше - вихід з циклу

m2: ;друга мітка - ділення числа

cmp bl,1 ;порівнюємо дільник з 1

je m4 ;якщо рівні - пригаємо на мітку 3

div bl ;ділимо число на дільник

cmp ah,0 ;порівнюємо залишок з 0

je m3 ;якщо залишок рівний 0, то стрибаємо на m3

dec bl ;зменшуємо дільник на 1

mov ax,a ;знову заносимо число в ах

loop m2 ;переходимо на m2

m3: dec n ;третя мітка, зменшення кількості чисел на 1

m4: inc a ;четверта мітка, збільшення числа на 1

inc dil ;збільшення дільника на 1

loop m1 ;переходимо на m1

m5: xor ax,ax

.exit 0

end @startup

Знайти кількість елементів двовимірного масиву цілих чисел, які потрапляють в інтервал [-5, 10].

.model small

.stack 200h

.data

n=3 ;розмірність двовимірного масиву

m=4

a dw 1, -2, -7, -9 ;елементи масиву

dw 5, 7, 11, 12

dw 2, 4, 6, 15

k db 0 ;лічильник

.code

.startup

xor bx,bx

mov cx,n ;заносимо в сх кількість рядків

xor ax,ax

m1: push cx ;заносимо сх в стек

xor si,si

mov cx,m ;заносимо в сх кількість стовпців

m2: mov ax,a[bx][si] ;засносимо в ах перший елемент

cmp ax,-5 ;порівнюємо з -5

jl m3 ;якщо менший - пригаємо на мітку 3

cmp ax,10 ;порівнюємо з 10

jg m3 ;якщо більший - на мітку 3

inc k ;збільшення лічильника

m3: add si,2 ;наступний елемент масиву

loop m2

pop cx ;дістаємо зі стеку сх

add bx,si ;наступний рядок масиву

loop m1

.exit 0

End

Кількість цілих чисел з діапазону [40, 280], які діляться на 3 та на 5.

;program that calculate amount of numbers from 40 to 280 that divide on 3 and 5

.8086

.model small

;define stack

.stack 100h

.data

;define valuables

n dw 40 ;lower limit

m dw 280 ;higher limit

div1 db 3 ;first divisor

div2 db 5 ;second divisor

count dw 0 ;counter of numbers (number/3 and number/5 without remainder)

result dw ? ;valuable of final result

.code

.startup

mov cx,241 ;241->cx (number of repetitions of cycle)

m2: xor ax,ax ;clear ax

mov ax,n; ;n->ax

div div1; ;n/3

cmp ah,0

jne m1 ;if remainder is 0 go to M1

xor ax,ax;

mov ax,n ;n->ax

div div2 ;n/5

cmp ah,0

jne m1 ;

inc count ;increase amount of numbers that divides on 3 and 5

m1: inc n ;n=n+1

loop m2 ;cycle begin from2 M2

xor ax,ax

mov ax,count ;count->ax

mov result,ax ;ax->result

.exit 0

end @startup; end of program

Кількість непарних елементів одновимірного масиву цілих чисел:

.8086

.model small

;define stack

.stack 100h

;define variables

.data

N=10

el dw 7,4,-2,19,-17,24,52,17,22,-36;massif of incoming numbers

tw db 2

count dw ? ;current counter of odd numbers

res dw ? ;final result of counting

.code

.startup

xor bx,bx ;clear bx and ax

xor ax,ax

mov cx,N ;10 repetitions of cycle

lea bx,el ;put address of 1 element of massif in bx

m1: mov ax, [bx] ;put value from address bx IN AX

idiv tw ;el/2

cmp ah,0

je m2 ;if remainder is 0 go to M2

inc count ;count=count+1

m2: add bx,2 ;go to next element of massif

loop m1 ;if cx is not 0 then begin cecle from M1

xor ax,ax

mov ax, count ;count->ax

mov res,ax ;ax->res

.exit 0

end @startup; end of program

Знайти добуток цифр у десятковому записі натурального числа n.

Знайти максимальний від’ємний елемент одновимірного масиву цілих чисел.

знайти суму десяткових цифр натурального числа n=369.

Eлементи одновимірного масиву цілих чисел зсунути циклічно вліво на k позицій.

model small

.stack 100h

.data

A db '1','2','3','4','5'

.code

.startup

mov cx,4 ;задаю лічильник

lea di,a ;заношу в di масив А

mov bx,0 ;занульовую bx

mov bl,[di] ;заношу в bl перший елемент

m1:

add di,1 ;переходжу на другий елемент масиву

mov ah,[di] ;заношу другий елемент в ah

dec di ;зменшую di на одиницю

mov [di],ah ;заношу ah в наступний елемент масиву

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]