Написать процедуру, которая проверяет, является ли симметричным массив из 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
Объяснение кода листинга программы
- Объявляется макрос с названием
outstr
. - Макрос
outstr
начинается. - Регистр
ax
помещается в стек. - Регистр
dx
помещается в стек. - В регистр
ah
загружается значение 09h, который представляет функцию вывода строки. - Вызывается прерывание 21h для вывода строки.
- Регистр
dx
выталкивается из стека. - Регистр
ax
выталкивается из стека. - Макрос
outstr
завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д