Работа с матрицами - Assembler (223808)
Формулировка задачи:
Здравствуйте
Помогите пожалуйста найти ошибку в коде
Необходимо вернуть через регистр ax число 0, если в матрице присутствует строка, все элементы которой нечетные числа. Моя программа постоянно возвращает 0
public _haracterictica .586 .model flat .code _haracterictica proc ;функция near push ebp mov ebp,esp ;ebp - указывает на вершину стека push esi push ecx push edi push ebx add ebp,8 ;пропускаем в стеке адрес возврата mov edi,[ebp] ;адрес матрицы(массив указателей на строки) add edi,4 ;смещение адреса второй строки mov ecx,[ebp+4] ;размерность mov ebx,ecx mov edx,0 c1: push ecx mov ecx,ebx mov esi,[edi] c2: xor eax,eax mov eax,esi test eax,1 jnz nechet jmp c3 nechet: add esi,4 inc edx loop c2 c3: pop ecx dec ebx add edi,4 cmp edx,4 jz c4 c4: mov eax,0 loop c1 pop ebx pop edi pop ecx pop esi pop ebp ret ;возврат данных через регистр eax _haracterictica endp end
Решение задачи: «Работа с матрицами»
textual
Листинг программы
model tiny,pascal .code org 100h start: mov ax,3 mov bx,4 lea cx,arrayA call h,cx,ax,bx call o,ax mov ax,3 mov bx,4 lea cx,arrayB call h,cx,ax,bx call o,ax ret h proc a:word,b:word,c:word uses cx,dx,si mov si,a mov cx,b @@01: push cx mov cx,c xor dx,dx @@02: lodsw and ax,1 add dx,ax loop @@02 pop cx mov ax,c sub ax,dx jz @@03 loop @@01 @@03: ret h endp o proc a:word lea dx,dbNo or ax,ax jnz @@04 lea dx,dbYes @@04: mov ah,9 int 21h ret dbNo db 10,13,'No$' dbYes db 10,13,'Yes$' o endp arrayA dw 3, 7, 9, 11 dw 2, 3, 8, 4 dw 1, 7, 9, 12 arrayB dw 1, 2, 7, 9 dw 2, 4, 9, 1 dw 3, 1, 7, 4 end start
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д