ASM Problemi Assembly con Windows7 64Bit

Stato
Discussione chiusa ad ulteriori risposte.

Break-Line

Utente Silver
13 Giugno 2013
35
2
8
50
Salve Inforge,
vi scrivo qui perche' a scuola sono alle prese con il C++ e l'Assembly. Il problema è quest'ultimo, non riesco a capire bene a cosa potrebbe servire dato che cambia in base ai processori. Non riesco nemmeno a trovare un IDE adatto a questo tipo di linguaggio.
A scuola ci stanno insegnando a programmarlo per il processore 8086 con 'emu8086' (con licenza), il problema è che una volta che scrivo un programma posso vederne il debug solo dall' IDE, mentre se lo esporto in .exe, mi esce scritto che è utilizzabile solo sui processori a 32 Bit (possiedo un i3 a 64 Bit). Dunque la mia domanda è:
Esiste un Assembler adatto alle mie esigenze? Se si, qual è?

Ah, un'altra cosa, in che modo posso integrare parte di un codice Assembly in un mio programma scritto in C++? Una volta integrato, avrò problemi come quelli avuti in precedenza solo con Assembly?

Grazie in anticipo. :rulzz:
 
In linea teorica un programma x86 lo puoi usare tranquillamente anche su sistemi a 64 bit, ed è una cosa che senza dubbio fai ogni giorno. Non so nel caso specifico come mai non funzioni, andrebbe verificato.

Per inserire codice assembly in C++ si può usare __asm__ e successivamente insereire le istruzioni normalmente tra parentesi tonde.
Puoi guardare qui per informazioni a riguardo: http://www.codeproject.com/Articles/15971/Using-Inline-Assembly-in-C-C

Per sviluppare codice asm per x64 di solito si usa YASM, mentre per quello a 32 bit si usa MASM.
 
In linea teorica un programma x86 lo puoi usare tranquillamente anche su sistemi a 64 bit, ed è una cosa che senza dubbio fai ogni giorno. Non so nel caso specifico come mai non funzioni, andrebbe verificato.
Mi viene da pensare che... a scuola li facciano programmare per 16 bit... dato che ha detto "processore 8086" e non "80386" :asd: (e tra l'altro usano 'emu8086') programmi 16 bit non girano sotto sistemi a 64 bit
 
  • Mi piace
Reazioni: OKIN
Come dice Speed, il processore 8086 è a 16Bit... Ma se voglio scrivere un programmino in Assembly che possa 'girare' sul mio PC e quindi su windows, troverei molte difficoltà? Mi spiego: ci insegnano a programmare per il processore 8086, di conseguenza i registri saranno diversi (credo ce ne siano di piu'), ma la sintassi del codice puo' rimanere uguale?
 
Diciamo che è simile. Se vuoi informarti, devi imparare a programmare in Assembly per processori 80386. Tutti i processori moderni a 32 bit (e supportati anche da quelli a 64 bit) utilizzano, almeno di base, lo stesso set di istruzioni, e hanno piena retrocompatibilità con l'80386.

Quello che mi sorprende... è come le scuole continuino a insegnare cose che alla fine saranno più inutili che utili...

Qui puoi trovare molto: http://xoomer.virgilio.it/ramsoft/
Altrimenti c'è anche Google
 
  • Mi piace
Reazioni: Break-Line
Ultima modifica:
Diciamo che è simile. Se vuoi informarti, devi imparare a programmare in Assembly per processori 80386. Tutti i processori moderni a 32 bit (e supportati anche da quelli a 64 bit) utilizzano, almeno di base, lo stesso set di istruzioni, e hanno piena retrocompatibilità con l'80386.

Quello che mi sorprende... è come le scuole continuino a insegnare cose che alla fine saranno più inutili che utili...

Qui puoi trovare molto: http://xoomer.virgilio.it/ramsoft/
Altrimenti c'è anche Google

Grazie mille Speed! Vedrò di informarmi per bene...
Si anch'io mi chiedo perché insegnino l'Assembly per l'8086 se poi non puoi trarne benefici..
 
tutti i processori X86 hanno piena retrocompatibilità con l'8086 infatti tutti i processori x86 fanno il boot in real mode (istruzioni e registri a 16 bits) il bios stesso gira a 16 bits sarà il sistema operativo (o bootloader) ad impostare la protected mode (32 bits mode) e/o long mode (64 bits mode)
Per quanto riguarda l'IDE non ne conosco di buoni ma per editor ti consiglio Notepad++ (windows) e GEdit ( linux) e come assembler mi sono sempre trovato bene con nasm che produce codice (anche) a 16 bits basta scrivere all'inizio del file [BITS 16]
Mi spiego: ci insegnano a programmare per il processore 8086, di conseguenza i registri saranno diversi (credo ce ne siano di piu'), ma la sintassi del codice puo' rimanere uguale?
l'8086 essendo il primo x86 ha 4 registri di uso generale a 16 bits divisi ognuno in 2 da 8 bits, 2 per l'Index + 3 per il pointer e 4 per i segmenti.
Registri di uso comune:
AX che è 16 bits e contiene (diciamo) AL e AH

i registri sono AX, BX, CX, DX e tutti contengono le due versioni a 8 bits H e L quindi ci sarà: bh, bl etc... per capire meglio questo concetto guarda qui http://upload.wikimedia.org/wikipedia/commons/2/23/8086_registers.png
 
Stato
Discussione chiusa ad ulteriori risposte.