581

(10 відповідей, залишених у Системне програмування)

fxi199218 написав:

Допоможіть написати програму на мові Assembler, в якій потрібно ввести дві стрічки,а потім вивести їх у алфавітній послідовності.

якщо я правильно зрозумів завдання...

.model small
.stack 100h

print_text macro text
lea dx, text
mov ah, 9
int 21h
endm

.data
maxsize EQU 40
qrstr1 db 'Vvedite strichku1 =>',10,13,'$'
qrstr2 db 'Vvedite strichku2 =>',10,13,'$'
rezstr1 db 'vyhidna strichka1=>',10,13,'$'
rezstr2 db 'vyhidna strichka2=>',10,13,'$'
bufa db maxsize
lena db 0
stra db maxsize dup ('$')
bufb db maxsize
lenb db 0
strb db maxsize dup ('$')
.code
main:
mov ax, @data
mov ds, ax

print_text qrstr1
lea dx, bufa
mov ah, 0Ah
int 21h

print_text qrstr2
lea dx, bufb
mov ah, 0Ah
int 21h

mov al, lena 
cbw
mov di, ax
mov stra[di+1],10 ;для корекного виводу стрічки а

mov al, lenb
cbw
mov di, ax
mov strb[di+1],10 ;для корекного виводу стрічки б

xor cx, cx
mov cl, lena
mov si, 0
mov di, 0
cmpr:
mov al, stra[si]
cmp al, strb[di]
jg ag
jl bg
inc si
inc di
loop cmpr

ag:
lea bx, strb
lea cx, stra
jmp exit
bg:
lea bx, stra
lea cx, strb

exit:
print_text rezstr1
mov dx, bx
int 21h

print_text rezstr2
mov dx, cx
int 21h

mov ah, 4Ch
int 21h
end main
end

чи треба враховувати регістр при порівнянні?