data segment
nrcitit db ?
nrafisat db 5
sir db "Nr $"
lg dw $-sir
data ends
code segment
assume cs:code,ds:data
start:
Mov ax,data
Mov ds,ax
mov dx,offset sir
mov bx,dx
add bx,3
et:
mov ah,01
int 21h
sub al,'0'
cmp al,9
ja sfarsit
cmp al,0
jb sfarsit
add al,'0'
mov [bx],al
inc bx
jmp et
sfarsit:
mov ah,09
int 21h
mov ah,4ch
int 21h
code ends
end start
miercuri, 30 decembrie 2009
Tasm Minimal - Citire si afisare CIFRA citita de la tastatura
data segment
sir db "Numar $"
lg dw $-sir
data ends
code segment
assume cs:code,ds:data
start:
Mov ax,data
Mov ds,ax
mov ah,1
int 21h
mov nrcitit,al
sub nrcitit,'0' ;scadem cod asci pentru caracterul 0
mov dx,offset sir
mov bx,lg
sub bx,2
mov [bx],al
mov ah,9
int 21h
mov ah,4ch
int 21h
code ends
end start
sir db "Numar $"
lg dw $-sir
data ends
code segment
assume cs:code,ds:data
start:
Mov ax,data
Mov ds,ax
mov ah,1
int 21h
mov nrcitit,al
sub nrcitit,'0' ;scadem cod asci pentru caracterul 0
mov dx,offset sir
mov bx,lg
sub bx,2
mov [bx],al
mov ah,9
int 21h
mov ah,4ch
int 21h
code ends
end start
Tasm Minimal - Macrou introdus cu Include din biblioteca de macrou .mac
;expr5.asm
data segment
nr1 dw 1
nr2 dw 2
rez dw ?
data ends
Include expr6.mac
code segment
assume cs:code,ds:data
start:
Mov ax,data
Mov ds,ax
cifra nr1,nr2
mov rez,ax
mov ah,4ch
int 21h
code ends
end start
;expr6.mac
cifra macro nr1,nr2
mov ax,nr1
mov bx,nr2
add ax,bx
endm
Bibliotecile .mac NU se compileaza si se introduc folosind Include
Se foloste Local et1,et2 in special daca et1,et2,... sunt folosite ca si etichete la bucle sau instructiuni de salt. Local se declara dupa parametri macreoului si asigura ca la fiecare EXPANDARE, (se face efectiv copierea macroului in program nu apel si returnare de parametri ca la procedura) sa avem NUME DIFERITE pentru etichete. Astfel se evita salturile la etichete care au acelasi nume.
data segment
nr1 dw 1
nr2 dw 2
rez dw ?
data ends
Include expr6.mac
code segment
assume cs:code,ds:data
start:
Mov ax,data
Mov ds,ax
cifra nr1,nr2
mov rez,ax
mov ah,4ch
int 21h
code ends
end start
;expr6.mac
cifra macro nr1,nr2
mov ax,nr1
mov bx,nr2
add ax,bx
endm
Bibliotecile .mac NU se compileaza si se introduc folosind Include
Se foloste Local et1,et2 in special daca et1,et2,... sunt folosite ca si etichete la bucle sau instructiuni de salt. Local se declara dupa parametri macreoului si asigura ca la fiecare EXPANDARE, (se face efectiv copierea macroului in program nu apel si returnare de parametri ca la procedura) sa avem NUME DIFERITE pentru etichete. Astfel se evita salturile la etichete care au acelasi nume.
Tasm Minimal - Macroul, in acelasi fisier
data segment
nr1 dw 1
nr2 dw 2
rez dw ?
data ends
cifra macro nr1,nr2
mov ax,nr1
mov bx,nr2
add ax,bx
endm
;aceasta varianta se poate folosi si la proceduri, dar la proceduri se va pune dupa ;assume
code segment
assume cs:code,ds:data
start:
Mov ax,data
Mov ds,ax
cifra nr1,nr2
mov rez,ax
mov ah,4ch
int 21h
code ends
end start
nr1 dw 1
nr2 dw 2
rez dw ?
data ends
cifra macro nr1,nr2
mov ax,nr1
mov bx,nr2
add ax,bx
endm
;aceasta varianta se poate folosi si la proceduri, dar la proceduri se va pune dupa ;assume
code segment
assume cs:code,ds:data
start:
Mov ax,data
Mov ds,ax
cifra nr1,nr2
mov rez,ax
mov ah,4ch
int 21h
code ends
end start
Tasm - Minimal: Programul principal si procedura sunt in acelasi fisier
data segment
nr1 dw 1
nr2 dw 3
rez dw ?
data ends
code segment
;Extrn cifra:near
assume cs:code,ds:data
start:
Mov ax,data
Mov ds, ax
Push ax
Push bx
Mov ax,nr1
Mov bx,nr2
call far ptr cifra
Mov rez,ax
Pop bx
Pop ax
Mov ah,4ch
Int 21h
code segment
;Public cifra
assume cs:code
proc cifra far
Add ax,bx
ret
endp
code ends
code ends
end start
nr1 dw 1
nr2 dw 3
rez dw ?
data ends
code segment
;Extrn cifra:near
assume cs:code,ds:data
start:
Mov ax,data
Mov ds, ax
Push ax
Push bx
Mov ax,nr1
Mov bx,nr2
call far ptr cifra
Mov rez,ax
Pop bx
Pop ax
Mov ah,4ch
Int 21h
code segment
;Public cifra
assume cs:code
proc cifra far
Add ax,bx
ret
endp
code ends
code ends
end start
Tasm - Minimal: Programul principal si procedura sunt in fisiere diferite
;fisierul 1 *.asm
EXTRN cifra:near
data segment
nr1 dw 1
nr2 dw 3
rez dw ?
data ends
code segment
assume cs:code,ds:data
start:
Mov ax,data
Mov ds, ax
Push ax
Push bx
Mov ax,nr1
Mov bx,nr2
call near ptr cifra
Mov rez,ax
Pop bx
Pop ax
Mov ah,4ch
Int 21h
;Fisierul 2 *.asm
code ends
end start
;public cifra
code2 segment
Public cifra
assume cs:code2
proc cifra near
Add ax,bx
ret
endp
code2 ends
end
Se vor folosi comenzile:
a)tasm /zi fis2.asm
b)tlib oBiblioteca + fis2.obj de ex: bib, bib1, sunt numele uzuale
c)tasm /zi fis1.asm
d)tlink /zi fis1.obj+oBiblioteca.lib
e)td fis1.exe
Folositi apelul cu call prt near/far numeProcedura pentru apel, in locul apelului call numeProcedura, pentru a nu obtine eroare la compilare de Need Overwritte
EXTRN cifra:near
data segment
nr1 dw 1
nr2 dw 3
rez dw ?
data ends
code segment
assume cs:code,ds:data
start:
Mov ax,data
Mov ds, ax
Push ax
Push bx
Mov ax,nr1
Mov bx,nr2
call near ptr cifra
Mov rez,ax
Pop bx
Pop ax
Mov ah,4ch
Int 21h
;Fisierul 2 *.asm
code ends
end start
;public cifra
code2 segment
Public cifra
assume cs:code2
proc cifra near
Add ax,bx
ret
endp
code2 ends
end
Se vor folosi comenzile:
a)tasm /zi fis2.asm
b)tlib oBiblioteca + fis2.obj de ex: bib, bib1, sunt numele uzuale
c)tasm /zi fis1.asm
d)tlink /zi fis1.obj+oBiblioteca.lib
e)td fis1.exe
Folositi apelul cu call prt near/far numeProcedura pentru apel, in locul apelului call numeProcedura, pentru a nu obtine eroare la compilare de Need Overwritte
joi, 24 decembrie 2009
Versiune usor diferira la modelul cu JLayeredPane
//Se foloseste constructorul de la JLayeredPane cu parametrul numar Integer in locul
//valorilor predefinite MODAL,PALLETE,POPUP.... sunt echivalente cu folosirea DEFAULT
//astfel se permite folosirea unui numar de <> componente intr-un Layer
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Layered
{
public static void main()
{
Layered gui=new Layered();
gui.go();
};
JButton buton;
int flag=0;
JLayeredPane layer;
JFrame frame;
JButton b1;
JButton b2;
JButton b3;
JLabel label;
public void go()
{
frame=new JFrame();
JLabel label2=new JLabel("Modal");
layer=new JLayeredPane();
label=new JLabel("Nimic");
b1=new JButton("1");
b2=new JButton("2");
b3=new JButton("3");
b1.setBackground(Color.cyan);
b2.setBackground(Color.magenta);
b3.setBackground(Color.lightGray);
label2.setBackground(Color.blue);
b1.setOpaque(true);
b2.setOpaque(true);
b3.setOpaque(true);
label2.setOpaque(true);
b1.setBounds(0,0,100,100);
b2.setBounds(30,30,100,100);
b3.setBounds(60,60,100,100);
label2.setBounds(80,80,100,100);
layer.add(b1,new Integer(10));
layer.add(b2,new Integer(9));
layer.add(b3,new Integer(8));
layer.add(label2,JLayeredPane.PALETTE_LAYER);
//Daca se foloseste DEFAULT_LAYER va fi suprapus de catre celelate componente
buton=new JButton("1<->2<->3");
frame.add(layer,BorderLayout.CENTER);
frame.add(buton,BorderLayout.SOUTH);
frame.getContentPane().add(label,BorderLayout.NORTH);
frame.setSize(300,300);
frame.setVisible(true);
buton.addActionListener(new List());
}
class List implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
flag++;
if(flag==1)//buton 1 in fata
{
label.setText("1,2,3 falg=1");
layer.setLayer(b1,new Integer(10));
layer.setLayer(b2,new Integer(9));
layer.setLayer(b3,new Integer(8));
}
else
if(flag==2)
{
label.setText("1,3,2 falg=2");
layer.setLayer(b1,new Integer(10));
layer.setLayer(b3,new Integer(9));
layer.setLayer(b2,new Integer(8));
}
else
if(flag==3)
{
label.setText("2,1,3 falg=3");
layer.setLayer(b2,new Integer(10));
layer.setLayer(b1,new Integer(9));
layer.setLayer(b3,new Integer(8));
}
else
if(flag==4)
{
label.setText("2,3,1 falg=4");
layer.setLayer(b2,new Integer(10));
layer.setLayer(b3,new Integer(9));
layer.setLayer(b1,new Integer(8));
}
else
if(flag==5)
{
label.setText("3,1,2 falg=5");
layer.setLayer(b3,new Integer(10));
layer.setLayer(b1,new Integer(9));
layer.setLayer(b2,new Integer(8));
}
else
if(flag==6)
{
label.setText("3,2,1 falg=6");
layer.setLayer(b3,new Integer(10));
//layer.setLayer(b2,new Integer(10));
//layer.setLayer(b1,new Integer(10));
layer.setLayer(b2,new Integer(9));
layer.setLayer(b1,new Integer(8));
flag=0;
JOptionPane.showMessageDialog(frame, "Ati ajuns la final");
}
}
}
}
//valorilor predefinite MODAL,PALLETE,POPUP.... sunt echivalente cu folosirea DEFAULT
//astfel se permite folosirea unui numar de <
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Layered
{
public static void main()
{
Layered gui=new Layered();
gui.go();
};
JButton buton;
int flag=0;
JLayeredPane layer;
JFrame frame;
JButton b1;
JButton b2;
JButton b3;
JLabel label;
public void go()
{
frame=new JFrame();
JLabel label2=new JLabel("Modal");
layer=new JLayeredPane();
label=new JLabel("Nimic");
b1=new JButton("1");
b2=new JButton("2");
b3=new JButton("3");
b1.setBackground(Color.cyan);
b2.setBackground(Color.magenta);
b3.setBackground(Color.lightGray);
label2.setBackground(Color.blue);
b1.setOpaque(true);
b2.setOpaque(true);
b3.setOpaque(true);
label2.setOpaque(true);
b1.setBounds(0,0,100,100);
b2.setBounds(30,30,100,100);
b3.setBounds(60,60,100,100);
label2.setBounds(80,80,100,100);
layer.add(b1,new Integer(10));
layer.add(b2,new Integer(9));
layer.add(b3,new Integer(8));
layer.add(label2,JLayeredPane.PALETTE_LAYER);
//Daca se foloseste DEFAULT_LAYER va fi suprapus de catre celelate componente
buton=new JButton("1<->2<->3");
frame.add(layer,BorderLayout.CENTER);
frame.add(buton,BorderLayout.SOUTH);
frame.getContentPane().add(label,BorderLayout.NORTH);
frame.setSize(300,300);
frame.setVisible(true);
buton.addActionListener(new List());
}
class List implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
flag++;
if(flag==1)//buton 1 in fata
{
label.setText("1,2,3 falg=1");
layer.setLayer(b1,new Integer(10));
layer.setLayer(b2,new Integer(9));
layer.setLayer(b3,new Integer(8));
}
else
if(flag==2)
{
label.setText("1,3,2 falg=2");
layer.setLayer(b1,new Integer(10));
layer.setLayer(b3,new Integer(9));
layer.setLayer(b2,new Integer(8));
}
else
if(flag==3)
{
label.setText("2,1,3 falg=3");
layer.setLayer(b2,new Integer(10));
layer.setLayer(b1,new Integer(9));
layer.setLayer(b3,new Integer(8));
}
else
if(flag==4)
{
label.setText("2,3,1 falg=4");
layer.setLayer(b2,new Integer(10));
layer.setLayer(b3,new Integer(9));
layer.setLayer(b1,new Integer(8));
}
else
if(flag==5)
{
label.setText("3,1,2 falg=5");
layer.setLayer(b3,new Integer(10));
layer.setLayer(b1,new Integer(9));
layer.setLayer(b2,new Integer(8));
}
else
if(flag==6)
{
label.setText("3,2,1 falg=6");
layer.setLayer(b3,new Integer(10));
//layer.setLayer(b2,new Integer(10));
//layer.setLayer(b1,new Integer(10));
layer.setLayer(b2,new Integer(9));
layer.setLayer(b1,new Integer(8));
flag=0;
JOptionPane.showMessageDialog(frame, "Ati ajuns la final");
}
}
}
}
Java - Folosire JLayeredPane si GridLayout
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
public class GridPlusLayer
{
int nr_linii=0,nr_coloane=0;
JFrame frame;
JLabel label,labelAfisare, superLabel;
int x=10,y=10;
public static void main(int x,int y)
{
GridPlusLayer gui=new GridPlusLayer(x,y);
}
GridPlusLayer(int x,int y)
{
if(x>=0&&y>=0)
nr_linii=x;
nr_coloane=y;
frame=new JFrame("Butoane");
frame.setSize(nr_linii*75,nr_coloane*75);
JLayeredPane layer=new JLayeredPane();
JPanel panel=new JPanel();
panel.setLayout(new GridLayout(nr_linii,nr_coloane));
labelAfisare=new JLabel("Nimic");
for(int i=0;i<(nr_linii*nr_coloane);i++)
{
label=new JLabel("");
label.setOpaque(true);
int red=(int )(Math.random()*255);
int green=(int )(Math.random()*255);
int blue=(int )(Math.random()*255);
Color random=new Color(red,green,blue);
Color complementary=new Color (255-red,255-green,255-blue);
labelAfisare.setOpaque(true);
labelAfisare.setBackground(complementary);
label.setBackground(random);
label.setText(""+(i+1));
panel.add(label);
}
superLabel=new JLabel();
superLabel.setOpaque(true);
superLabel.setBounds(x,y,(int)(nr_linii*75*0.5),(int)(nr_coloane*75*0.5));
panel.setBounds(0,0,frame.getWidth(),frame.getHeight());
layer.add(panel,JLayeredPane.DEFAULT_LAYER);
layer.add(superLabel,JLayeredPane.PALETTE_LAYER);
frame.add(layer,BorderLayout.CENTER);
frame.add(labelAfisare,BorderLayout.NORTH);
frame.setVisible(true);
frame.setLocationRelativeTo(null);
layer.addMouseListener(new List());
}
class List implements MouseListener
{
public void mousePressed(MouseEvent e)
{
x=e.getX();
y=e.getY();
superLabel.setBounds(x,y,(int)(nr_linii*75*0.5),(int)(nr_coloane*75*0.5));
labelAfisare.setText("X: "+e.getX()+" Y: "+e.getY());
}
public void mouseReleased(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
}
}
miercuri, 23 decembrie 2009
Exemplu Java - Constructie GridLayout
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GridLayer
{
int nr_linii=0,nr_coloane=0;
public static void main(int x,int y)
{
GridLayer gui=new GridLayer(x,y);
}
JFrame frame;
JLabel label;
GridLayer(int x,int y)
{
if(x>=0&&y>=0)
nr_linii=x;
nr_coloane=y;
frame=new JFrame("Butoane");
JPanel panel=new JPanel();
panel.setLayout(new GridLayout(nr_linii,nr_coloane));
for(int i=0;i<(nr_linii*nr_coloane);i++)
{
label=new JLabel(""+(i+1));
label.setOpaque(true);
int red=(int )(Math.random()*255);
int green=(int )(Math.random()*255);
int blue=(int )(Math.random()*255);
Color random=new Color(red,green,blue);
//Color complementary=new Color (255-red,255-green,255-blue);
label.setBackground(random);
panel.add(label);
}
frame.add(panel,BorderLayout.CENTER);
frame.setVisible(true);
frame.setSize(nr_linii*75,nr_coloane*75);
}
}
Un exemplu simplu de folosire a JLayeredPane --- Java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Layed
{
public static void main()
{
Layed gui=new Layed();
gui.go();
};
JButton buton;
int flag=0;
JLayeredPane layer;
JButton b1;
JButton b2;
JButton b3;
JLabel label;
public void go()
{
JFrame frame=new JFrame();
layer=new JLayeredPane();
label=new JLabel("Nimic");
b1=new JButton("1");
b2=new JButton("2");
b3=new JButton("3");
b1.setBackground(Color.cyan);
b2.setBackground(Color.magenta);
b3.setBackground(Color.lightGray);
b1.setOpaque(true);
b2.setOpaque(true);
b3.setOpaque(true);
b1.setBounds(0,0,100,100);
b2.setBounds(30,30,100,100);
b3.setBounds(60,60,100,100);
layer.add(b1,JLayeredPane.DEFAULT_LAYER);
layer.add(b2,JLayeredPane.PALETTE_LAYER);
layer.add(b3,JLayeredPane.MODAL_LAYER);
buton=new JButton("1<->2<->3");
frame.add(layer,BorderLayout.CENTER);
frame.add(buton,BorderLayout.SOUTH);
frame.getContentPane().add(label,BorderLayout.NORTH);
frame.setSize(300,300);
frame.setVisible(true);
buton.addActionListener(new List());
}
class List implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
flag++;
if(flag==1)//buton 1 in fata
{
label.setText("1,2,3 falg=1");
layer.setLayer(b1,JLayeredPane.DEFAULT_LAYER);
layer.setLayer(b2,JLayeredPane.PALETTE_LAYER);
layer.setLayer(b3,JLayeredPane.MODAL_LAYER);
}
else
if(flag==2)
{
label.setText("1,3,2 falg=2");
layer.setLayer(b1,JLayeredPane.DEFAULT_LAYER);
layer.setLayer(b3,JLayeredPane.PALETTE_LAYER);
layer.setLayer(b2,JLayeredPane.MODAL_LAYER);
}
else
if(flag==3)
{
label.setText("2,1,3 falg=3");
layer.setLayer(b2,JLayeredPane.DEFAULT_LAYER);
layer.setLayer(b1,JLayeredPane.PALETTE_LAYER);
layer.setLayer(b3,JLayeredPane.MODAL_LAYER);
}
else
if(flag==4)
{
label.setText("2,3,1 falg=4");
layer.setLayer(b2,JLayeredPane.DEFAULT_LAYER);
layer.setLayer(b3,JLayeredPane.PALETTE_LAYER);
layer.setLayer(b1,JLayeredPane.MODAL_LAYER);
}
else
if(flag==5)
{
label.setText("3,1,2 falg=5");
layer.setLayer(b3,JLayeredPane.DEFAULT_LAYER);
layer.setLayer(b1,JLayeredPane.PALETTE_LAYER);
layer.setLayer(b2,JLayeredPane.MODAL_LAYER);
}
else
if(flag==6)
{
label.setText("3,2,1 falg=6");
layer.setLayer(b3,JLayeredPane.DEFAULT_LAYER);
//layer.setLayer(b2,JLayeredPane.DEFAULT_LAYER);
//layer.setLayer(b1,JLayeredPane.DEFAULT_LAYER);
layer.setLayer(b2,JLayeredPane.PALETTE_LAYER);
layer.setLayer(b1,JLayeredPane.MODAL_LAYER);
flag=0;
}
}
}
}
Abonați-vă la:
Postări (Atom)