Programme écrit en assembleur
spoonatte
Messages postés
85
Statut
Membre
-
spoonatte Messages postés 85 Statut Membre -
spoonatte Messages postés 85 Statut Membre -
Bonjour,
j'ai un problème avec un programme écrit en assembleur (qui trouver le nombre des 1 dans une variable) , quand je veux afficher une variable (R dans mon programme), il ne fait rien, c'est le code source :
j'ai un problème avec un programme écrit en assembleur (qui trouver le nombre des 1 dans une variable) , quand je veux afficher une variable (R dans mon programme), il ne fait rien, c'est le code source :
.MODEL SMALL .STACK 100H .DATA D1 DW 0A8D1H R DW ? pkey db 0dh,0ah,'Press any key to continue$' .CODE MAIN PROC ; set segment registers: mov ax, @data mov ds, ax mov es, ax MOV DX ,16D ; Rotation 16 fois XOR AX,AX ;Mettre AX a 0 MOV BX,D1 Tp: ROL BX,1 ; Rotation a gauche JNC NEXT ; Test si CF=0 INC AX ; Si CF = 1, incrémenter AX de `1' NEXT: DEC DX ; répéter 16 fois JNZ Tp ; encore une fois si ce n'est pas fini MOV R,AX ; sauvegarder le résultat dans la case mémoire R ;Afichage de R mov dx,R mov ah,9 int 21h lea dx, pkey mov ah, 9 int 21h ; output string at ds:dx ; wait for any key.... mov ah, 1 int 21h mov ax, 4c00h ; exit to operating system. int 21h MAIN ENDP END MAIN
A voir également:
- Programme écrit en assembleur
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Programme word gratuit - Guide
- Programme bonjour ✓ - Forum Windows
- Mon clavier n'écrit plus ✓ - Forum Clavier
2 réponses
Ton programme tient la route, MAIS
la fonction 9h du DOS affiche une chaine terminée par un '$'
En aucun cas ceci n'affichera la valeur décimale du double-mot R.
Tu dois écrire une procédure qui calcule en boucle la division de sx par 10 et afficher le caractère ASCII correspondant: tu peux t'inspirer de ceci
https://www.daniweb.com/digital-media/ui-ux-design/threads/17429/shipping-by-quantity
Lit tout l'article !
Même du temps du DOS pur, les fonctions que tu utilises pour l'affichage étaient dépassées !
Pour écrire une chaîne, utilise la fonction 40h de l'interruption DOS 21h.
Regarde ici par exemple: DOS_interruts
Gates gave ^H sold you the windows.
GNU gave us the whole house.(Alexandrin)
la fonction 9h du DOS affiche une chaine terminée par un '$'
En aucun cas ceci n'affichera la valeur décimale du double-mot R.
Tu dois écrire une procédure qui calcule en boucle la division de sx par 10 et afficher le caractère ASCII correspondant: tu peux t'inspirer de ceci
https://www.daniweb.com/digital-media/ui-ux-design/threads/17429/shipping-by-quantity
Lit tout l'article !
Même du temps du DOS pur, les fonctions que tu utilises pour l'affichage étaient dépassées !
Pour écrire une chaîne, utilise la fonction 40h de l'interruption DOS 21h.
Regarde ici par exemple: DOS_interruts
Gates gave ^H sold you the windows.
GNU gave us the whole house.(Alexandrin)
FCB unavailable
Abort, Fail ?
<cut>
AH=40h - "WRITE" - WRITE TO FILE OR DEVICE
Entry:
BX = file handle
CX = number of bytes to write
DS:DX -> data to write
Return:
CF clear if successful -AX = number of bytes actually written
CF set on error - AX = error code (05h,06h)
</cut>
Si bx=1 : sortie standard
si bx=2 : erreur standard