Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаба 3 отчет.docx
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
39 Кб
Скачать
☆

Код программы

title LaborRabota3

print MACRO Mess

lea DX,Mess

mov AH,09h

int 21h

ENDM

Vvod macro n

lea DX,N

mov AH,0Ah

int 21h

ENDM

print_sim MACRO Sim

mov DX,Sim

mov AH,06h

int 21h

ENDM

prin_sim1 MACRO sim

mov DL,Sim

mov AH,06h

int 21h

ENDM

ten MACRO xx,n

LOCAL m1,exit

cmp n,0

je exit

push AX

push CX

mov CX,n

mov AX,xx

m1:

mov DX,10

mul DX

loop m1

mov xx,AX

pop CX

pop AX

exit:

ENDM

asci_deg MACRO xx,str,len

LOCAL m1

mov AX,0

mov BX,0

mov SI,0

mov CH,0

mov CL,len

mov DI,CX

dec DI

m1:

mov BL,str[SI]

mov BH,0

sub BX,30h

ten BX,DI

add AX,BX

inc SI

dec DI

loop m1

mov xx,AX

ENDM

my_stack SEGMENT STACK 'Stack'

DW 64 DUP (?)

my_stack ENDS

data SEGMENT

mas db 10 dup(?)

Temp1 db 3,?

Temp db 2 dup(?)

mes1 db 10,13,'Введите $'

mes2 db '-й элемент массива=$'

mes3 db 10,13,'Введите число элементов массива=$'

mes4 db 10,13,'Введите число A=$'

mes5 db 10,13,'Введите число B=$'

mes6 db 10,13,'Сумма элементов удовлетворяющих условию=$'

MM db 3,?

M1 db 2 dup(?)

AA db 3,?

A1 db 2 dup(?)

BB db 3,?

B1 db 2 dup(?)

M dw 1 dup(?)

A dw 1 dup(?)

B dw 1 dup(?)

Ent db '',0Ah,0Dh,'$'

Tm dw 1 dup(?)

Tm1 dw 1 dup(?)

Tm2 dw 1 dup(?)

Sum dw 1 dup(?)

data ends

text SEGMENT

assume CS:text, DS:data, SS:my_stack

main proc far

push DS

xor AX,AX

push AX

mov AX,data

mov DS,AX

print Mes3

Vvod MM

asci_deg M,M1,[MM]+1

mov CX,M

mov SI,0

mov BX,0

N:

print Mes1

add SI,31h

print_sim SI

sub SI,31h

print Mes2

Vvod Temp1

mov Tm,SI

mov Tm1,CX

asci_deg Tm2,Temp,[Temp1]+1

mov AX,Tm2

mov SI,Tm

mov Mas[SI],AL

mov CX,Tm1

inc SI

loop N

print Mes4

Vvod AA

asci_deg A,A1,[AA]+1

print Mes5

Vvod BB

asci_deg B,B1,[BB]+1

mov SI,0

mov CX,M

mov DX,0

mov AX,0

N1:

mov AL,Mas[SI]

mov BX,A

cmp AX,BX

jge E

jmp Exit

E:

mov BX,B

cmp AX,B

jle E1

jmp Exit

E1:

add DX,AX

Exit:

inc Si

loop N1

mov Sum,DX

print Mes6

mov DX,Sum

mov AX,DX

cmp AL,10

jge D

jmp D1

D:

mov BL,10

div BL

mov BX,AX

mov AL,BH

mov AH,BL

D1:

add AL,30h

add AH,30h

mov BH,AL

mov BL,AH

prin_sim1 BL

prin_sim1 BH

print Ent

;-------------------------

ret

main endp

text ends

end main

Вывод

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

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