Код программы
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.
