Sınav soruları hakkında çözüm

Başlatan 4w3e, 12 Mayıs 2015, 17:23:48

z

#15
1. soruyu yaparsan dedim.

1 sorunun 2. şıkkını da sen yazarsan.....

Doğru ya, hex sayıları tamam topladık da sen bunları toplamayı çıkarmayı da bilmiyorsan yandık. Ve vay haline....
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

X-Fi

Sınav kağıdını görünce yüksek okul yıllarım aklıma geldi :) Böyle bir sınavda bize sıfırdan yüze kadar olan asal sayıları hesaplayacak program yazdırmışlardı. işlemci 8051 idi ve asm kodlar ile deli gibi uğraşmıştık :P
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

mufitsozen

Ogretmenler ve ogrenciler icin bedava bir 8051 simulatoru var http://www.edsim51.com/

Odevinizi ona girip kosturarakta neler oldugunu kontrol edebilirsiniz.
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

veliusta


4w3e

1. Sorunun b şıkkıda bu DA komutu ondalık sisteme çevirmek için ama orda sonuç 153 çıkıyordu elde bitini makine görmez diye 53 aldım hocada öyle yapıyordu ... Cevap olarak bu kadar yaptım takdir sizin  2 ve 3 doruları sizden bekliyorum bakalım hocam Z


RaMu

Tarihini bilmeyen milletler yok olmaya mahkumdur.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

X-Fi

Alıntı yapılan: veliusta - 14 Mayıs 2015, 21:59:26
8051 tarih olmadı mı?

8051 güclü ve sağlam bir 8 bit işlemcidir hiçbir zaman ölmez çünkü bir endüstri standardi haline gelmişti. Hala aynı core üzerine ürünler inşa ediliyor gündelik hayatta farkında olmadan bolca kullanıyoruz.

Bakınız: CC2540
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

z

#22
DA komutunu hocanız nasıl öğretti anlamadım.

Mesela Accumulatorde 25H sayısı var.
Buna 05H ekleyeceğiz.

25
05
--
2A

Bu toplama işleminden sonra DA komutunu çalıştırırsak 30 sonucunu elde ederiz.

Nasıl?

8051 de  low nibble toplamlarında 9 u aşan sonuç elde edildiyse

DA komutu düşük 4 bite 6 ekler.
Üst 4 bitten cary oluşursa bu kez 60H ekler.


25H + 5H sonucuna bakalım

5+5=0AH

0AH>9

0AH+06H=10 

20+10=30

Yani Hex 25 + Hex 5 = Hex 30 sonucunu buluyor. (registerlere hex değer yerleşiyor ama DA komutundan sonra bu değeri BCD olarak düşüyoruz)

Halbuki DA komutu kullanmasaydık 25+5=2AH oluyordu.

Tamam diğer soruları arkadaşlar çözmezse gece çözerim. Sabaha okursun.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

l0rd

Alıntı yapılan: X-Fi - 14 Mayıs 2015, 22:41:08
8051 güclü ve sağlam bir 8 bit işlemcidir hiçbir zaman ölmez çünkü bir endüstri standardi haline gelmişti. Hala aynı core üzerine ürünler inşa ediliyor gündelik hayatta farkında olmadan bolca kullanıyoruz.

Bakınız: CC2540

Hocam 8086 yada 8051 gibi işlemciler haylen satılıyor mu evde assembly temeli atmak için :)
what you do that defines you

X-Fi

Alıntı yapılan: l0rd - 14 Mayıs 2015, 22:51:28
Hocam 8086 yada 8051 gibi işlemciler haylen satılıyor mu evde assembly temeli atmak için :)

Var hocam var kulaktan dolma yazılımcılar ardunio ya saldırdığı için biraz arka raflarda kalmıştır kendileri :)
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

l0rd

Alıntı yapılan: X-Fi - 14 Mayıs 2015, 22:56:38
Var hocam var kulaktan dolma yazılımcılar ardunio ya saldırdığı için biraz arka raflarda kalmıştır kendileri :)

Bende assembly öğrenmek istiyorum aslında temelini 8086 ile atsam sonra arm tabanlı işlemcilerde asm öğrenmek daha kolay olur diye düşünüyorum.Peki satan bir yer biliyormusunuz ( İstanbul civarında ) kartım olmadığı için internetten alamamda :)
what you do that defines you

