Hirdetés
- Yettel topik
- Szívós, szép és kitartó az új OnePlus óra
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Xiaomi 17 - még mindig tart
- Poco F5 - pokolian jó ajánlat
- Beszáll a Vivo a Pro Max csatába
- Garmin topik
- Vivo V70 – a stílus érték?
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Bemutatkozott az Oppo kamerás csúcsmodellje
Új hozzászólás Aktív témák
-
Jester01
veterán
válasz
CPT.Pirk
#319
üzenetére
Azért, mert MOV A, #SZOVEG van a ciklusban mindig. Egyébként a MOV 3, #KERES is rossz, mert az a címet tölti be, nem pedig az első karaktert. Valami ilyesmi kellene az elejére:
MOV R0, #SZOVEG ; R0-ba pointert töltünk
MOV R3, KERES ; itt nincs # jel, memória olvasás
loop1:
MOV A, @R0 ; itt olvassuk a szöveg következő betűjét -
Jester01
veterán
válasz
CPT.Pirk
#315
üzenetére
Nem azt fordítottam le, kézzel csináltam a kódot. Ha konkrét kérdésed van, arra szívesen válaszolok. Lássuk azt a kettőt ami a hszben van:
memóriaterületre mutató pointert hogyan kellene megcsinálni
Indirekcióra az R0 és R1 használható egyszerűen.
MOV R0, #pointer
MOV A, @R0meg léptetni arrébb
Ez meg pofon egyszerű: INC R0
Gondolom utasításlistád az van.C library meg gondolom az sdcc-hez jár.
-
Jester01
veterán
válasz
CPT.Pirk
#312
üzenetére
Ez eleve hiányos kód, mivel a first_char_found sehol nincs benne és dl sincs inicializálva. Különben semmi extrát nem csinál, csak megkeresi az első betű egyezést és utána ellenőrzi a többit. Teljesen fölösleges lenne az assembly változatot átküzdeni 8051-re, sokkal egyszerűbb az alap algoritmust implementálni. Vagy fogni egy 8051 c libraryt és kimásolni

-
zka67
őstag
válasz
CPT.Pirk
#305
üzenetére
Az átlagolásod lényegesen egyszerűbben és gyorsabban is megoldható. Ez a szép az assembly nyelvben, hogy többféleképpen is meg lehet írni ugyanazt a programot, csak meg kell tornáztatni az agyat egy kicsit.
dseg
org $0030
adat_buff: ds 16
atlag: ds 2
cseg
;------------------------------------------------------------------------------
; atlagolas - adat_buff atlagolasa.
;
; input: adat_buff, 16 db 8 bites adattal
; output: atlag, a 16 db 8 bites szam atlaga
;
; felhasznalt regiszterek:
; B - temp osszeg felso byte
; A - temp osszeg also byte
; R0- buffer pointer
;------------------------------------------------------------------------------
atlagolas: clr a ;temp[16] = 0
mov b,a
mov R0,#adat_buff ;buffer elejere all
_1: add a,@R0 ;temp[lo] += adat
jnc _2 ;tulcsordult?
inc b ;ha igen, temp[hi] += 1
_2: inc R0 ;kovetkezo adatra all
cjne R0,#adat_buff+16,_1 ;mindet osszeadta?
;BA shiftelese jobbra 4 bittel (osztas 16-al)
;mivel 16 db 8 bites szamot ad ossze, ezert B felso 4 bitje
;biztosan nulla es A also 4 bitjere pedig nincs szukseg
swap a ;temp[lo] felso negy bit
anl a,#0Fh ;lesz az eredmeny also 4 bitje
mov atlag,a
mov a,b ;temp[hi] also negy bit
swap a ;lesz az eredmeny felso 4 bitje
orl atlag,a
retA 16-al való osztást elmagyarázom, ha nem értenéd. Itt arról van szó, hogy 16*255 nem lehet nagyobb mint 0FF0h. Tehát a felső bájt felső négy bitje mindig nulla lesz, ezt ki is használom a programban az ORL utasításban, nem kell ugyanis kimaszkolni. Az alsó bájt alsó négy bitjére nincs szükség, azt törlöm az ANL utasítással. A SWAP utasítás megcseréli az alsó és a felső négy bitet. Mivel az összeg alsó és felső bájtjából is csak 4-4 bitre van szükség, így ez kiváló megoldás a shiftelés helyett.
A második feladatodat nem értem. Ha leírod pontosan a feladatot, akkor szívesen segítek.
Új hozzászólás Aktív témák
Hirdetés
- Anglia - élmények, tapasztalatok
- 3D nyomtatás
- Yettel topik
- Elektromos autók - motorok
- Jövedelem
- Távol-keleti webshopok OFF topikja (játékok, kuponok, stb.)
- Házimozi belépő szinten
- Luck Dragon: Asszociációs játék. :)
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- Gyúrósok ide!
- További aktív témák...
- Komplett PC Szett i5 / R9 380 / 1TB Samsung SSD / Monitor + Perifériák
- ÚJ HP EliteBook 8 G1i Intel Core Ultra 5 14" FHD+ 2029.01.08-ig Garanciás
- Lenovo ThinkPad T14 Gen 3 (T14 G3) i7 / 16GB RAM / 512GB SSD / WUXGA / Win11 Pro 12 hó garancia
- Samsung S32F351FUU 32" LED Monitor
- Samsung SyncMaster S23A350H 24" LED Monitor
- Dell Latitude 5410 - 14", Core i5 10210U, 8-16GB RAM, SSD, jó akku, számla, 6 hó gar
- HIBÁTLAN iPhone 12 Pro Max 256GB Silver -1 ÉV GARANCIA - Kártyafüggetlen, MS4306, 100 AKKSI
- Okosóra felvásárlás!! Apple Watch Series 6/Apple Watch Series 7/Apple Watch Series 8
- AKCIÓ! Apple MacBook Air 13 M1 8GB RAM 256GB SSD notebook garanciával hibátlan működéssel
- ÁRGARANCIA!Épített KomPhone i9 14900KF 64GB RAM RTX 5080 16GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest



