Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Ассемблер? Это просто! Учимся программировать


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

_Ayl_
Статус: Студент
Рейтинг: 1450
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 1336
∙ повысить рейтинг »
vladisslav
Статус: 5-й класс
Рейтинг: 1062
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / Assembler (Ассемблер)

Номер выпуска:1289
Дата выхода:12.12.2009, 04:30
Администратор рассылки:Лысков Игорь Витальевич, Модератор
Подписчиков / экспертов:440 / 67
Вопросов / ответов:1 / 1
IRC-канал по теме:#assembler

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

Код:
   
Вопрос № 174973:

Сортировка слиянием

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

Код:

Код:

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 9;
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


как бы мне сюда эти две процедуры вставить??
помогите переписать 2 процедуры (сортировки слиянием) под мою программу, ( если не составит труда напишите их)

Код:

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




Отправлен: 07.12.2009, 04:16
Вопрос задал: Петров Иван Семёнович, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает Лысков Игорь Витальевич, Модератор :
Здравствуйте, Петров Иван Семёнович.
Программа в приложении. Думаю, будет полезно посмотреть реализацию на С
Саму сортировку пришлось переделать.

Приложение:

-----
Удачи!

Ответ отправил: Лысков Игорь Витальевич, Модератор
Ответ отправлен: 08.12.2009, 11:44
Украина, Кировоград
Тел.: +380957525051
ICQ # 234137952
Mail.ru-агент: igorlyskov@mail.ru
Абонент Skype: igorlyskov

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 257481 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.12 от 30.11.2009

    В избранное