Форум: "Потрепаться";
Текущий архив: 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.035 c