muhittin_kaplan


4w3e


z

#28
Yahu aklımdan çıkmış tüm gece uyanıktım halbuki. Hemen ilgileniyorum.


mesaj birleştirme:: 15 Mayıs 2015, 08:34:07

ORG 2000H
MOV A,#01110101B
ADD A,#12H
ADD A,#6CH
DA   A
MOV P3,A


1. komutta ACC= 01110101B yani 0111 0101 yani 75H
2.komutta  ACC'a 12H ekleyeceğiz

75
12
--
87

3. satırda buna 6CH ekleyeceğiz.

87
6C
----

C 7 daha (parmak hesabı) D E F 10 11 12 13
elde var 1
8 6 daha 9 A B C D E eldeyi de eklersek F
Yani F3

4 satırda DA A komutu işte mıçtık.

Bir önceki toplamada  87 + 6C yapmıştık.

7 v C toplamı 9 u aşmıştı.
8 ve 6 toplamı da 9 u aşmıştı.

O halde 66 ve yüksek 4 lüye cary ekleyeceğiz. Yani 76 ekleyeceğiz.

Sonuç F3 idi   F3+76=

6 3 daha 9
F 7 daha 16

Demekki sonuç 69

Son olarak P3 portundan 69 çıkacağız.

Yani 6 9 yani 0110 1001 yani 01101001

Ama DA komutunda hatayapmış olabilirim. Simulatörle test et.

-------------------------     SORU 2  -------------------------------

PORT 1 'in yüksek 4 bitinden iki sayı giriyormuşuz.

Yani P1.7 ve P1.6   X değeri
P1.5 ve P1.4 de Y değeri

X*Y sonucu bulup sonucu P3 den çıkacakmışız.

X ve Y yi sağa dayalı hale getirmeyle uğraşmayalım. 8051 8 bit sayıları çarpabilir.

MOV A,P1
PUSH ACC
RL A
RL A                    ; Y değeri sola dayalı yazıldı
MOV  RegB, A       ; Daha once RegB EQU F0H gibi bir tanım yapılmadıysa MOV F0H, A da yazabilirsin.  B=B*64
POP   ACC
AND  A,#C0H       ; A=X*64
MUL AB               ; [Reg B A] = 64*64*A*B=4096*A*B  Yani A ve B çarpımı 12 bit sola kaymış. O halde aradığımız sonuç B içinde 12-8=4 Reg B yi 4 kere sağa kaydıralım
MOV A,RegB        ; MOV A,F0 da yazabiliriz
RR A
RR A
RR A
RR A
MOV P3,A

Bu sorudan da emin değilim.

Simulatörü bilgisayarına yükle ve programı adım adım işlet.


mesaj birleştirme:: 15 Mayıs 2015, 09:41:01

--------------- 3 e sonra kafa yorarız ----------------


---------------4. soru --------------------

P1.0 da bir anahtar var.

Mod 12 sayıcı yapacağız.

Anahtar 0 veriyorsa sayıcı değeri P2 den çıkacak
Anahtar 1 veriyorsa sayıcı değeri P3 den çıkacak


Sayacımız R0 olsun.

            MOV R0,#0h       ; Sayacı başlangıçta sıfırladık
Say:     MOV A,R0           ; Sayaç değerini ACC içine çektik
            ADD A,#1           ; ACC'ı 1 artırdık
            CMP A,#12         ; 12 oldumu diye baktık
            JNZ  Sıfırlama     ; 12 değilse alttaki satırı atlayıp Sıfırlama etiketine zıpladık
            CLR  A               ;  Sayaç değeri (ACC) 12 oldu tekrar sıfırladık
Sıfırlama:
            MOV  R0,A          ; ACC ü sayaca geri yükledik
            JB     P1.0,P3denCik   ; P1 portunun 0. biti 1 ise P3denCik etiketine zıpla
            MOV P2,A
            JMP Say
P3denCik
            MOV P3,A
            JMP Say

Bu soruda P1.0 gösterimi için ders notlarına bak. Port1 ın 0. bitini nasıl gösteriyorsunuz bilmiyorum.

Programların tepesine ORG 2000H gibi bir satır eklersin.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

4w3e