FORUM Syndrome-OC - Jacky-PC


  Programmation


  Autre


  [ASM] problemes ...

 




Aragorn le rouge, DoZz78 Achat/vente : rk1 Tests Hardware : re12, 1 utilisateur anonyme et 19 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ASM] problemes ...

n°7820
tix2
ALors toi,hein ,je serais ta m
Posté le 05-02-2008 à 22:19:38  profilanswer
 

Salut
 
On tente, ave cun pote, de coder un petit kernel simpliste (but purement intellectuel -_-')... j'avais quelque snotions de mode réel, en basic, et en C ... mais aucune, ou presque d'assembleur ...
 
je m'y suis donc mis il ya deux jours et ca se passe bien. mais bien entendu, j'ai besoin d'un peu d'aide.
 
alors voilà le probleme :
 
j'ai récuperé un code de boot pour l'étudier, et en connaitre un peu plus sur le sujet, mais certaines lignes sont bine floues, voilà le code entier, auquel j'ai apporté deux ou trois modifs ...
 

Code :
  1. ;************************************************************
  2. ; Program entry point
  3. ; Currently we are at 0:7C00
  4. ;************************************************************
  5. org 0
  6. EntryPoint:
  7.     ; Would have preferred 07C0:0000
  8.     ; Dealing with an offset that starts at 0 is easier
  9.     ; So do a far jump to 07C0:????
  10.     jmp 0x07C0:AfterData
  11. ;°²ÛÜßÈÉÊËÌÍμ»º¹¿ÀÅÄÃÂÁÙÚ È¼
  12. ; Your Data goes here!
  13.     BOOT_MSG db 'Booting ...',10,13,0
  14.     ACTIVITY db '°±²Û²±°',0
  15. AfterData:
  16. ; update DS to be 7C0 instead of 0
  17. push CS
  18. pop DS
  19. ; update ES also
  20. push CS
  21. pop ES
  22. ; create stack
  23. mov ax, 0x0000
  24. mov ss, ax
  25. mov sp, 0xFFFF
  26. ; charge le mode 12H
  27. ; code ajouté apres coup
  28. ;mov ah, 0x00
  29. ;mov al, 0x12
  30. ;int 0x10
  31. ; display boot message...
  32. lea si, [BOOT_MSG]
  33. call Print
  34. ; Go into a hang printing dots
  35. DIE_LOOP:
  36. lea si, [ACTIVITY]
  37. call Print
  38. mov cx, 0xffff
  39. delay1:
  40. mov bx, 0xfff
  41. delay2:
  42. dec bx
  43. jnz delay2
  44. dec cx
  45. jnz delay1
  46. jmp DIE_LOOP
  47. ;************************************************************
  48. ; Procedure print
  49. ; prints a zero terminated string pointed to by si
  50. ;************************************************************
  51. Print:
  52. push ax
  53. mov ah, 14 ; BIOS code for screen display
  54. cld
  55. print_loop:
  56. lodsb ; moving the character to be displayed to al
  57. or al, al ; checking if the char is NULL
  58. jz printdone
  59. int 10h ; Calling BIOS routine
  60. JMP print_loop
  61. printdone:
  62. pop ax
  63. ret
  64. ; End of print procedure...
  65. ; Make the file 512 bytes long
  66. TIMES 510-($-$$) DB 0
  67. ; Add the boot signature
  68. dw 0AA55h


 
or voilà. j'ai tenté de passé en 12H, pour, par la suite, coder un genre de bmploader simpliste, avec ceci  
 

Code :
  1. mov ah, 0x00
  2. mov al, 0x12
  3. int 0x10


 
a verifier, je ne pense pas avoir commis d'erreurs ..
 
toujours est il que, là, il ya bug :
 
la fonction "print" ne marchre plus ...
 
j'ai essayé de la modifier en utilisant une autre fonction de l'interruption 10h (0x09) mais, meme probleme, ou preque...
 
auriez vous une solution? (je posterai le code testé au besoin)
 
2eme question : le stack ...
 
je n'ai pas compris ces lignes :

Code :
  1. EntryPoint:
  2.     ; Would have preferred 07C0:0000
  3.     ; Dealing with an offset that starts at 0 is easier
  4.     ; So do a far jump to 07C0:????
  5.     jmp 0x07C0:AfterData
  6. ; Your Data goes here!
  7. ...
  8. AfterData:
  9. ; update DS to be 7C0 instead of 0
  10. push CS          ;<< ?
  11. pop DS           ;<< ?
  12. ; update ES also
  13. push CS          ;<< ?
  14. pop ES           ;<< ?
  15. ; create stack
  16. mov ax, 0x0000;<< ?
  17. mov ss, ax       ;<< ?
  18. mov sp, 0xFFFF;<< ?


 
à quoi servent donc ces choses là ?
je me suis renseigné sur l'utilité de la pile, mais je ne la reconais pas ici ....
auriez vous une explication claire de ce code (comms détaillés ou autres ..)
 
bref, voilà
 
Assembleur : Nasm 16Bits  
Systeme : PC ...
 
merci beaucoup pour votre (esperée) aide,  
 
++ Tix.


Message édité par tix2 le 05-02-2008 à 22:21:11

---------------
Actuellement : <img src=\\\\\\\"http://www.bencastricum.nl/msn/status.php/26231b22-af9b-4ecf-a5b4-7b12014833d4.png\\\\\\\">
mood
Google
Posté le 05-02-2008 à 22:19:38  profilanswer
 

n°7824
tix2
ALors toi,hein ,je serais ta m
Posté le 09-02-2008 à 00:46:36  profilanswer
 

un petit up ?


---------------
Actuellement : <img src=\\\\\\\"http://www.bencastricum.nl/msn/status.php/26231b22-af9b-4ecf-a5b4-7b12014833d4.png\\\\\\\">
mood
Google
Posté le 09-02-2008 à 00:46:36  profilanswer
 


Aller à :
Ajouter une réponse

  FORUM Syndrome-OC - Jacky-PC


  Programmation


  Autre


  [ASM] problemes ...

 

Hit Parade