Torna indietro   Hardware Upgrade Forum > Software > Programmazione

L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
Abbiamo intervistato Sumit Dhawan, CEO di Proofpoint, per capire come stia cambiando il mondo della sicurezza con l'avvento dell'intelligenza artificiale e con il ritmo sempre più serrato a cui vengono trovate vulnerabilità nel software. Un problema significativo, che richiederà del tempo per essere risolto (o quantomeno arginato)
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
La parola d'ordine al Nextcloud Summit 2026, che si è tenuto a Monaco, è stata "sovranità". Non come è spesso usato questo termine in politica ma, al contrario, come capacità positiva di decidere il proprio destino tecnologico, con modalità collaborative e aperte. L'Europa dice già molto nel mondo open source, che viene visto come mezzo per ottenere la tanto agognata autonomia digitale
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete implementa due bracci estensibili, per spazzola e moccio, che si spingono ben oltre quanto visto sino ad oggi permettendo una pulizia di casa ancor più capillare e precisa
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-11-2010, 16:09   #1
kwb
Senior Member
 
L'Avatar di kwb
 
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
[Assembler 8086] Determinare numero negativo

Ciao..
Devo scrivere un programma che è in grado di determinare quanti valori di un array sono negativi.
Il problema che sorge è che non ho la più pallida idea di come inserire nel vettore i numeri negativi... Certo potrei tranquillamente manipolare i codici ascii e far si che quando trova un '-' allora deve avanzare ancora di uno per prendere l'intero numero, ma non mi pare una soluzione buona...
Volevo cercare di far qualcosa con la rappresentazione in complemento a due, però i numeri devono essere decimali e non so come convertirli in binario...
Suggerimenti?
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
kwb è offline   Rispondi citando il messaggio o parte di esso
Old 14-11-2010, 11:47   #2
Supdario
Member
 
Iscritto dal: Mar 2008
Messaggi: 267
La soluzione più semplice sarebbe un call alla funzione "atol", che ti converte la stringa in numero:

Codice:
push offset stringa
call atol
O in sintassi MASM32:

Codice:
invoke atol, addr stringa
Successivamente avrai sul registro "eax" il numero convertito.

PS: Se usi un assembler a 16bit è ovvio che devi usare la funzione "atoi" e prendere il valore dal registro ax. Inoltre devi includere la relativa libreria di Windows.

Ultima modifica di Supdario : 14-11-2010 alle 11:54.
Supdario è offline   Rispondi citando il messaggio o parte di esso
Old 14-11-2010, 13:44   #3
kwb
Senior Member
 
L'Avatar di kwb
 
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
Quote:
Originariamente inviato da Supdario Guarda i messaggi
La soluzione più semplice sarebbe un call alla funzione "atol", che ti converte la stringa in numero:

Codice:
push offset stringa
call atol
O in sintassi MASM32:

Codice:
invoke atol, addr stringa
Successivamente avrai sul registro "eax" il numero convertito.

PS: Se usi un assembler a 16bit è ovvio che devi usare la funzione "atoi" e prendere il valore dal registro ax. Inoltre devi includere la relativa libreria di Windows.
Ma atoi non è una funzione di C??
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
kwb è offline   Rispondi citando il messaggio o parte di esso
Old 14-11-2010, 15:12   #4
Supdario
Member
 
Iscritto dal: Mar 2008
Messaggi: 267
No, quasi tutte le funzioni native del C sono chiamate al kernel del sistema operativo (che sia Windows, Linux o altro). Anche "malloc" ad esempio è una chiamata al sistema operativo, che si occupa di trovare spazio libero nella memoria ed allocarlo, e restituisce il puntatore. Tutte queste funzioni si trovano in liberie statiche o dinamiche. Nello specifico, queste funzioni sono contenute in msvcrt.lib o msvcrt.dll (che contiene printf, system, malloc, scanf, ed altro).
Supdario è offline   Rispondi citando il messaggio o parte di esso
Old 14-11-2010, 16:31   #5
kwb
Senior Member
 
