Вниз
Скачать: 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.02 c
7-1081791170
<DeL.>
2004-04-12 21:32
2004.05.23
Контекстное меню в SysTray


1-1084165730
SashaNevid
2004-05-10 09:08
2004.05.23
PageControl


3-1083066585
strelok-47
2004-04-27 15:49
2004.05.23
Работа с MS SQL через OLE, ошибка подсоеденения


3-1083132235
Volodya_
2004-04-28 10:03
2004.05.23
Синхронизация данных


9-1074104612
Bortel
2004-01-14 21:23
2004.05.23
Помогите с первой игрой




   Наверх