Bonjour,

Tout d'abord bravo pour ce super site.

Voila,je n'arrive pas à utiliser une valeur issue du segment mémoire 0:... (zone des pointeurs sur les gestionnaire interruptions bios).
(mon but est d'afficher simplement ces différentes valeurs)

le code est compilé en .com par nasm (nasm -fbin prog.asm -o prog.com)
puis exécuter par dos box (je suis sous Windows 8)

voici le code;


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
org 100h
 
%define NumInt		2        ;n° de l'int voulue
 
section .txt
 
start:
 
mov ax,cs
mov ds,ax
mov ax,0B800h
mov es,ax	;es pointe sur ram video texte vga
mov ax,0
mov fs,ax	;fs pointe sur segment 0:....
 
mov ax,3 	;texte 80*25
int 10h
 
mov si,NumInt
shl si,2		;dx pointe sur pointeur gestionnaire correspondant (NumInt*4)
 
mov ax,[fs:si]	;ax contient le word de l'offset du pointeur far
add al,30h	;al devient un code ascii affichable
 
mov ah,100b	;attribut couleur
mov di,0		;première case vga texte
 
mov [es:di],ax	;ecriture en vga texte
 
mov ah,0
int 16h
 
ret
ce code m'affiche '8' alors qu'en traçant le code DWORD[0:4] vaut 0603h,je devrais donc avoir '3' d'afficher (03+30h=33h='3'.

qu 'est ce qui ne va pas ??
Merci pour votre aide.