L'Avatar di kwb
 
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
Quote:
Originariamente inviato da Supdario Guarda i messaggi
No, quasi tutte le funzioni native del C sono chiamate al kernel del sistema operativo (che sia Windows, Linux o altro). Anche "malloc" ad esempio è una chiamata al sistema operativo, che si occupa di trovare spazio libero nella memoria ed allocarlo, e restituisce il puntatore. Tutte queste funzioni si trovano in liberie statiche o dinamiche. Nello specifico, queste funzioni sono contenute in msvcrt.lib o msvcrt.dll (che contiene printf, system, malloc, scanf, ed altro).
Ah ho capito, beh buono a sapersi! Potrà tornarmi utile in futuro...
Comunque ho risolto nel seguente modo:
Codice:
;You are asked to develop an 8086 assembly program that counts the number of both positive and negative
;elements of an integer vector.

.MODEL small
.STACK
MAX         EQU 10                              ;Number of elements in the array
CR          EQU 13                              ;Carriage Return, decimal
LF          EQU 10                              ;Line Feed, decimal

.DATA
posElem DB  48                                  ;Number of positive elements, starts from 48 because it's 0 in ascii table
                                                ;Decimal notation
negElem DB  48                                  ;As above, but for negative elements
array   DB  -1,2,5,4,2,6,9,-5,-4,-9             ;Our array
msgPos  DB  "Number of positive elements: $"    ;Print message for positive
msgNeg  DB  "Number of negative elements: $"    ;Print message for negative

.code
.startup                                        
XOR DX,DX                                       ;Reset some registers
XOR AX,AX
XOR DI,DI
MOV CX,MAX                                      ;And put max number of elements in CX

findNeg:    MOV AL,array[DI]
            AND AL,80H                          ;Check if the number is positive, if it is, then we get 00000000 in our register
            CMP AL,0                            ;Otherwise we get 10000000
            JE  findPos                         ;If AL == 0 then goto findPos
            INC negElem                         ;Otherwise we have a negative element, so we increase the counter
            INC DI                              ;Index increased
            LOOP    findNeg                     ;Loop until CX == 0
            JMP print                           ;Then print results
findPos:    INC posElem                         ;If we are here we found a positive element, we increase counter
            INC DI                              ;And index
            LOOP    findNeg                     ;Loop until CX == 0
            
print:      MOV AH,9                            ;Prepare for printing a string
            LEA DX,msgPos                       ;Load effective address of msgPos string, this is the same as MOV DX, OFFSET msgPos
            INT 21H                             ;Print
            
            MOV AH,2                            ;Prepare for printing a single char
            MOV DL,posElem                      ;Put posElem in DL for printing
            INT 21H                             ;Print
            
            MOV DL,CR                           ;Print a CR
            INT 21H
                                                ;and
            MOV DL,LF                           ;a LF
            INT 21H
            
            MOV AH,9                            ;Print the string for negative numbers
            LEA DX,msgNeg
            INT 21H
            
            MOV AH,2                            ;Print the number of negative elements
            MOV DL,negElem
            INT 21H

.EXIT
END
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
kwb è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint L'IA cambia tutte le regole della sicurezza tra ...
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026 L'Europa conta nella tecnologia e può ess...
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
Invia il tuo nome a 1,5 milioni di chilo...
Apple MacBook Neo 13'' con chip A18 Pro ...
Insieme a Leica SL3-P presentate le otti...
La Cina svilupperà anche il razzo...
Rocket Lab e la missione Victus Haze per...
Starship: Ship 40 ha eseguito uno static...
I nuovi Samsung Galaxy Watch 9 si mostra...
Einsten aveva ragione, di nuovo: captate...
Top 10 offerte Amazon: 5 sono partite qu...
AI Conf 2026: l'intelligenza artificiale...
Samsung Galaxy S26 scende a 711,49€: un ...
Dopo il maxi blackout, la Spagna cambia ...
Costa meno di un MacBook e fa molto di p...
Ecco tutti i robot aspirapolvere rimasti...
Più partite da seguire in contemporanea?...
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: 22:45.


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