|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
|
[asm]Domanda
Vediamo se ho capito..........in asm Setto i registri e poi richiamo l'int giusta......o sbaglio??
cioe per esempio Codice:
; ---=[ Carica la Root ]=--- ; mov ah, 0x02 ; Servizio 2 dell'interrupt 13h mov al, 0x0E ; Settori da caricare mov bx, 0x500 ; Dove caricare la ROOT mov ch, 0 ; Traccia 0 mov cl, 2 ; Settore 2 mov dh, 1 ; Testina 1 mov dl, [bootdrv]; Drive int 0x13 Cioe i registri fanno da argomenti(parlando in C) della funzione(int 0x13)............sbaglio?
__________________
Gnu/Linux User
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Certo...è proprio così... Solitamente in ah si va a mettere il tipo di servizio desiderato (il tipo di servizio ottenuto da una chiamata ad interrupt è solitamente discriminato dal contenuto di ah)...
Anche se il modo di passare gli argomenti ad una funzione di un linguaggio di alto livello avviene in modo diverso...tramite lo stack... Ultima modifica di cionci : 26-06-2004 alle 14:13. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
|
quindi qualcosa da asm l'ho capita!!
Per i salti condizionati(if, else del C) come faccio?? Tnk
__________________
Gnu/Linux User
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Aug 2001
Città: Milano
Messaggi: 402
|
Quote:
Codice:
;if (Var == Var/Valore) ; Var++; ;else ; Var--;
__________________
Phenom 2 555 X2@X4@3,6Ghz 1.33v Asus M4A785TD-V EVO 4GB Team Group Elite 1333Mhz AC Freezer Xtreme Corsair 450VX Samsung SyncMaster T220 Hd Seagate 500x2(Raid 0) Barton 2500+@3200+ vcore 1.550 (liquid cooled@+9° T.A.) Asus A7N8X-E Dlx 1Gb Ram Dual DDR Hd Maxtor SATA 160x2(Raid 0) GeXCube 9600XT Eizo 19P Le belle cose hanno un inizio e una fine...tutto il resto è la normalità |
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
|
Quote:
__________________
Gnu/Linux User
|
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
Per fare un If/Else devi usare una combinazioni di istruzioni Compare (CMP) e di Jump Condizionate (JXX)
Se ti interessa imparare l'ASM ti consiglio di leggerti (come sto facendo io) il libro "Assembly Language Step by Step with DOS and Linux" di Jeff Duntemann , che ti spiega a fondo il funzionamento dei calcolatori per introdurti al mondo dell' Assembly , e poi ti insegna il funzionamento dell' Assembly x86 e la programmazione nei 3 sistemi di memoria dell' X86 (Real Mode Flat/Segmented Model sotto DOS e Protected Mode Flat Model sotto Linux) . Un libro che ha veramente tanto da insegnare e che consiglio CIao
__________________
GPU Compiler Engineer |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:03.



















