Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для Windows/Dos > Рисуем флаг Польши в Turbo Pascal и Free Pascal


Автор: Sectoid 4.4.2016, 00:52
Код

Program FLAG_POLSHA;
BEGIN
asm
   mov ax,0B800h
   mov es,ax
   mov di,0
   mov bx,4000
   mov al,0
   mov ah,0
   mov cx,bx
@1:
   mov es:[di],ax
   add di,2
   loop @1
{}
 mov ax,0B800h
 mov es,ax
 mov di,0
{ mov al,0
 mov ah,0
 mov cx,2000
@1:mov es:[di],ax
 add di,2
 loop @1
 mov ah,10h
 int 16h}
 mov al,0
 mov ah,255
 mov cx,400
@2:mov es:[di],ax
 add di,2
 loop @2
 mov ah,10h
 {int 16h}
 mov al,0
 mov ah,192
 mov cx,400
@3:mov es:[di],ax
 add di,2
 loop @3
 mov ah,10h
 int 16h
{ int 20h}
end;
END

.
 smile 

Автор: Sectoid 4.4.2016, 01:43
Код

Program FLAG;
begin
asm
 mov eax,0B800h
 mov esi,eax
 mov edi,0
 mov eax,0
 mov edx,0
 mov ecx,80
@1:mov esi:[edi],eax
 {mov es,ax}
 add edi,2
 loop @1
{ mov eax,16
 mov edx,0
 mov ebx,65
 mov ecx,80
@2:mov es:[edi],eax
 {mov esi,eax}
{ add edi,2}
{ loop @2
 mov eax,16}
 {int 16h}
{ mov ebx,0
 mov edx,224
 mov ecx,80
@3:mov esi:[edi],ax
 add edi,2
 loop @3
 mov eax,16}
 int 32
end
end.


P.S:

Не работает что-то ...

  smile 

Автор: Sectoid 4.4.2016, 21:51
Код

Ругань компилятора идёт на первую инструкцию

Автор: Sectoid 5.4.2016, 07:35
Первый пример работает. Не работает второй пример, а именно компилятор ругается на первую инструкцию ... >П-О-М-О-Г-И-Т-Е _ 

Автор: GLX 6.4.2016, 08:35
Здравствуй, Sectoid.
Согласен, первый пример работает.
Но почему нужно делать вывод флага на ассемблере ? Что ты от этого выигрываешь ? Производительность ?

Помнишь, главное правило оборонки СССР ? Делай проще !

Код

program DRUGAYA_RUSSIA;
uses graph,crt;
var
i,j:integer;
vga,vgahi:integer;
Label
Label1,Label2;
BEGIN
InitGraph(vga, vgahi ,'c:\prg\bp\bgi');
For i:=1 to 1280 Do
   begin
   For j:=1 to 340 Do
      begin
      PutPixel(i,j,0);
      end;
   end;
For i:=1 to 1280 Do
   begin
   For j:=341 to 681 Do
      begin
      PutPixel(i,j,14);
      end;
   end;
For i:=1 to 1280 Do
   begin
   For j:=682 to 1022 Do
      begin
      PutPixel(i,j,7);
      end;
   end;
Label1:
If KeyPressed=true then goto label2 else GOTO Label1;
GOTO label1;
Label2:
Closegraph;
end.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)