Здравствуйте! У меня есть код, в котором бегущая строка идет справа налево, как сделать так, чтобы эта строка пошла по диагонали(без разницы из какого в какой угол и сверху или вниз)? | Код | .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
|
|