169 похожих чатов

Model small .stack 256 .data arr db 16 dup(?)

mes db 10, 13, "Enter 16 numbers: $"
mes1 db " $"
;mes2 db 10, 13, "Sorted: $"
mes3 db 10, 13, "$"
i db 0
.code
main:
mov ax, @data
mov ds, ax

mov ah, 09
lea dx, mes
int 21h

mov ah, 09
lea dx, mes3
int 21h

mov cx, 4
mov si, 0
init:
push cx
mov cx, 4
sub_init:
xor ax, ax
mov ah, 01
int 21h
mov bl, al
sub bl, 30h
int 21h
sub al, 30h
mov ah, bl
aad
mov arr[si], al
inc si

mov ah, 09
lea dx, mes1
int 21h

loop sub_init

mov ah, 09
lea dx, mes3
int 21h

pop cx
loop init

; mov ah, 09
; lea dx, mes2
; int 21h

; mov ah, 09
; lea dx, mes3
; int 21h

mov cx, 15
mov bx, 0
mov si, 1
find:
push cx
mov cx, 16
sort:
mov dl, i
mov al, 4
mul dl
cbw
mov bx, ax
mov dl, arr[bx][si-1]
cmp arr[bx][si], dl
jb bigger
back:
inc si
loop sort

pop cx
inc i
mov si, 1
loop find

mov cx, 4
mov si, 1
mov i, 0
xor bx, bx
jmp output

bigger:
mov dl, arr[bx][si-1]
mov dh, arr[bx][si]
mov arr[bx][si], dl
mov arr[bx][si-1], dh
jmp back


output:
push cx
mov cx, 4
sub_out:
mov dl, i
mov al, 4
mul dl
cbw
mov bx, ax

mov al, arr[bx][si-1]
cbw
aam
add ax, 3030h
mov bx, ax

mov ah, 02
mov dl, bh
int 21h
mov dl, bl
int 21h

mov ah, 09
lea dx, mes1
int 21h

inc si
xor bx, bx
loop sub_out

mov si, 1
inc i

mov ah, 09
lea dx, mes3
int 21h

pop cx
loop output

; mov cx, 16
; mov si, 0
; cycle:
; push cx
; mov al, arr[si]
; aam
; add ax, 3030h
; mov bx, ax
; mov ah, 02
; mov dl, bh
; int 21h
; mov dl, bl
; int 21h

; mov ah, 09
; lea dx, mes1
; int 21h
; inc si
; loop cycle


over:
mov ax, 4c00h
int 21h
end main

5 ответов

146 просмотров

Ты сам писал или взял в интернете?

Ыиу- Автор вопроса
Ян
Ты сам писал или взял в интернете?

Сам, потому и не работает))

Вот этот mov cx,16 в find, он точно правильный? Собственно, проблема неверного вывода в том, что оно пытается сортировать за пределами массива. А за пределами массива сообщение :)

Ыиу- Автор вопроса
s54820
Вот этот mov cx,16 в find, он точно правильный? Со...

Да, вы были правы, поэтому я внутри цикла find сделал проверку i (это номер строки в двумерном массиве). Если i = 3 (т.е. четвертая строка), то i обнуляем и заново пробегаемся по циклу. Но вот незадача - для проверки ввожу 16 "11", на выводе получаю 15 "11" и одну десятку, которая взялась из неоткуда

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта