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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2009, 00:50   #1
maxflint
работаю за еду
Пользователь
 
Аватар для maxflint
 
Регистрация: 31.10.2009
Сообщений: 64
По умолчанию Сортировка слиянием

прошу помочь мне написать сею сортировку на TASMе (с assume, с прописыванием регистра кода данных стека)
Вотан ждёт меня в своих чертогах, на свой вечный пир!
maxflint вне форума Ответить с цитированием
Старый 22.11.2009, 13:08   #2
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

выкладывайте наработки посмотрим, что не получается, иначе только во фрианс
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Старый 22.11.2009, 16:37   #3
maxflint
работаю за еду
Пользователь
 
Аватар для maxflint
 
Регистрация: 31.10.2009
Сообщений: 64
По умолчанию

у меня есть только написанная на фасме.... вы сможете переписать её под тасм?
Вотан ждёт меня в своих чертогах, на свой вечный пир!
maxflint вне форума Ответить с цитированием
Старый 23.11.2009, 00:20   #4
maxflint
работаю за еду
Пользователь
 
Аватар для maxflint
 
Регистрация: 31.10.2009
Сообщений: 64
По умолчанию

Код:
;MergingSort16 by MCL [c] 2006
;Compile with FASM (1.62+)

org 100h

use16

;begin
       push somedata.size
       push somedata
       call msort16

       ret
;end

;var
somedata: db 01h, 05h, 03h, 02h, 04h, 04h, 0FFh
somedata.size = $ - somedata


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;
;
;msort16( char *firstbyte, int size )
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;

msort16:
               pusha
               mov bp, sp

               mov ax, [ bp + 10h + 02h ] ;*firstbyte
               mov dx, [ bp + 10h + 04h ] ;size

               mov cx, dx
               shr cx, 01h

               test cx, cx
               jz ms16_end

               push cx
               push ax

               push cx
               push ax
               call msort16

               sub dx, cx
               add ax, cx

               push dx
               push ax

               push dx
               push ax
               call msort16

               call merge16

       ms16_end:
               popa
               ret 0004h

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;
;
;merge16( char *firstbyte1, int size1, char *firstbyte2, int size2 )
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;

merge16:
               pusha
               mov bp, sp

               mov bx, [ bp + 10h + 04h ] ;*size1
               mov si, [ bp + 10h + 06h ] ;*firstbyte2
               mov cx, [ bp + 10h + 08h ] ;*size2
               mov bp, [ bp + 10h + 02h ] ;*firstbyte1

               mov di, mass

               mov dx, cx
               add dx, bx

               add bx, bp
               add cx, si

               cld

       m16_fill:
               lodsb

               cmp al, [ bp ]
               jb m16_si

               mov al, [ bp ]
               dec si
               inc bp

               stosb
               cmp bp, bx
               jnz m16_fill

               jmp m16_over

       m16_si:
               stosb
               cmp si, cx
               jnz m16_fill

               mov si, bp
               mov cx, bx

       m16_over:
               sub cx, si
               rep movsb

               mov cx, dx
               lea si, [ di - 01h ]
               lea di, [ bx - 01h ]

               std
               rep movsb

               popa
               ret 0008h

mass:
Вотан ждёт меня в своих чертогах, на свой вечный пир!

Последний раз редактировалось rpy3uH; 28.11.2009 в 09:46.
maxflint вне форума Ответить с цитированием
Старый 27.11.2009, 21:50   #5
maxflint
работаю за еду
Пользователь
 
Аватар для maxflint
 
Регистрация: 31.10.2009
Сообщений: 64
По умолчанию

я написал ввод массива с клавиатуры провверку там сдела и прочую мелочь:

Код:

assume cs:c,ds:d,ss:s
s segment stack 
dw 128 dup(?)
s ends

d segment 
X dw 10 dup (?) 
B dw 10 dup (?)
N dw 0
A dw 100 dup(?)
msg db 'massiv=$' 

cr = 0dh 
lf = 0ah
string db 255, 0, 255 dup (?)
errmsg db 'error: illegal symbol'
crlf db cr,lf,'$'
negflag dw ?

d ends

c segment 

IntegerOut proc 
	xor cx,cx
	mov bx,10
	cmp ax,0
	jge m
	neg ax
	push ax
	mov ah,6
	mov dl,'-'
	int 21h
	pop ax
	m: inc cx
	xor dx,dx
	div bx
	push dx
	or ax,ax
	jnz m
    m1: pop dx
	add dx,'0'
	mov ah,6
	int 21h
    loop m1
