forumda pek gözüken bi kişi değilim çünkü kendi internetim yok:(
neyse bi derdim var programlamayla ilgili tabiki bide size sorayım dedim
biliyorum karışık bir konu umarım sizi uzun yazarak sıkmam.
usta programcılardan yardım bekliyorum lütfen.
şimdi ben bir 6802 işlemci simulasyonu yapmam lazım ödev için

biz üç kişiyiz aslında da diğer ikisi anlamıyo

verilmimştir merak ediyorum
neyse soruma geçeyim
bu işlemci nin assembly kodları var ldaa,aba,bne vb..gibi
bunların hepsini prosedürler olarak yazmalıyım.ayrıca programın çalıştırılma algoritması var.
şindi taslak olarak şöyle bir kod yazdım.
Kod: Tümünü seç
var
Form1: TForm1;
acca,accb:integer;
x,y,w:integer;
h,i,n,z,v,c:bool;
he:bool;
runarray_a:array[0..5] of string;
runarray_b:array[0..5] of string;
implementation
{$R *.dfm}
procedure ldaa(param:integer);//acca yani akümülatör a burası bir bellek bölümdür lda komutu buraya istediğimiz sayıyı yükler
begin
acca:=param;
end;
procedure ldab(param:integer);
begin
accb:=param;
end;
procedure aba();
begin
acca:=acca+accb;
end;
procedure deca();
begin
dec(acca);
if acca=0 then z:=true;
end;
procedure decb();
begin
dec(accb);
if accb=0 then z:=true;
end;
procedure bne(param:integer);//bne yapılan işlem sonucu 0 ise istediğim satıra gitmesi gerekiyor goto gibi yani
begin
if z=false then x:=param;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
for x:=0 to 2 do
begin
if runarray_a[x]='ldaa' then ldaa(StrToInt('$'+runarray_b[x]));
if runarray_a[x]='deca' then deca;
if runarray_a[x]='bne' then bne(1); //ben burada dedimki deca (a yı 1 eksiltir ) işleminin sonucu 0 olana kadar
//deca ya geri dön
showmessage(inttostr(acca)+runarray_a[x]);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
runarray_a[0]:='ldaa';
runarray_b[0]:='0a';
runarray_a[1]:='deca';
runarray_b[1]:='';
runarray_a[2]:='bne';
runarray_b[2]:='';
end;
programın çalışma mekanizması button1 in click i nde sorunum var
acca=0 olana kadar bne 1in kod satırına göndermesi gerekiyor.
0 olduğunda ise programın bitmesi gerekiyor
bne kodunun mantığını şöyle düşündüm
programın çalışma ana döngüsü x değişkenine bağlı bir for döngüsü
olur.x i istediğim sayıya ayarlarsam programda geri dönmesini istedğim koda tekrar
döner.ver onu çalıştırır.tekrar çaışınca şartlar sağlandığında ise program biter.
fakat böyle olmuyor .mesela acca ya 10 sayısını yüklüyorum
geriye doğru dec komutu ile azaltıcam 0 olana kadar
10 ,9 da takılıyor sürekli 9,9,9, kalıyor showmessaghe yi de kontorl için koymuştum
buradaki mantık hatası ne acaba?
edit:hali hazırda mevcut olmayan mantığı nasıl üretiriz dicektim

yardımcı olursanız Allah razı olsun dicem valla
