Sto scrivendo un programma in assembly utilizzando tasm. Il mio compito è scrivere un programma che userà l'ordinamento a bolle per ordinare alfabeticamente la stringa inserita. Ex. se inserisci "ciao" dovrebbe scrivere "ehllo". Ho scritto l'accattonaggio per inserire string e per ordinarlo (penso che funzioni okey fino alla fine dove dovrebbe stampare il risultato, ma alla fine scrive solo il mio .data una volta e ha finito il suo lavoro) PS scusa per il male ingleseAssemblaggio - ordinamento a bolle per stringa di ordinamento
.model small
.stack 100h
.data
request db 'This program is using bubblesort to get alphabetical order of your enterd string', 0Dh, 0Ah, 'Enter your string:', 0Dh, 0Ah, '$'
result db 0Dh, 0Ah, 'Result:', 0Dh, 0Ah, '$'
buffer db 100, ?, 100 dup (0)
.code
start:
MOV ax, @data
MOV ds, ax
MOV ah, 09h
MOV dx, offset request
int 21h
MOV dx, offset buffer
MOV ah, 0Ah
INT 21h
MOV si, offset buffer
INC si
MOV bh, [si]
INC si
sort:
mov cx, [si]
mov bx, [si]
nextelement:
mov ax, [bx+si]
cmp ax, [bx+si+1]
jge noswap
xchg ax, [bx+si+1]
mov ax, [bx+si]
noswap:
inc si
cmp cx, si
jl nextelement
loop nextelement
MOV ah, 09h
MOV dx, offset result
int 21h
char:
LODSB
MOV ah, 2
MOV dl, al
INT 21h
DEC bh
JZ ending
JMP char
ending:
MOV ax, 4c00h
INT 21h
end start
Si noti che il registro bh condivide gli 8 bit superiori con bx, quindi se si carica quest'ultimo, il modulo anche questo viene sovrascritto. –
Okey lo avrò in mente in futuro –