Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4788 connectés 

  FORUM HardWare.fr
  Programmation

  [asm encore et toujours] pour des matrices... ca marche comment ??

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[asm encore et toujours] pour des matrices... ca marche comment ??

n°93126
swich
snps
Posté le 24-01-2002 à 20:52:00  profilanswer
 

pour afficher une matrice, la stocker, l'afficher.. ca se passe comment ??
on met ca sous kelle forme etc ??
si qq'un a des explications simples ca serait cool

mood
Publicité
Posté le 24-01-2002 à 20:52:00  profilanswer
 

n°93459
swich
snps
Posté le 25-01-2002 à 18:07:01  profilanswer
 

UP siouplait..

n°93571
swich
snps
Posté le 25-01-2002 à 23:39:18  profilanswer
 

bou personne pour m'aider ?

n°93575
darkoli
Le Petit Dinosaure Bleu
Posté le 25-01-2002 à 23:58:19  profilanswer
 

Le seul truc que j'ai en assembleur concernant les matrices c'est la multiplication de deux matrices 4x4. Mais pour l'affichage et la gestion c'est le stockage. (Moi j'utilise un tableau à une dimension).

n°93627
swich
snps
Posté le 26-01-2002 à 09:33:33  profilanswer
 

bah...si tu pouavais simplment m'expliquer ce truc,  
par exemple g une liste t
t dw 0,1,2,3,4
et je voudrais ke le prog m'affiche
0
1
2
3
4
 
si tu pouvias me dire comment faire ca serait cool
thx

n°93700
darkoli
Le Petit Dinosaure Bleu
Posté le 26-01-2002 à 15:00:26  profilanswer
 

Ben pour faire de l'affichage je le faisais en C !!!
 
Donc c'est : printf("%d\n",t[0]);
 
En assembleur je ne sais pas le faire.

n°93707
Mara's dad
Yes I can !
Posté le 26-01-2002 à 15:39:14  profilanswer
 

TITI.ASM
 

Code :
  1. a
  2. jmp 10a
  3. e 102 7
  4. e 103 5 6 8 7 8 0 3
  5. a 10a
  6. mov ch,0
  7. mov cl,[102]
  8. mov bx,103
  9. mov ah,[bx]
  10. add ah,30
  11. mov dl, ah
  12. mov ah,02
  13. int 21
  14. mov dl, 0d
  15. int 21
  16. mov dl, 0a
  17. int 21
  18. inc bx
  19. loop 113
  20. mov ah,4c
  21. int 21h
  22. r cx
  23. 2d
  24. n titi.com
  25. w
  26. q


 
(ne pas oublier le retour chariot après le "q", sinon on reste bloqué dans DEBUG !
 
DEBUG < TITI.ASM
Donne titi.com qui affiche :
 
5
6
8
7
8
0
3
 
 :lol:  ;)  :D


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°93711
Mara's dad
Yes I can !
Posté le 26-01-2002 à 15:45:59  profilanswer
 

Version commentée

Code :
  1. a
  2. jmp 10a     Saut par dessus les data
  3. e 102 7     7: Nombre de chiffres à afficher
  4. e 103 5 6 8 7 8 0 3  Les chiffres
  5. a 10a
  6. mov ch,0     Init du compteur CX avec le nombre de chiffres
  7. mov cl,[102]
  8. mov bx,103    Bx pointe sur le chiffre à afficher
  9. mov ah,[bx]    Ah récupère la valeur du chiffre
  10. add ah,30    Valeur ascii du chiffre
  11. mov dl, ah    Copie dans dl
  12. mov ah,02    Fonction 02h
  13. int 21     Affichage d'un caractère
  14. mov dl, 0d    Code du Retour chariot dans dl
  15. int 21     Affichage du retour chariot
  16. mov dl, 0a    Code du Saut de Ligne dans dl
  17. int 21     Affichage du Saut de Ligne
  18. inc bx     Positionne bx sur le caractère suivant
  19. loop 113     Boucle (décrémente CX et sort si CX=0)
  20. mov ah,4c    Fonction 4Ch
  21. int 21h     Fin du programme.
  22. r cx
  23. 2d
  24. n titi.com
  25. w
  26. q


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°93756
swich
snps
Posté le 26-01-2002 à 19:13:05  profilanswer
 

thx..
ca fait plaisir d'avoir un peu d'aide..

n°93783
Mara's dad
Yes I can !
Posté le 26-01-2002 à 20:29:52  profilanswer
 

J'éspère que çà t'aidera...
 
C'est de l'ASM de bourin qu'a jamais fait des progs de plus de quelque dizaines d'instrucions, le tout le plus souvent en direct live avec DEBUG !
 
J'en ai fait qu'un seul (Avec TASM il me semble) et je viens de le retrouver :
 

Code :
  1. Title 'AMORCE.ASM', 'Change l'amorce d'une disquette non Bootable'
  2. ; 
  3. ;   Version 2.0
  4. ;
  5. ;   Donn'e . copier dans le premier secteur d'une disquette non bootable
  6. ;   Elle contient un programme qui affiche un message et attends la
  7. ;   frappe de la touche SHIFT pour relancer la machine.
  8. MY_PROG segment
  9. org     00100h
  10. assume  cs:MY_PROG, ds:MY_PROG, ss:MY_PROG    ; segment definitions.
  11. Debut:  JMP     Copier
  12. BootSecteur  LABEL   Byte
  13.   DB  0E9h,0C9h,000h
  14. Signature  LABEL   Byte
  15.   DB  000h,000h,000h,000h,000h,000h,000h,000h
  16.   DB  000h,002h,001h,001h,000h
  17.   DB  002h,0E0h,000h,040h,00Bh,0F0h,009h,000h,012h,000h,002h,000h,000h,000h,000h,000h
  18.   DB  000h,000h,000h,000h,00Fh,000h,000h,000h,000h,001h,000h,000h,000h,000h,000h,000h
  19.   DB  000h,001h,002h,000h,001h,010h,021h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  20.   DB  0C9h,0CDh,0CDh,0CDh,0CDh,0CDh,0CDh,0CDh,0CDh,0CDh,0CDh,0CDh,0BBh,0BAh,020h,044h
  21.   DB  049h,053h,051h,055h,045h,054h,054h,045h,020h,0BAh,0BAh,020h,04Eh,04Fh,04Eh,020h
  22.   DB  020h,020h,020h,020h,020h,020h,0BAh,0BAh,020h,042h,04Fh,04Fh,054h,041h,042h,04Ch
  23.   DB  045h,020h,020h,0BAh,0BAh,020h,052h,045h,04Dh,050h,04Ch,041h,043h,045h,05Ah,020h
  24.   DB  0BAh,0BAh,020h,045h,054h,020h,020h,020h,020h,020h,020h,020h,020h,0BAh,0BAh,020h
  25.   DB  041h,050h,050h,055h,059h,045h,05Ah,020h,020h,020h,0BAh,0BAh,020h,053h,055h,052h
  26.   DB  020h,020h,020h,020h,020h,020h,020h,0BAh,0BAh,020h,053h,048h,049h,046h,054h,020h
  27.   DB  020h,020h,020h,020h,0BAh,0C8h,0CDh,0CDh,0CDh,0CDh,0CDh,0CDh,0CDh,0CDh,0CDh,0CDh
  28.   DB  0CDh,0BCh,03Dh,026h,000h,000h,000h,000h,000h,001h,0FFh,000h,0FAh,031h,0C0h,08Eh
  29.   DB  0D0h,0BCh,000h,07Ch,0B8h,0B0h,007h,08Eh,0D8h,0FBh,0B4h,001h,0B9h,000h,020h,0CDh
  30.   DB  010h,0FCh,0BEh,040h,001h,0B6h,007h,0BBh,007h,000h,0B9h,00Ah,000h,051h,0B4h,002h
  31.   DB  0B2h,020h,0CDh,010h,0B9h,00Dh,000h,0B4h,00Eh,0ACh,0CDh,010h,0E2h,0F9h,0FEh,0C6h
  32.   DB  059h,0E2h,0EAh,0B4h,002h,0B7h,000h,031h,0D2h,0CDh,010h,0B4h,008h,0CDh,010h,0A3h
  33.   DB  0C7h,001h,0B4h,012h,0CDh,016h,0A8h,001h,075h,07Ch,0B4h,086h,031h,0C9h,0BAh,000h
  34.   DB  038h,0CDh,015h,0B4h,002h,08Bh,016h,0C5h,001h,0CDh,010h,08Bh,016h,0C7h,001h,088h
  35.   DB  0D0h,088h,0F3h,0B9h,001h,000h,0B4h,009h,0CDh,010h,0B4h,002h,08Bh,016h,0C3h,001h
  36.   DB  0CDh,010h,0B4h,008h,0CDh,010h,0A3h,0C7h,001h,089h,016h,0C5h,001h,0B8h,02Ah,009h
  37.   DB  08Ah,01Eh,0CBh,001h,080h,0FBh,00Fh,075h,004h,0B3h,000h,0EBh,002h,0FEh,0C3h,088h
  38.   DB  01Eh,0CBh,001h,0CDh,010h,002h,036h,0C9h,001h,075h,004h,0B4h,001h,0EBh,007h,080h
  39.   DB  0FEh,018h,075h,006h,0B4h,0FFh,088h,026h,0C9h,001h,002h,016h,0CAh,001h,075h,004h
  40.   DB  0B4h,001h,0EBh,007h,080h,0FAh,04Fh,075h,006h,0B4h,0FFh,088h,026h,0CAh,001h,089h
  41.   DB  016h,0C3h,001h,0E9h,07Ch,0FFh,031h,0D2h,0B4h,002h,0BBh,007h,000h,0CDh,010h,0B4h
  42.   DB  00Eh,0B9h,0DEh,000h,051h,0B9h,009h,000h,0BEh,003h,001h,0ACh,0CDh,010h,0E2h,0FBh
  43.   DB  059h,0E2h,0F1h,0B4h,086h,0BAh,0FFh,0FFh,0B9h,001h,000h,0CDh,015h,0CDh,019h,000h
  44.   DB  000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  45.   DB  000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  46.   DB  000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
  47.   DB  000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,055h,0AAh
  48. ;   Messages and Codes retours.
  49. ;   Messages
  50. mess0    DB     13,10,'Copie secteur de BOOT termin'.',13,10,0 
  51. mess1    DB     13,10,'Disquette prot'g'e !',13,10,0
  52. mess2    DB     13,10,'Secteur non trouv' !',13,10,0
  53. mess3    DB     13,10,'Pas de disquette !',13,10,0
  54. mess4    DB     13,10,'Pas de r'ponse !',13,10,0
  55. mess5    DB     'Ce programme modifie le secteur de BOOT de la disquette "A"',13,10
  56. mess5Bis DB     'Taper une signature (1 . 8 caractSres)',13,10,0
  57. mess6    DB     13,10,'La signature ne peut ^tre vide !',13,10,0
  58. mess7    DB     13,10,'--------- ABANDON ---------',13,10,0
  59. ;   error table
  60. ErrTbl  LABEL   BYTE
  61. DB      000h
  62. DW      OFFSET mess0
  63. DB      003h
  64. DW      OFFSET mess1
  65. DB      004h
  66. DW      OFFSET mess2
  67. DB      006h
  68. DW      OFFSET mess3
  69. DB      080h
  70. DW      OFFSET mess4
  71. DB      0EEh
  72. DW      OFFSET mess5
  73. DB      0F1h
  74. DW      OFFSET mess6
  75. DB      0F2h
  76. DW      OFFSET mess7 ;Attention, si on ajoute des messages, il faut
  77.      ;Penser . incr'menter CX dans Message:
  78. ;   Programme principal.
  79. Copier:
  80. CLD
  81. LEA     SP,[Pile]
  82. CALL    Init
  83. JB      ErrExit             
  84. CALL    Copie
  85. JB      ErrExit
  86. MOV     AH,000h
  87. ErrExit:     
  88. CALL    Message 
  89. ExitDos:
  90. MOV     AX,04C00h
  91. INT     021h
  92. Init:
  93. MOV     AH,0EEh
  94. CALL    Message
  95. CALL    Clav_Debut
  96. MOV     AH,000h
  97. MOV     DL,000h
  98. INT     013h
  99. RET
  100. Copie:
  101. MOV     CX,00003h
  102. Boucle:
  103. PUSH    CX
  104. MOV     AX,00301h
  105. LEA     BX,[BootSecteur]             
  106. MOV     CX,00001h
  107. XOR     DX,DX
  108. PUSH    DS
  109. POP     ES
  110. INT     013h
  111. JNB     Suite
  112. POP     CX
  113. LOOP    Boucle
  114. RET
  115. Suite:
  116. POP     CX
  117. RET
  118. Message:
  119. PUSH AX
  120. PUSH BX
  121. PUSH CX
  122. PUSH SI
  123. PUSHF
  124. LEA     SI,[ErrTbl]  ;SI := OFFSET ErrTbl
  125. MOV     CX,00008h  ;!!! DOIT CONTENIR LE NOMBRE DE MESSAGES !!!
  126. Charge:
  127. LODSB    ;AL := DS:SI et SI += 01h (Offset du message)
  128. CMP     AH,AL   ;V'rifie si c'est le bon message
  129. JE      Affiche  ;Pour l'afficher
  130. INC     SI   ;Passe Num'ro de message suivant
  131. INC     SI               ;...
  132. LOOP    Charge   ;Va le comparer
  133. JMP    ExitDos  ;Si on est en fin de table
  134. Affiche:
  135. MOV     BX,00007h
  136. LODSW
  137. MOV     SI,AX
  138. MOV     AH,0Eh                               
  139. Affcar:
  140. LODSB
  141. OR      AL,AL   ;Test Fin de message
  142. JE      Fin
  143. INT     010h
  144. JMP     Affcar
  145. Fin:
  146. POPF
  147. POP SI
  148. POP CX
  149. POP BX
  150. POP AX
  151. RET
  152. ;------------------------------------------------------------------
  153. ----
  154. Clav_Debut:
  155. PUSH AX
  156. PUSH BX
  157. PUSH CX
  158. PUSHF
  159. Clav_Init:
  160. MOV CX,08h
  161. Clav_Zone:
  162. MOV AX,0E5Fh ;Ecriture d'un "_"
  163. INT 010h
  164. LOOP Clav_Zone
  165. MOV AX,0E0Dh ;Retour d'but Zone
  166. INT 010h
  167. XOR BX,BX
  168. MOV CX,08h
  169. Clav_Saisie:
  170. XOR AX,AX
  171. INT 016h
  172. CMP AL,08h ;Test Backspace
  173. JE Clav_Backspace
  174. CMP AL,0Dh ;Test Entr'e
  175. JE Clav_Fin
  176. CMP AL,01Bh ;Test Escape -> Sortie
  177. JE Clav_Esc
  178. CMP AL,020h ;Test Espace
  179. JE Clav_Affiche
  180. CMP AL,030h ;Test "0"
  181. JB Clav_Beep
  182. CMP AL,039h ;Test "9"
  183. JBE Clav_Affiche
  184. CMP AL,041h ;Test "A"
  185. JB   Clav_Beep
  186. CMP AL,05Ah ;Test "Z"
  187. JBE Clav_Affiche
  188. CMP AL,061h ;Test "a"
  189. JB Clav_Beep
  190. CMP AL,07Ah ;Test "z"
  191. JBE Clav_Affiche
  192. Clav_beep:
  193. MOV AL,07h ;Son Beep
  194. MOV AH,0Eh
  195. INT 010h
  196. JMP Clav_Saisie
  197. Clav_Backspace:
  198. CMP  CX,08h
  199. JE Clav_Beep
  200. DEC BX
  201. MOV [Signature+BX],0h
  202. INC CX
  203. MOV AH,0Eh ;Envoi du backspace
  204. INT 010h
  205. MOV AX,0E5Fh ;Ecriture d'un "_"
  206. INT 010h
  207. MOV AX,0E08h ;Retour arriSre sur le "_"
  208. INT 010h
  209. JMP Clav_Saisie
  210. Clav_Affiche:
  211. MOV [Signature+BX],AL
  212. INC BX
  213. MOV AH,0Eh
  214. INT 010h
  215. LOOP Clav_Saisie
  216. Clav_Fin:
  217. MOV AX,08h
  218. SUB AX,CX
  219. JNZ Clav_Sortie
  220. MOV AH,0F1h
  221. CALL Message
  222. JMP Clav_Init
  223. Clav_Esc:
  224. MOV AH,0F2h
  225. JMP ErrExit
  226. Clav_Sortie:
  227. MOV AX,0E0Dh
  228. INT 010h
  229. MOV AX,0E0Ah
  230. INT 010h
  231. POPF
  232. POP CX
  233. POP BX
  234. POP AX
  235. RET
  236. DB      0200h dup(0)
  237. Pile    Label   word
  238. MY_PROG ends
  239. end     Debut


 
En fait y'a 2 progs :
 
Celui en clair qui écrit le secteur de boot, et le secteur de boot lui-même.
Ce dernier à été écrit en direct avec DEBUG.
 
Le but de tout çà :
1- Nettoyer les disquettes infectées par un virus de boot.
2- Remplacer le message classique (Disquette non bootable) par un truc plus fun ! Si on tente de booter avec une disquette qui contient mon prog, il affiche au centre de l'écran un cardre contenant un message disant de mettre un disque bootable et d'appuyer sur Shift pour rebooter. Pendant ce temp, un caractère "*" se promène sur l'écran en changeant de couleur. Quand on appuie sur SHIFT, la "Signature" (demandé par le prog d'écriture du secteur de boot) remplie tout l'écran le temps que la machine reboote.
 
Le tout en moins de 512 octets ! (Enfin pour le secteur de boot)


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [asm encore et toujours] pour des matrices... ca marche comment ??

 

Sujets relatifs
Pk ce script ne marche t'il pas ?[JS] pourquoi ca marche pas ca ?
[PHP] pourquoi ca marche pas???[PHP] Ben l'authentification http par php ca marche pas chez free .??
[assembleur] pourquoi ca marche po ??[Borland/C++]Pkoi ca marche pas ???
[Java] Newbie : applet marche dans JBuilder mais pas dans IE...pq ce forum ne marche plus qu une fois sur deux ces 2 dernier jour?
[PHP] Un compteur qui marche pas[Builder c++] Comment marche cette p... de fonction locate ???
Plus de sujets relatifs à : [asm encore et toujours] pour des matrices... ca marche comment ??


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)