Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni
Sono ormai definitive le nuove norme del Codice della Strada per i monopattini elettrici. Non solo targa e assicurazione, le regole sono tante e riguardano diversi aspetti, vi spieghiamo come evitare sanzioni che possono essere salate
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta
DLSS 4.5 introduce Dynamic Multi Frame Generation e MFG 6X, permettendo fino a cinque frame generati per ogni frame renderizzato. I test su Cyberpunk 2077 e 007 First Light mostrano forti incrementi di FPS e riduzione della latenza su RTX 5090 Laptop. Migliorano fluidità, stabilità e qualità visiva.
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Quattro modi di indossarlo, stessa app del Plaud Note Pro e integrazione con il desktop. Il registratore IA da indossare di Plaud eccelle in mobilità, ma resta vincolato all'abbonamento ed è facile da perdere
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-06-2009, 23: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


Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni Come rispettare tutte le nuove regole per i mono...
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta DLSS 4.5: con Dynamic Frame Generation e MFG 6X ...
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere) Plaud NotePin S, il registratore IA si fa indoss...
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro Redmi Watch 6 in prova: lo smartwatch con ampio ...
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ...
Fable 5, il modello Mythos per tutti: gr...
Costruire sulla Luna: i test per le futu...
La NASA ha annunciato gli astronauti del...
Mondiale 2026, Lenovo unico partner tecn...
007 First Light ha venduto più di...
Harley-Davidson, svelato il prezzo itali...
PC Windows 11 in crash: ma la colpa è di...
Dopo i 'NO 5G' arrivano i 'NO FIBRA'? Ar...
Promettono un parco e costruiscono un da...
L'aeroplano supersonico ''silenzioso'' N...
Euro-Office sbugiardata da LibreOffice: ...
I 10 sconti TOP Amazon: 4 novità ...
Galaxy Z Flip 8, in Europa avrà i...
SpaceX annuncia i satelliti AI1 destinat...
Ariston DEOS 10 EVO a 103€: deumidificat...
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: 19:57.


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