J'ai écrit un chargeur de démarrage dans MSNA qui charge une donnée de programme 64kb du disque dans la mémoire commence par l'adresse 0060: 0000 [SEG: OFF]. J'ai testé cette partie de mon projet en écrivant du code dans Assembly (NASM) et en le mettant dans le disque. Fonctionne bien!Comment puis-je générer RAW BIN avec offset segment déclaré en utilisant WatCom
Le projet complet est un peu complexe pour l'écriture totale dans Assembly. Donc, je décide que je vais utiliser C avec l'Assemblée inline pour plus loin. Pour cela, je télécharge un environnement nommé open-watcom-c-win32-1.9. J'ai un simple code C pour tester certaines directives du compilateur et de l'éditeur de liens WatCom pour créer un fichier RAW BIN. Le fichier bin est généré mais ne s'exécute pas après que mon chargeur de démarrage l'a chargé dans la mémoire. J'essaie beaucoup de directives wlink pour définir les valeurs de segment et de décalage mais ne fonctionne pas.
void main()
{
__asm
{
mov ah, 0x0E
mov al, '!'
int 0x10
}
}
Je pense que le problème est que le compilateur et l'éditeur de liens utilisent des adresses de segment et de décalage incorrectes pendant la génération du code. Parce que le Wlink supprime l'erreur suivante dans tous les cas.
Avertissement! W1023 pas d'adresse de départ trouvé, en utilisant 0000: 0000
Je ne sais pas comment je peux définir correctement les adresses de décalage de segment, mais il serait necceserly pour un programme de travail. Mes questions que ce genre de directives WatCom que j'utilise pour générer 16 bits en mode réel fichier RAW BIN à partir d'un code source C avec segment déclaré: offset? C'est possible avec WatCom ou dois-je utiliser d'autres choses?