Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [C++/ASSEMBLY] Creare efficiente funzione di stampa

    Salve a tutti;
    Ho in programma la realizzazione di una funzione (tipo printf) assembly (8086) da utilizzare poi in c/c++.
    La funzione:
    void print (char* stinga, ...);
    sarà appunto simile alla printf:
    $b -> stampa byte
    $w -> stampa word
    ...
    a tal proposito mi chiedevo come stampare una stinga di questo tipo (avendo DI all'inizio e puntato su 'b' alla fine):

    "Hello Word $b"

    posso fare in 2 modi:

    CICLO:
    CMP BYTE PTR [DI],'$'
    JE FINE
    MOV DL,[DI]
    MOV AH,2
    INT 21H
    INC DI
    JMP CICLO
    INC DI
    FINE:

    oppure:

    MOV DX,DI
    MOV AH,9
    INT 21H
    CICLO:
    CMP BYTE PTR [DI],'$'
    JE FINE
    INC DI
    JMP CICLO
    INC DI
    FINE:

    secondo voi quale è il miglio modo
    Experience is what you get when you don’t get what you want

  2. #2
    mi correggo:
    da utilizzare in c++
    Experience is what you get when you don’t get what you want

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Da utilizzare in c/c++ ... a 16 bit? Quel codice assembler che hai mostrato non va bene per Win32 ...

  4. #4
    Si si scusa avevo sottointeso
    e comunque avevo scritto solo c++ perchè la procedura o è scritta in c ed è di tipo near o è scritta in c++ ed è di tipo far
    Experience is what you get when you don’t get what you want

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Il fatto di essere 'near' o 'far' non c'entra con il C o il C++.

    E per Win32 non e' ne' near ne' far ...

    Con quale compilatore C/C++ vuoi utilizzare questo codice?

  6. #6
    E per Win32 non e' ne' near ne' far ...
    Non sto parlando di win 32

    inoltre il c richiede procedure di tipo near, il c++ di tipo far (specificando con extern i prototipi delle funzioni interessate)

    compilerò in tcc (vecchio borland a 16 bit appunto) e la procedurà la inserirò in un file esterno di libreria *.asm
    Experience is what you get when you don’t get what you want

  7. #7
    Molto probabilmente è il secondo pezzo di codice quello migliore
    Experience is what you get when you don’t get what you want

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.