- iPhone topik
- QWERTY billentyűzet és másodlagos kijelző is lesz a Titan 2-ben
- Apple Watch
- Netfone
- iPhone 16e - ellenvetésem lenne
- Megindult világhódító útjára az új Samsung fülhallgató
- Hat év támogatást csomagolt fém házba a OnePlus Nord 4
- Magisk
- Garmin Forerunner 970 - fogd a pénzt, és fuss!
- Xiaomi 14T Pro - teljes a család?
Aktív témák
-
Jester01
veterán
válasz
discpatkany #23 üzenetére
Az egy dolog, hogy rengeteg emberke nem tanul rendesen. Na de hogy még a feladat megírását is csak a leadást megelőző nap kéred (friss regisztrációval a rossz topikban) az már a pofátlanság netovábbja
A hab a tortán, hogy se processzort se operációs rendszert se fordítóprogramot nem jelöltél meg. Kedvem lenne poénból megírni LC3-ban
Hogy valamit segítsek is: szerintem a harmadik a legegyszerűbb.
-
discpatkany
csendes tag
Valaki tudna segíteni meg kellene írnom egy assemly programot holnapra!
Három feladatom van de csak egyet kellene beadnom. aki tudna segiteni azt megköszönném.
A kérdések:
Alkalmazástechnikai feladatok listája:
1. Készíts a grafikus képernyőn kígyó-játékot! Egy kígyót kell a billentyűzetről úgy irányítani, hogy az nem ütközhet a játéktér oldalába, a falakba, vagy a saját törzsébe! Opcionálisan kiegészítheted időméréssel, illetve gyümölcsszedéssel, ami hosszabbítja a kígyó törzsét.
2. Készíts a karakteres képernyőn egy labdát (O betű szimbolizálhatja), ami 45 fokos szögben haladhat a képernyőn (billentyűlenyomásig), a széleiről visszapattanva.
3. Készíts programot, ami egy fájlból beolvasott rövid szöveget képes a karakteres képernyőre 8 tetszőleges irány bármelyikébe kiírni! (1: fel, 2. jobbra fel, 3. jobbra, 4. jobbra le, stb.)ja és csak karakteres képernyőt használhatok
előre is köszönöm
-
Blackmate
őstag
Hogyan lehet C-be implementalni a #HIGH es a #LOW memoriacimzeseket?
-
JoeYi
őstag
Hi! Tudna nekem valaki turboc- hez küldeni assemblert. Írtam egy játékot és abba akarok assemblyt berakni. Kiírja, hogy tcc -vel futassam. Megteszem, de az meg tasm.exe -t kér. Az meg nincs. help
-
kisfurko
senior tag
1. Beállítod a baud rate-et. Ez 1843200/16/x, ahol x az osztó, amit beállítasz. Tehát bázis+3-ra írsz egyet úgy, hogy a 7. bit 1-es. Ezután az alsó és felső byte-ját az osztónak beírod a bázis+0 és +1-be.
2. Beállítod az adatformátumot a bázis+3-on és egyúttal a 7. bit 0-ra. A 6. bit is 0, mert nem kell BREAK.
Ezután már tudsz kommunikálni a bázis+0-n, oda kell írni, illetve onnan kell olvasni. Csak akkor írhatsz oda, ha az adó adatregisztere üres, tehát ha a bázis+5 5. bitje 1. Olvasni akkor kell, ha a vevő adatregisztere nem üres, tehát bázis+5 0. bitje 1.
Ha kell megszakítás is, akkor szólj!
Tehát:
mov dx,bázis
mov bx,dx
add dx,3
mov al,80h
out dx,al
mov ax,osztó
mov dx,bx
out dx,ax
add dx,3
mov al,00000011b ;nincs paritás, 1 stop, 8 adat
out dx,al
Kiírás:
mov dx,bázis
add dx,5
waittransmit:
in al,dx
test al,20h
jz waittransmit
mov al,amit ki akarsz írni
sub dx,5
out dx,al
Beolvasás:
mov dx,bázis
add dx,5
waitreceive:
in al,dx
test al,1
jz waitreceive
sub dx,5
in al,dx
Ezek persze elég gagyik, megszakítással illik pufferbe/ből dolgozni.
Remélem nem hibáztam -
wfjo
csendes tag
hello.
tudnatok segiteni com port programozasaban? (asm) eleg sokat tanulmanyoztam de igazan vilagos. esetleg valami peldaprg-t ? hogyan lehet kuldeni es fogadni ? -
kisfurko
senior tag
válasz
Blackmate #10 üzenetére
Hmm... Ha ennyire utálod az assembly-t, akkor miért mikrokontrollerekkel foglalkozol? Ha nem érted meg a mikrokontroller lelkivilágát, akkor hogyan akarsz C programot írni hozzá?
Egyébként, ha tényleg tanultál assembly-t, akkor csak elő kell venni a mikrokontroller doksiját, végigfutni az utasításkészletet, meg a regiszterkiosztást. Utána utasításról utasításra szépen lapozgatva a doksit simán megérted, mit csinál, pláne kommentezett kódnál.
Egyébként meg nem létezhet olyan tool, ami assemblyből C-be fordít, mert pl. flag-ek nincsenek kezelve a C-ben, már egy elágazást sem tudsz visszafordítani. Persze az adott processzorhoz lehet írni egy ilyet, de aki annyira ért hozzá, az simán összelinkeli a C kódot az assemlby-vel. Igazából nem is értem, minek C-be fordítani... -
Rover623
félisten
válasz
Blackmate #10 üzenetére
Több gond is van...egy bő évtizede nem kódoltam C-ben, ezt az assembly-t meg pláne nem ismerem...
De mondjuk Pascal-ban be tudom mutatni.
Var
STACK : Array [....] of Byte; {hogy legyen mire hivatkozni, de lehet hogy nem is kell}
IN2BUF: Array [....] of Byte; {mit tudom én mekkora?}
IN2CS : Byte Absolute x:x;
OUT2CS : Byte Absolute x:x;
IN2BC,
OUT2BC,
SP,
DPTR,
R1,
R2,
R7,
A : Byte; {feltételezem 8 bites controller}
Begin
Start: {nem kell, de jól mutat...}
{a stack kezelést nem boncolgatnám, hosszú...}
DPTR := 0;
R7 := $64;
Fill:
A := R7; {szvsz felesleges, mert ez az akkumulátor}
IN2BUF[DPTR] := A; {közvetlenül mehetne bele az R7}
Inc(DPTR);
If (R7 <> 0) Then Goto Fill; {jujj de csúnya...}
R1 := 0;
R2 := 0;
A := $40;
IN2BC := A;
Loop:
A := IN2CS; {ez valami kitüntettett memóriacímen lévő beágyazott IO-nak tűnik}
{na itt már gond van, az ACC valami bitszintű compare utasításnak tűnik...}
If (A and 1) = 0 Then Goto serviceIN2;
A := OUT2CS;
If (A and 1) = 1 Then Goto Loop;
ServiceOUT2:
Inc(R2);
OUT2BC := A; {nem egy elegáns megoldás, A határozatlan?}
Goto Loop;{? csak találgatok sjmp-t illetően...}
ServiceIN2:
és így tovább....
End.
Tehát ismerni kellene a controller memóriakiosztását, a beágyazott IO regiszterek helyét, az assembly utasítások pontos jelentését...
C-ben a DPTR-en keresztüli címzést egészen jól le lehetne modellezni a ''kukacos'' pointerkezeléssel...
[Szerkesztve]
[Szerkesztve] -
Rover623
félisten
Szvsz egyszerű...
Értelmezd a kódot és szépen írd meg C-ben...
Pl. minden regiszter egy változó lesz...
Értékadások, aritmetikai műveletek értelemszerűen...
Portműveletek szintén értelemszerűen...
Ha a ciklust felismered, egyszerűen meg lehet írni...
Másképp nem megy!!!
Gépesíteni ezt piszok nehéz...nem is nagyon láttam még ilyesmit...
Arra viszont számíts, hogy sokkal lassabb lesz mint az eredeti...
Erősen hardware közeli dolgokat meg (interrupt kezelés, DMA) igen nehezen és körültekintően lehet csak átültetni... -
Blackmate
őstag
A következö kis program reszletet kellene C-re valahogy atültetnem. Barmilyen segitseg jol jönne
1 start: mov SP,#STACK-1 ; set stack
2 mov dptr,#IN2BUF ; fill EP2IN buffer with
3 mov r7,#64 ; decrementing counter
4 fill: mov a,r7
5 movx @dptr,a
6 inc dptr
7 djnz r7,rill
8 ;
9 mov r1,#0 ; r1 is IN token counter
10 mov r2,#0 ; r2 is OUT token counter
11 mov dptr,#IN2BC ; Point to EP2 Byte Count register
12 mov a,#40h ; 64-byte transfer
13 movx @dptr,a ; arm the IN2 transfer
14 ;
15 loop: mov dptr,#IN2CS ; poll the EP2-IN Status
16 movx a,@dptr
17 jnb acc.1,serviceIN2 ; not busy--keep looping
18 mov dptr,#OUT2CS
19 movx a,@dptr
20 jb acc.1,loop ; EP2OUT is busy--keep looping
21 ;
22 serviceOUT2:
23 inc r2 ; OUT packet counter
24 mov dptr,#OUT2BC ; load byte count register to re-arm
25 movx @dptr,a ; (any value)
26 sjmp loop
27 ;
28 serviceIN2:
29 inc r1 ; IN packet counter
30 mov dptr,3IN2BUF .|. the first data byte
31 mov a,r1 ; in EP2IN buffer
32 movx @dptr,a
33 inc dptr ; second byte in buffer
34 mov a,r2 ; get number of OUT packets
35 movx @dptr,a
36 mov dptr,#IN2BC ; point to EP2IN Byte Count Register
37 mov a,#40h
38 movx @dptr,a ; load bc=64 to re-arm IN2
39 sjmp loop
40 ;
41 END -
Miracle
senior tag
ha megvannak az ASM eljarasok, akkor azokat C fuggvenyek implementaciojakent kell felhasznalnod, ezek a fuggvenyek lesznek a te figgvenykonyvtarad. de C fordito melle 99.999999% hogy mar letezik adott fuggvenykonyvtar, ennek kell utanajarni. legorrszabb esetben egy mail valami ezzel a mikrontrollerrel dolgozo cegnek/a fordito fejlesztojenek.
-
Miracle
senior tag
keress C forditot es fuggvenykonyvtarat a kontrollerhez.
de a te problemad tavol all a visszaforditastol. a rendszerhivasoknak nincs megfelflo c kodja. csak ha valaki keszitett hozzajuk egy konyvtarat, akkor lesznek konyvtari fuggvenyek.
de ha minden rendelkezesedre all c nyelven, akkor akar te is csinalhatsz fuggvenykonyvtarat -
Blackmate
őstag
Ne keseritsetek el ennyire
Szoval C -> Assembly van! Vannak linkerek, libraryk, tehat assemblybe tudok forditani. Visszafele nem menne?
Csak azert kell ez nekem, mert C-ben kell irnom egy mikrokontrollerhez progit. Viszont a dokumentacioba az összes peldaprogram Assembly-be van. Es valahogy a hatam közepere kivanom most az assemblyt megtanulni. -
Blackmate
őstag
A cimet egy kicsit bövebben kifejtenem.
Van egy valag assembly forraskodom, amit at kellene irni C-re. Letezik-e ilyen ''csoda'' dolog, es ha igen, akkor milyen feltetelek mellett?
Aktív témák
Hirdetés
- Gumi és felni topik
- Anglia - élmények, tapasztalatok
- exHWSW - Értünk mindenhez IS
- 3D nyomtatás
- Azonnali informatikai kérdések órája
- Call of Duty: Warzone
- Építő/felújító topik
- iPhone topik
- Folyószámla, bankszámla, bankváltás, külföldi kártyahasználat
- Autós topik látogatók beszélgetős, offolós topikja
- További aktív témák...
- GAMER PC : RYZEN 5 4500 / 16GB DDR4 / ASUS RX 480 8GB / WiFi / Bluetooth / 512GB M.2 SSD / 500GB HDD
- Dell Latitude 7390, 13,3" FHD IPS , I5-7300U CPU, 16GB DDR4, 512GB SSD, WIN 11, ( olvasd végig )
- Acer PREDATOR HELIOS NEO 16 / i9-14900HX / RTX 4070 (140W) / 1 TB SSD / 240HZ
- Topping A70 Pro fejhallgató erősítő
- Topping D70 Pro Octo DAC
- Azonnali készpénzes GAMER / üzleti notebook felvásárlás személyesen / csomagküldéssel korrekt áron
- AKCIÓ! Apple Macbook Pro 15" 2018 i9 9850HK 32GB 500GB 560X 4GB garanciával hibátlan működéssel
- ÁRGARANCIA! Épített KomPhone Ryzen 5 7600X 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- BESZÁMÍTÁS! ASUS TUF Z390-PRO GAMING alaplap garanciával hibátlan működéssel
- Apple Ipad Pro 2 gen2 10,5" 2K retina A1709 64GB
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest