2017-06-09 5 views
1

J'utilise masm32 pour apprendre à programmer des programmes d'assemblage 32 bits. Je veux savoir comment je peux lire directement à partir de l'entrée (comme l'assemblage 16 bits, l'interruption d'appel ou quelque chose comme) sans utiliser les macros prédéfinies io.h et procs? C'est possible?Lecture des entrées sans utiliser io.h dans l'assemblage

grâce

+3

Oui. Vous appelez les API fournies par le système d'exploitation. Sous Windows, les E/S de la console sont effectuées en appelant des fonctions telles que ['ReadConsole'] (https://msdn.microsoft.com/fr-fr/library/windows/desktop/ms684958.aspx) et [' WriteConsole'] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms687401.aspx). Ils sont fournis par les en-têtes Windows SDK ('windows.h') et les bibliothèques associées que vous liez dans votre fichier binaire. Les interruptions ne sont pas utilisées à cette fin dans Windows. –

+0

Merci pour votre réponse, mais je veux l'écrire à partir de zéro, est-ce possible? –

+0

Non, il n'est pas possible de l'écrire à partir de zéro. –

Répondre

-1

En utilisant les systèmes d'exploitation plus anciens comme DOS, vous pouvez appeler par exemple INT 16h pour demander une pression sur le BIOS. Malheureusement, cela n'est pas possible sous Windows NT. Pour un tas de raisons (la sécurité et la stabilité étant les plus importantes), l'accès aux interruptions du BIOS est contrôlé par le noyau Windows, et est donc restreint pour les applications normales. En d'autres termes, vous devez obtenir toutes les combinaisons de touches via les appels au noyau Windows, directement ou indirectement. Il n'y a pas d'autre moyen. Vous appelez le système d'exploitation, l'OS appelle le noyau, le noyau appelle le BIOS. Mais de toute façon, si vous voulez toujours utiliser des interruptions, il y a une possibilité - au prix de devenir encore plus dépendant de la plate-forme qu'après avoir choisi MASM32 comme langue cible. Sous Windows 32 bits, la plupart des API Windows de NTDLL sont accessibles via INT 2Eh. Le problème est que différentes versions de Windows (parfois même différentes versions de la même version) diffèrent dans les numéros de fonction INT 2Eh. Réfléchissez à deux fois si vous souhaitez un tel niveau de dépendance à la plate-forme avant de commencer à rechercher ce sujet.

+0

Les API ne sont pas conçues pour être appelées ainsi, et cela n'a absolument aucun sens. –

+0

@CodyGray il sert un but. Dans les logiciels malveillants, par exemple, il peut être utile d'éviter le suivi des API usermode et d'importer l'analyse des tables. – hidefromkgb

+1

Hmm, super, juste ce dont nous avons besoin, des façons d'écrire des logiciels malveillants. Je ne considère pas cela comme "utile". –