Написать процедуру, которая проверяет, является ли симметричным массив из N слов - Assembler (223164)

Узнай цену своей работы

Формулировка задачи:

Прокомментируйте пожалуйста каждую строчку кода. Вот задание для программы: Написать процедуру, которая проверяет, является ли симметричным массив из N слов. Используя процедуру исследовать два массива и выдать сообщения " симметричен " или "не симметричен". Выполнить это упражнение при условии, что параметр передается процедуре через стек.
include io.asm
STACK_ SEGMENT STACK
DB 100h DUP(?)
STACK_ ENDS

data segment
a dw 1111,2,3,2,1111
b dw 1,2,3,5,7,1
yes db "Симметричен*",10,13,"$"
no db "Не симметричен",10,13,"$"
data ends

code segment*
assume cs:code,ds:data,ss:stack_
palindr proc near
push bp
mov bp,sp
 
push bx
push cx
push si
push dx
mov ax,1 
mov bx,[bp+6]
mov cx,[bp+4]
mov si,bx
 
mov dx,cx
dec dx
shl dx,1*
mov si,bx
add si,dx*
shr cx,1
 
comp_ends:
mov dx,[bx] 
cmp dx,[si]
je eqq
mov ax,0
jmp obloms
eqq: 
add bx,2
sub si,2
loop comp_ends 
 
obloms: 
pop si
pop cx
pop bx
pop dx
 
mov sp,bp
pop bp
ret;
endp palindr
 
start:
mov ax,data
mov ds,ax
 
lea bx,a
push bx
mov bx,5
push bx
call palindr
pop bx
pop bx
 
lea dx,yes
cmp ax,0
jne yout1
lea dx,no
yout1:
outstr

lea bx,b
push bx
mov bx,6
push bx
call palindr
pop bx
pop bx
 
lea dx,yes
cmp ax,0
jne yout2
lea dx,no
yout2:
outstr
 
MOV AX, 4C00h
INT 21h ;End Program
 
code ends
 
end start

Решение задачи: «Написать процедуру, которая проверяет, является ли симметричным массив из N слов»

textual
Листинг программы
outstr macro
push ax
push dx
mov ah, 09h
int 21h
pop dx
pop ax
endm

Объяснение кода листинга программы

  1. Объявляется макрос с названием outstr.
  2. Макрос outstr начинается.
  3. Регистр ax помещается в стек.
  4. Регистр dx помещается в стек.
  5. В регистр ah загружается значение 09h, который представляет функцию вывода строки.
  6. Вызывается прерывание 21h для вывода строки.
  7. Регистр dx выталкивается из стека.
  8. Регистр ax выталкивается из стека.
  9. Макрос outstr завершается.

Оцени полезность:

6   голосов , оценка 3.167 из 5
Похожие ответы