нужно отсортировать каждую группу 3-ку чисел в массиве
например: дан массив 1,2,3,3,1,2,6,5,4 после сортировки должен быть 1,2,3,1,2,3,4,5,6
вот мои наработки
dseg segment
a db 1,3,2,1,2,3,3,2,1
b db 3 dup(?)
na db 9
nb db 0
dseg ends
sseg segment stack
dw 100h dup(?)
sseg ends
cseg segment
assume cs:cseg,ds:dseg,ss:sseg
start: mov ax,dseg
mov ds,ax
;-----------------
xor si,si
xor di,di
xor cx,cx
mov cl,na
lea si,a
lea di,a
l1: mov al,a[si];first value
mov bl,a[si+1];second value
mov dl,a[si+2];third value
cmp al,bl
ja next1
jl next2
next1: cmp bl,dl
ja g1;al>bl>dl
jl g2
next2: cmp al,dl
ja g2
g1: b[di],dl
b[di+1],bl
b[di+2],al
cont: add di,3
add si,3
loop l1
;--------------
mov ah,4ch
int 21h
cseg ends
end start
Другие языки программирования и технологии
помогите пожалуйста с задачей по ассемблеру 8086
Что это такое?
b[di],dl
b[di+1],bl
b[di+2],al
Таких инструкций в системе команд процессора i8086 нет.
Метка g2 в программе не определена.
Помнится, у вас MASM.
Для массива беззнаковых чисел от 0 до 255. Количество элементов массива должно быть кратно трём.
dseg segment
a db 1, 2, 3, 3, 1, 2, 6, 5, 4
Len_A equ $ - a
dseg ends
sseg segment stack
dw 100h dup (?)
sseg ends
cseg segment
assume cs :cseg, ds :dseg, ss :sseg
start: mov ax, dseg
mov ds, ax
;-----------------
xor si, si
lea bx, a
mov cx, Len_A
l1:
call CompareAndSwap
inc si
call CompareAndSwap
dec si
call CompareAndSwap
add si, 3
sub cx, 2
loop l1
mov cx, Len_A
xor si, si
@@:
lodsb
call Write
mov al, 20h
int 29h
loop @B
;--------------
xor ah, ah
int 16h
mov ah, 4ch
int 21h
CompareAndSwap proc
mov al, [bx + si]
cmp al, [bx + si + 1]
jbe @F
xchg al, [bx + si + 1]
mov [bx + si], al
@@:
ret
CompareAndSwap endp
Write proc uses ax
xor ah, ah
mov dl, 10
div dl
or ah, 30h
test al, al
jz @F
call Write
@@:
mov al, ah
int 29h
ret
Write endp
cseg ends
end start

b[di],dl
b[di+1],bl
b[di+2],al
Таких инструкций в системе команд процессора i8086 нет.
Метка g2 в программе не определена.
Помнится, у вас MASM.
Для массива беззнаковых чисел от 0 до 255. Количество элементов массива должно быть кратно трём.
dseg segment
a db 1, 2, 3, 3, 1, 2, 6, 5, 4
Len_A equ $ - a
dseg ends
sseg segment stack
dw 100h dup (?)
sseg ends
cseg segment
assume cs :cseg, ds :dseg, ss :sseg
start: mov ax, dseg
mov ds, ax
;-----------------
xor si, si
lea bx, a
mov cx, Len_A
l1:
call CompareAndSwap
inc si
call CompareAndSwap
dec si
call CompareAndSwap
add si, 3
sub cx, 2
loop l1
mov cx, Len_A
xor si, si
@@:
lodsb
call Write
mov al, 20h
int 29h
loop @B
;--------------
xor ah, ah
int 16h
mov ah, 4ch
int 21h
CompareAndSwap proc
mov al, [bx + si]
cmp al, [bx + si + 1]
jbe @F
xchg al, [bx + si + 1]
mov [bx + si], al
@@:
ret
CompareAndSwap endp
Write proc uses ax
xor ah, ah
mov dl, 10
div dl
or ah, 30h
test al, al
jz @F
call Write
@@:
mov al, ah
int 29h
ret
Write endp
cseg ends
end start

Напишите процедуру, которая сортирует AX, BX и DX так, чтобы AX<=BX<=DX.
Загрузите в регистры нужные значения, вызовите процедуру, а потом поместите значения результата в нужные ячейки.
псевдокод процедуры:
если AX>BX то поменять AX и BX
если BX>DX то поменять BX и DX
если AX>BX то поменять AX и BX
Загрузите в регистры нужные значения, вызовите процедуру, а потом поместите значения результата в нужные ячейки.
псевдокод процедуры:
если AX>BX то поменять AX и BX
если BX>DX то поменять BX и DX
если AX>BX то поменять AX и BX
Хоть я и не умею в машинный код, но заметка на будущее: пользуйся pastebin'ом, ладно?
Похожие вопросы
- Пожалуйста решите задачу на Ассемблере
- помогите пожалуйста решить задачу по работе компьютера!
- Помогите пожалуйста разобрать задачу по програмированию на C++.
- Pascal. Помогите пожалуйста решить задачу в паскале !
- Помогите пожалуйста решить задачу по программированию. В чем я ошибаюсь?
- Помогите,пожалуйста,решить задачу в Паскале.
- Помогите пожалуйста с задачей на Паскаль.
- Помогите, пожалуйста с задачей :( Сижу, туплю уже какой день, вообще не соображу - чтокуда. Задача на Паскале
- Помогите пожалуйста решить задачи по программированию. P.S: задачи по паскалю.
- Помогите,пожалуйста,решить задачу на двумерные массивы,в паскале.(задача вн.)Спасибо.