Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2017, 10:19   #1
flu3xz
Пользователь
 
Регистрация: 19.05.2017
Сообщений: 26
По умолчанию Отладка программы

Данная программа заполняет массив С, элементами массивов А и Б, по возрастанию, не используя сортировки. Но в программе есть некие недочеты, но где?
Код:
.model small
.stack 100h
.data
A db 0,3,4,6,7
B db 1,2,5,8,10
C db 10 dup (0)
len equ 5
.code

               mov	ax, @data
               mov	ds, ax
               xor	si, si
               xor  di, di
               xor  bp, bp
  mov cx, len                
start: 
minA:
     mov al, A[si]
     cmp ah, al
     jle min
     jmp pov 
     

minB: 
     mov ah, B[di]
     cmp bp, ax
     jle min
     jmp pov
     

min:
     cmp si, di
     jle minC
     
minC: 
     mov bp, si
     mov bp, di
     jmp pov
          
pov: 
inc si 
inc di
loop start



mov ax,4c00h
int 21h 
end start
flu3xz вне форума Ответить с цитированием
Старый 31.05.2017, 10:28   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Нечего тут отлаживать!
Это не программа, а сплошное недоразумение.

например,
Цитата:
Сообщение от flu3xz Посмотреть сообщение
Код:
minA:
     mov al, A[si]
     cmp ah, al
Вы сравниваете ah с al
допустим, в al очередной элемент массива A.
а что в ah ? старшая часть адреса сегмента данных?!

дальше:
Цитата:
Код:
minB: 
     mov ah, B[di]
     cmp bp, ax
что в bp? почему сравнение идёт с ax?

Цитата:
Код:
     mov bp, si
     mov bp, di
а это что за шедевр? зачем в один и тот же регистр ДВАЖДЫ присваивать одно и то же значение?!

А где запись в массив C?

я уже молчу про логику слияния - ведь нужно увеличивать только тот индекс массива, который меньше (и именно его копировать в массив С)
ну и нужна проверка на то, что массив закончился.

Рекомендую расписать алгоритм на псевдокоде, а только потом его уже кодировать.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.06.2017, 12:53   #3
flu3xz
Пользователь
 
Регистрация: 19.05.2017
Сообщений: 26
По умолчанию

ну вот кое как что-то идет, но cx гигантский!
но с pop и push проблема
Код:
.model small
.stack 100h
.data
A db 0,3,4,6,7
B db 1,2,5,8,10
C db 10 dup (0) 4
.code

               mov	ax, @data
               mov	ds, ax
               xor	si, si
               xor  di, di
               
  mov cx, 4                
start: 
min:
     mov al, A[si]      ;в al первый элемент массива А
     cmp al,A[si+1]   ;сравнивает со следующим
     mov ah, B[di]    ;в ah первый элемент массива B
     cmp ah, B[di+1] ;сравнивает со следующим
     push si     ; сохраняем si 
     cmp al, ah ; понятно что тут 
     jle minC  ; если 0 или мин, прыжок на метку minC
     xor si,si ; 
     mov C[si],ah  ;это для ah т.к. если al min, то прыгает на метку minC, а вот если ah, то это
     inc si ; 
     
minC:xor si,si ;
     mov C[si],al  ;
     inc si ;
     pop si;
loop min
    
mov ax,4c00h
int 21h 
end start
flu3xz вне форума Ответить с цитированием
Старый 02.06.2017, 13:39   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Рекомендую расписать алгоритм на псевдокоде, а только потом его уже кодировать.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отладка программы stas9In Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 07.12.2010 09:50
отладка программы tanek Помощь студентам 3 01.04.2010 21:52
Отладка программы в с++ immor Общие вопросы C/C++ 2 31.05.2009 21:56
отладка программы honest Помощь студентам 1 18.03.2009 06:58
Отладка программы lenuxoid Общие вопросы Delphi 1 22.12.2008 19:29