Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];

Вниз

Проблема с 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 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.034 c
4-1081251517
Dimitry
2004-04-06 15:38
2004.05.23
Запрет ввода некоторых символов в Edit


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


14-1083656290
GanibalLector
2004-05-04 11:38
2004.05.23
ДОС версии ниже 6.22.


1-1083949911
LAnd
2004-05-07 21:11
2004.05.23
Переменные в DLL


6-1081235446
+Evgen+
2004-04-06 11:10
2004.05.23
Soket





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский