Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Mate X7 rinnova la sfida nel segmento dei pieghevoli premium puntando su un design ancora più sottile e resistente, unito al ritorno dei processori proprietari della serie Kirin. L'assenza dei servizi Google e del 5G pesa ancora sull'esperienza utente, ma il comparto fotografico e la qualità costruttiva cercano di compensare queste mancanze strutturali con soluzioni ingegneristiche di altissimo livello
Nioh 3: souls-like punitivo e Action RPG
Nioh 3: souls-like punitivo e Action RPG
Nioh 3 aggiorna la formula Team NINJA con aree esplorabili più grandi, due stili di combattimento intercambiabili al volo (Samurai e Ninja) e un sistema di progressione pieno di attività, basi nemiche e sfide legate al Crogiolo. La recensione entra nel dettaglio su combattimento, build, progressione e requisiti PC
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 21-06-2009, 00:08   #1
radoen
Member
 
L'Avatar di radoen
 
Iscritto dal: Mar 2005
Città: Lecce
Messaggi: 195
ASM : caricare un vettore

salve a tutti allora, sto preparando un progetto per l'uni e devo ad un certo punto caricare dei valori presi da un file di testo in un vettore. Allora io ho :
1) scritto la routine per l'apertura, la scanzione Char per char e la conversione dei char in interi senza segno a 16 bit (valori positivi da 0 a 32mila e rotti)
2)tale procedura riorna di volta i volta il valore convertito in una varibile allocata dichiarata in BSS

ora io dovrei riempire il vettore per poterci poi fare 2 operazioni di cui ho già scritto il codice solo che al momeno non riesco a venirne a capo. Qualcuno mi da qualche dritta ? vi pasto il codice che apre il file legge carattere carattere e (al momento) stampa a video i caratteri convertiti al posto di metterli nel vettore "fotogramma".
L'assemblatore usato è as88 di tanenbaum ma a me non serve che scriviate il codice apposta per il mio asm bastano le linee guida generali che non riesco a cogliere.

Grazie a tutti in anticipo
PS è asm 8088

APRE E LEGGE
Codice:
#include "syscalnr.h"	
#include "converter.s" 
bufsiz	= 1		!   blocchi di 1 byte (16 bit)
.SECT .TEXT			


infbufst:!(puntatore a vector)
	mov SI,0
	push bp	
	mov bp,sp
1:	PUSH 0			! lettura
	PUSH filnam		! nomefile
	PUSH _OPEN		! funzione
	SYS			! chiamata sistema
	ADD  SP,8		! pulisco lo stack
		
	CMP  AX,0		! ci sono errori nell'apertura?
	JL   9f			! errore nell'apertura
	MOV  (fildes),AX	! metto in fildes il descrittore del file
	MOV  BX,0
	
1:	CALL vulbuf		!carica il contenuto del file in memoria
	
	CMP  CX,0		!se cx 0 non ho letto 
	JLE  3f			!termino esecuzione per fine file
2:	MOVB AL,' '		!metto lo spazio in al
	REPNE  SCASB		!cerco lo spazio nel buffer attuale
	JNE  impila		!se non spazio lo metto sullo stack
	push dx    		!numero di caratteri impilati sullo stack
	call charInt	  	!conversione ascii to intero
	mov dx,0		!azzero il contacaratteri
	add sp,4		!pulisco lo stack
	sub (buf), 100		!pulisco il buffer
	push (conv)		!metto il numero convertito sullo stack
	push fts		!formattazione stringa
	push _PRINTF		!stampo a video
	sys			!chiama sistema
	add sp,6		!pulisco lo stack
	INC  (count)		!incremento contatore
	MOV  AX,BX		!scansione quanto letto e posizionato in memoria
	SUB  AX,CX		!caratteri rimanenti
	CMP  CX,0		!se zero ho finito il buffer
	JNE  2b			!continuo a cercare nel buffer
	JMP  1b			!ricarico il buffer con nuovi caratteri

