Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ассемблер _ вылет строка по буквам

Автор: Shadow 24.05.2004 2:48

привет
вот может кому пригодится для оформления
чего нибудь smile.gif
-------------
я не стал заниматься оптимизацией цель немного другая
-------------

Uses Crt;
Var
sss    :       Byte;
Procedure OS(S : String);
Var
ls     :       Byte;
 begin
   asm
     push ds
     mov ax,ss
     mov ds,ax

     shl bh,8         {load zero this register t/k/ bx poor enter Procedure}

     mov ah,09h       {DOS function out string}
     lea dx,S         {load area adres}
     inc dx           {+1}

     lea si,S         {}
     mov bl,[si]      {Load values length string}
     mov ls,bl        {save adres S to variable ls}

     add si,bx        {si+bx}
     inc si           {correctly for first symbol key lenght string}

     mov bl,24h       (*24h this code ASCII symbol $ end string*)
     mov [si],bl
     int 21h
     pop ds
     mov ah,ls
   end;
 end;

procedure PC_XY(nvs,x,y : Byte);assembler;
 asm
  push ds
  mov ah,02h
  mov bh,nvs
  mov dh,y
  mov dl,x
  int 10h
  pop ds
 end;

Procedure FlyS(S : String;xx,yy : Byte; wt : Integer);{0..79  0..49}
Var
 str : array  [0..255] of Char;
 x,ls  : byte;
 x_c   : Byte;
 begin
 x_c:=0;
  asm
   push ds
   mov ax,ss
   mov ds,ax
   lea si,S {--------------------------------------}
   lea di,str
   mov cl,[si]
   mov ls,cl   {len string}
   inc si
@a:
   mov bl,[si]
   mov [di],bl
   inc si
   inc di
   dec cx
   cmp cx,0
   jnz @a
   pop ds
  end;
  x_c:=xx;
while ls <> 0 do
 begin
     dec(ls);
     for xx:=0 to x_c do
       begin
        PC_XY(0,xx,yy);
        Write(str[ls]);
        Delay(wt);
        PC_XY(0,xx-1,yy);
        Write(' ');
     end;
       dec(x_c);
 end;
end;
Procedure WK;Assembler;
 asm
   mov ax,0
   int 16h
   xor ax,ax
 end;
Begin
ClrScr;
WK;
PC_XY(0,10,10);
OS('Veeeetttt');
FlyS('..::This CopyRight [c] Lonely_Raven 2004::..',57,15,400);
{The FlyS = String, x - last symbol out,y - pos symbol,wt wait symbool out}
WK;
end.

Автор: NetAnton 28.06.2004 14:07

спасибо, сейчас все это испытаем :D