Вниз
Скачать: CL | DM;

Проблема с loop в asm е   Найти похожие ветки 

 
tasman ©   (2004-05-05 21:33) [0]

Доброго времени суток!
Люди! Помогите, плиз.
Использую Turbo Assembler ver. 2.0 & Turbo Link ver. 3.0
Вот такая программа на ассемблере:

sseg segment para stack "stack"
 db 256 dup (0)
sseg ends

dseg segment
n=5

a dw 4 dup (1,2,3,4,5)

m1 dw 0FFFFh
m2 dw 0FFFFh
m3 dw 0FFFFh

dseg ends

cseg segment
assume cs:cseg,ds:dseg

paste proc far
 cmp ax,m1
 je e_paste     ;a[i]=m1
 jl e1cmp       ;a[i]<m1
 mov dx,m2      ;a[i]>m1  ->  we need to paste a[i] to first place
 mov m3,dx
;  xchg m1,m2
 mov dx,m1
 mov m2,dx
 mov m1,ax
 jmp e_paste
 e1cmp:
 cmp ax,m2
 je e_paste     ;a[i]=m2
 jl e_cmp2      ;a[i]<m2
 mov dx,m2      ;a[i]>m2  ->  we need to paste a[i] to second place
 mov m3,dx
 mov m2,ax
 jmp e_paste
 e_cmp2:
 cmp ax,m3
 jle e_paste   ;a[i]<=m3  we can use jl - because we into the procedure only if a[i]>m3 (jg)
 mov m3,ax
 e_paste:
 retf
endp

main proc far
 push ds
 xor ax,ax
 push ax

 mov ax,dseg
 mov ds,ax

 mov cx,n
 dec cx
 xor bx,bx
;  mov bx,0
lp_1:
  mov ax,a[bx]
  cmp ax,m3
  jle m_s          ;jle <=
  call paste       ;jg >
  m_s:
;   inc bx
;   inc bx
  add bx,2
 loop lp_1  ; !!!!!!В этой строке - (из под фара) выдает, что программа выполнила Некорректную операцию и будет завершена (отлаживаю Turbo Debugger)

main endp
cseg ends

end main

 Может кто знает в чем проблема?


 
tasman ©   (2004-05-05 21:46) [1]

Всем, кто ломал голову - спасибо. Прблема решена. А надо было просто не забывать ставить ret в конце процедуры main :(



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.027 c
3-1082719681
}|{yk
2004-04-23 15:28
2004.05.23
Ошибка создания триггера (FireBird 1.5)


3-1083093062
Realist
2004-04-27 23:11
2004.05.23
<<< Общение между двумя БД в реальном времени >>>


1-1084210589
Helpme
2004-05-10 21:36
2004.05.23
Найдите ошибку в этом коде


7-1082208137
Ded Moroz
2004-04-17 17:22
2004.05.23
DSPack


14-1083335373
Ultr
2004-04-30 18:29
2004.05.23
Левые имена файлов в Винде




   Наверх