prob avec une INT [asm & noob] - ASM - Programmation
Marsh Posté le 14-08-2002 à 21:01:16
pour déclarer les segments, je ne connais que cette méthode-là : http://www.members.kconline.com/st [...] page6.html
Marsh Posté le 14-08-2002 à 21:02:05
mov ax, @data
mov ds, ax
(ou push @data, pop ds)
ds ne doit pas être correctement initialisé.
Marsh Posté le 14-08-2002 à 21:28:16
youdontcare a écrit a écrit : mov ax, @data mov ds, ax (ou push @data, pop ds) ds ne doit pas être correctement initialisé. |
Marsh Posté le 14-08-2002 à 22:27:39
youdontcare a écrit a écrit : mov ax, @data mov ds, ax (ou push @data, pop ds) ds ne doit pas être correctement initialisé. |
Merci a toi,
j'ai tester le code que t'as lié.
Mais @data semble poser poser probleme.
Je compile avec tasm,je c pas si ca a un rapport,
ca me met ca comme erreur.
Code :
|
Marsh Posté le 14-08-2002 à 22:36:28
as-tu essayé en mettant
.model small
.data
message db "...$"
.code
push @data
....
?
je n'ai jamais utilisé la syntaxe "data segment" & co.
Marsh Posté le 14-08-2002 à 22:44:29
youdontcare a écrit a écrit : as-tu essayé en mettant .model small .data message db "...$" .code push @data .... ? je n'ai jamais utilisé la syntaxe "data segment" & co. |
thx ca marche
j'ai utilser ca avec 'mov ax, @data' et la plus d'erreur et ca marche parfaitement.
Merci a toi youdontcare.
Marsh Posté le 15-08-2002 à 00:52:01
encore une ptite question y as t'il un fonction de l'interruption 21h qui permet d'afficher en decimal le contenu de dx?
Marsh Posté le 15-08-2002 à 00:58:33
je ne crois pas. en tout cas si elle existe, je ne l'ai jamais trouvée ...
comment faire ? tu veux afficher 192. tu divises par 10, il reste 19. tu remultiplies et prends la différence : 192 - 19*10 = 2. 19 / 10 = 1, 19 - 1*10 = 9. reste un nombre en dessous de 10. ensuite, il suffit de rajouter le caractère '0' au nombre pour l'afficher (eg add al, '0'
Marsh Posté le 15-08-2002 à 01:10:35
youdontcare a écrit a écrit : je ne crois pas. en tout cas si elle existe, je ne l'ai jamais trouvée ... comment faire ? tu veux afficher 192. tu divises par 10, il reste 19. tu remultiplies et prends la différence : 192 - 19*10 = 2. 19 / 10 = 1, 19 - 1*10 = 9. reste un nombre en dessous de 10. ensuite, il suffit de rajouter le caractère '0' au nombre pour l'afficher (eg add al, '0' |
Dommage,je v essayer ta methode,mais demain paske la j'en ai marre de reflechir en binaire.
en tout je crois que j'ai compris ,c logique en fait tu extrait chaque digit un a un.
Encore merci ydc.
Marsh Posté le 14-08-2002 à 20:16:26
Bonjour a vous,
je debute en asm et ca commence mal :-/
j'essaye de compiler un bete code qui est censé afficher un simple message.
Ca marche sauf que il affiche plus de caractère que ce qui faut
et ca deconne encore plus si je declare plusieur chaine entre "DATA SEGMENT" et "DATA ENDS"
voici ce code:
Pourriez vous m'eclairer ??
Merci d'avance pour vos réponses.