|
|
|
|
Bonjour
l' Asembleur me tues , plus je l'etudie moins je comprend lol
Voici mon exo
L'interruption matérielle numéro 1 est déclenchée après chaque instruction du processeur dans le cas ou TF=1. Le bit TF est le bit 8 du registre des indicateurs du 8086.
Que représente TF ?
Le programme suivant permet de mettre à 1 le bit TF
pushf pop ax or ax,100h push ax popf
je comprends pas que le programme mets TF a 1
merci a Tous et Bonne année
Salut,
|
Ici
pushf # empile que représente f pop ax # depile dans ax pourquoi décompile t il ax ? merci |
Salut,
|
tu devra comprendre la structure des processeurs x86 en premier!
|
Oui, dans le programme normalement TF=0
|
à mon avis, le but de l'exercice, c'est de montrer l'interêt de l'INT#1, et la manipulation du registre FLAGS
|
Dans la deuxième question on me demande ca
PUSHF POP ax or as,100h push ax pop f mov cl,1 mov ch,2 mov dl,3 mov dh,4 j'avoue que la dexième partie je ne comprends pas trop :( ps: cet exercice n'est pas un exercice a remettre , un exercice dc j'ai la correction. Cependant je ne comprends pas dc je tente de le refaire en comprenais tt les points |
Je pose une derniere question aujourd'hui et on continue la discussion demain si tu veut bien.
|
Tache d'interruption numéro 1 : Afficher CL, CH ,DL et DH en utilisant le sous-programme d'affichage en binaire. Entre chaque valeur afficher un espace code ascii 2016 en utilisant un sous-programme nommé espace. A la fin de l'affichage de cl ch dl dh faire un retour à la ligne en utilisant un sous-programme nommé ligne. Les deux codes ascii à afficher pour passer à la ligne suivante sont A16 (line feed) et D16. (carriage return)
|
Je vais faire les suppositions suivantes:
inter1 proc push ax mov al, cl call binaire call espace mov al, ch call binaire call espace mov al, dl call binaire call espace mov al, dh call binaire call espace call ligne pushf pop ax or ax, 100h push ax popf iret inter1 end si t'as un exemple dans le cours qui ressemble à ce que tu demande, ou donne la maniere de definir une interruption sur ton compilateur, il faudrai que je le vois! @+ L'erreur est humaine mais un véritable désastre ne peut être qu'informatique |
La correction c ca
.model small .stack 100h .code mov ah,35h mov al,1 int 21h push bx; sauvegarde du vecteur dans la pile push es mov ax,seg spit1 mov ds,ax mov dx,offset spit1 mov ax,2501h int 21h pushf ; Mise à 1 de TF pop ax or ax,0100h push ax popf mov ch,1 ; Programme à débugger mov cl,2 mov dh,3 mov dl,4 pushf ; Mise à 0 de TF pop ax and ax,0EFFh push ax popf pop ds ; reprise de l'ancien vecteur dans le pile pop dx mov ax,2501h int 21h mov ah,4ch int 21h ; Procédure d'affichage en binaire proc AffBin push ax push bx push cx push dx mov cl,8 ABboucle: mov dl,'0' shl bl,1 Jnc ABzero mov dl,'1' ABzero: mov ah,02 int 21h sub cl,1 Ja ABboucle pop dx pop cx pop bx pop ax ret endp spit1 proc ; Sous programme d'interruption push bx mov bl,cl call AffBin call espace mov bl,ch call AffBin call espace mov bl,dl call AffBin call espace mov bl,dh call AffBin call ligne pop bx iret endp ligne proc push ax push dx mov ah,2 mov dl,0Ah int 21h mov dl,0Dh int 21h pop dx pop ax ret endp espace proc push ax push dx mov ah,2 mov dl,20h int 21h pop dx pop ax ret endp end |