IntegerOut endp

IntegerIn proc
	mov ah,0ah
	lea dx,string
	int 21h
	xor ax,ax
	lea si,string+2
	mov negflag,ax
	cmp byte ptr [si],'-'
	jne m2
	not negflag
	inc si 
	jmp m3
    m2: cmp byte ptr [si],'+'
	jne m3
	inc si
    m3: cmp byte ptr [si],cr
	je ex1
	cmp byte ptr [si],'0'
	jb er
	cmp byte ptr [si],'9'
	ja er
	mov bx,10
	mul bx
	sub byte ptr [si],'0'
	add al,[si]
	adc ah,0
	inc si
    jmp m3
    er: lea dx,errmsg
	mov ah,9
	int 21h
	jmp IntegerIn
   ex1: cmp negflag,0
	je ex
	neg ax
    ex: push ax
	mov ah,9
	lea dx,crlf
	int 21h
	pop ax
	ret	
IntegerIn endp

start: mov Ax,d
	mov Ds,Ax
	mov Ah,9
	lea Dx,MSG
	int 21h
	call IntegerIN
	mov N,Ax
	mov Cx,N
	xor Si,Si
     K: push Cx
 	push Si
	
	call IntegerIN

	pop Si	
	pop Cx
	mov A[Si],Ax
	add Si,2
   loop K



;как бы мне сюда эти две процедуры вставить?



exit:
mov Cx,N
xor Si,Si
K2: 
push Cx
push Si
mov Ax, A[Si]
call IntegerOut
pop Si
pop Cx
add Si,2
loop K2

mov Ah,4ch
int 21h

c ends
end start
как бы мне сюда эти две процедуры вставить??
Код:
msort16:
               pusha
               mov bp, sp
 
               mov ax, [ bp + 10h + 02h ] ;*firstbyte
               mov dx, [ bp + 10h + 04h ] ;size
 
               mov cx, dx
               shr cx, 01h
 
               test cx, cx
               jz ms16_end
 
               push cx
               push ax
 
               push cx
               push ax
               call msort16
 
               sub dx, cx
               add ax, cx
 
               push dx
               push ax
 
               push dx
               push ax
               call msort16
 
               call merge16
 
       ms16_end:
               popa
               ret 0004h
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;
;
;merge16( char *firstbyte1, int size1, char *firstbyte2, int size2 )
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;
 
merge16:
               pusha
               mov bp, sp
 
               mov bx, [ bp + 10h + 04h ] ;*size1
               mov si, [ bp + 10h + 06h ] ;*firstbyte2
               mov cx, [ bp + 10h + 08h ] ;*size2
               mov bp, [ bp + 10h + 02h ] ;*firstbyte1
 
               mov di, offset mass
 
               mov dx, cx
               add dx, bx
 
               add bx, bp
               add cx, si
 
               cld
 
       m16_fill:
               lodsb
 
               cmp al, [ bp ]
               jb m16_si
 
               mov al, [ bp ]
               dec si
               inc bp
 
               stosb
               cmp bp, bx
               jnz m16_fill
 
               jmp m16_over
 
       m16_si:
               stosb
               cmp si, cx
               jnz m16_fill
 
               mov si, bp
               mov cx, bx
 
       m16_over:
               sub cx, si
               rep movsb
 
               mov cx, dx
               lea si, [ di - 01h ]
               lea di, [ bx - 01h ]
 
               std
               rep movsb
 
               popa
               ret 0008h
Вотан ждёт меня в своих чертогах, на свой вечный пир!

Последний раз редактировалось maxflint; 27.11.2009 в 21:55.
maxflint вне форума Ответить с цитированием
Старый 05.12.2009, 20:41   #6
maxflint
работаю за еду
Пользователь
 
Аватар для maxflint
 
Регистрация: 31.10.2009
Сообщений: 64
Вопрос

поможет мне кто-нибудь?
Вотан ждёт меня в своих чертогах, на свой вечный пир!
maxflint вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка слиянием Delphi 7 xxxPascalxxx Помощь студентам 2 17.05.2009 16:09
Сортировка двухфазным слиянием [MI_nor] Общие вопросы C/C++ 0 29.04.2009 23:27
сортировка естественным слиянием ArtFul777 Паскаль, Turbo Pascal, PascalABC.NET 1 18.11.2008 19:36