Всем привет, составил код, в котором бег. строка идет справа налево, мне же нужно пустить ее по диагонали( без разницы из какого угла в какой и сверху или вниз), прошу помощи!
.model small
.stack 1000h
.data
x1 equ 10 ;начальная координата выводимой строки
x2 equ 40 ;конечная координата выводимой строки
llen equ x2-x1+1 ;длина строки
txt db llen dup(' ') ;текст "бегущей" строки
db 'ABC123'
db llen-1 dup(' ')
txtl equ $-txt ;длина "бегущей" строки
movnm equ txtl-llen+1 ;количество сдвигов "бегущей" строки
deltime equ 30 ;задержка (в сотых долях сек.) между сдвигами "бегущей" строки
.code
mov ax,@data ;загружаем адрес сегмента данных
mov ds,ax
mov ah,0 ;очищаем экран установкой стандартного текстового видеорежима
mov al,3
int 10h
m1: mov si,offset txt ;загружаем адрес начала текста
mov cx,movnm ;загружаем количество сдвигов строки
m2: push cx
mov dh,12 ;устаналиваем курсор в позицию начала строки
mov dl,10
call locat
call tprint ;отображаем строку
call delay ;формируем временную задержку
inc si ;переходим к следующей позиции в строке
pop cx ;и выполняем отображение остальной части строки в цикле
loop m2
jmp m1 ;переходим к отображению строки с начала
exit: mov ah,4ch ;завершаем программу
int 21h
delay proc near
mov ah,2ch ;получаем текущее время
int 21h
mov bl,dl ;сохраняем сотые доли секунды
del1: mov ah,2ch ;получаем текущее время
int 21h
sub dl,bl ;корректируем время (при переходе через секунду)
jge del2
add dl,100
del2: cmp dl,deltime ;если время не прошло, то ожидаем
jb del1
ret
delay endp
;при входе:
;DH - Y-координата
;DL - X-координата
locat proc near
mov ah,2 ;устанавливаем позицию курсора
mov bh,0
int 10h
ret
locat endp
;при входе:
;SI - начальный адрес текста
tprint proc near
mov ah,40h ;выводим строку
mov bx,1
mov cx,llen
mov dx,si
int 21h
ret ;выход из подпрограммы
tprint endp
end