9:      mov AX, 1      		!errore nel caricamento
        pop bp	        	!rirpistino il pb
	ret			!esco dalla procedura

	

3:	
	push 0			!codice di uscita
        push _EXIT		!termina programma
	sys			!chiamata di sistema
	
impila :
	push (buf)		!salvo sullo stack il carattere letto
	inc DX			!incremento il contatore di carattei
	jmp 1b			!torno a leggere

vulbuf:				
	PUSH bufsiz		! quanti bite leggo
	PUSH buf		! contiene il carattere letto
	PUSH (fildes)		! dove leggo 
	PUSH _READ		! leggo 
	SYS			! chiamata di sistema
	ADD  SP,8		! pulisco lo stack
	MOV  CX,AX		! in ax numero di byte letti
	ADD  BX,CX		! li aggiungo a quelli letti in prcedenza
	MOV  DI,buf		! prossima posizione da leggere	
	RET			! 93



.SECT .DATA			
filnam : .ASCIZ "Input.txt"      !nomefile
fts:	.ASCIZ "Valore : %d\n" 	 !stringa di formattazione

.SECT .BSS			!
fildes: .SPACE 2		!descrittore del file
buf:	.SPACE 1		!dove memorizzo i caratteri
count:  .SPACE 2		!contatore
conv: .SPACE 4			!contiene i caratteri convertiti in numeri
fotogramma: .SPACE 9600
CONVERTER
Codice:
#include "syscalnr.h"
.SECT .TEXT
!Convertitore char to dec per il progetto di Architetture giugno 09
!developed under debian GNU/LINUX 
charInt: !( val1....valn, dim) ->  conv
	push ax
	push dx	
	push cx	
	push bx	
	push SI	
	push DI
	push bp
	mov bp,sp
	mov SI, 16
	mov cx , (BP)(SI) !indice ciclo
	!dec cx
	mov dx, cx !controllo dei pesi
	add SI ,2
	mov ax ,0
cilo:   push dx	   
	mov bx, (BP)(SI)
	sub bx, 48
	sub dx, cx
	push ax
	cmp dx, 0
	je zero		
	cmp dx, 1
	je uno	
	cmp dx, 2
	je due
	cmp dx, 3
	je tre
	cmp dx, 4
	je quattro
molt:	mul bx
	mov bx,ax
	pop ax
	pop dx	
	add ax, bx
	add si ,2
	loop cilo
	mov (conv),ax	
	pop bp
	pop di
	pop SI
	pop bx
	pop cx
	pop dx
	pop ax
	ret

zero : mov ax , 1
	jmp molt
uno : mov ax , 10
	jmp molt
due: mov ax, 100
	jmp molt
tre: mov ax, 1000
	jmp molt
quattro: mov ax, 10000
	jmp molt
.sect .data
.sect .bs
__________________
Albert Einstein disse " Solo due cose sono infinite: l'universo e la stupidità umana. Ma non sono sicuro della prima " e aveva ragione
Ho Contrattato con gli utenti "carbv" "(zar)sheva" "rasbeetle"
radoen è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
La Cina lancia un servizio simile a Dire...
SpaceX: Elon Musk torna a parlare dei pr...
G.Skill risarcisce 2,4 milioni di dollar...
Test degli annunci su ChatGPT avviati: '...
TSMC approva investimenti record da quas...
L'IA agentica arriva anche sullo storage...
Euro digitale, il Parlamento UE cambia r...
Alphabet e la sua obbligazione centenari...
L'UE anticipa un intervento per bloccare...
Il Trump Phone esiste ma è molto ...
Frodi deepfake fuori controllo: perch&ea...
Consumano il 30% in meno: arrivano i nuo...
Tesla Semi svela i numeri definitivi: 80...
La Air Force statunitense vieta occhiali...
Wi-Fi Intel e Windows: le novità ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:46.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v