J'ai besoin de recopier ma variable chaine au segment 0b800 pour l'afficher, sans utiliser les interruptions. (c'est pour ensuite la faire défiler ...)
1ere solution:
appel direct du vecteur de la table d'interruption
push es
xor ax,ax
mov es,ax
lea si,[chaine]
mov al,2
.1
cmp byte[si],'$'
mov dl,[si]
lea si,[si+1]
je .2
call far [es:0x21*4] ; elle est bonne non ???
jmp .1
.2
pop es
ret
2eme solution:
ecriture directe dans la memoire video
PAGE0_OFFS EQU 0
PAGE1_OFFS EQU 0x8000
push es
push word 0xB000
pop es
mov di,PAGE1_OFFS
lea si,[chaine]
cld
.1
cmp byte[si],'$'
lodsb
je .2
stosb
jmp .1
.2
pop es
ret