Escribir Un Programa en Ensamblador

download Escribir Un Programa en Ensamblador

of 12

Transcript of Escribir Un Programa en Ensamblador

  • 8/16/2019 Escribir Un Programa en Ensamblador

    1/12

    1. Escribir un programa en ensamblador que muestre un mensaje porpantalla mediante interrupciones:

    2.3. ;------------------------------------------------------------------------------

    4. ;Defnicion del segmento de datos5. ;------------------------------------------------------------------------------6. DATOS SEGMET!.". sal#do d$ %&ola m#ndo'''%(%)%*.1+. DATOS EDS11.12. ;------------------------------------------------------------------------------13. ;Defnicion del segmento de codigo14. ;------------------------------------------------------------------------------15. ,ODE SEGMET16. ass#me cscode(dsdatos

    1!.1". STAT /O,1*. mo0 a(datos ;2+. mo0 ds(a ;nicialia21.22. mo0 d(oset sal#do ;,aga la dieccion del sal#do23. mo0 a(* ;O7cion 8#e 0a a se0i a la inte#7cion 21 7aa24. ;indica 8#e de$e mosta 7o 7antalla el oset25. ;8#e a9 en D: asta 8#e enc#ente el caacte )26. int 21 ;nte#7cion 8#e lo mostaa 7o 7antalla2!.2". mo0 a(4,++ ;2*. int 21 ;Temina el 7ogama

    3+.31. STAT ED/32.33. ,ODE EDS34. ED STAT

    35.

    36. Escribir un programa en ensamblador que muestre un mensaje porpantalla accediendo a la memoria de video (0B800h):

    3!.3". ;------------------------------------------------------------------------------

    3*. ;Defnicion del segmento de datos4+. ;------------------------------------------------------------------------------41. DATOS SEGMET42. sal#do d$ %&ola m#ndo'''%43. DATOS EDS44.45. ;------------------------------------------------------------------------------46. ;Defnicion del segmento de 7ila4!. ;------------------------------------------------------------------------------4". /

  • 8/16/2019 Escribir Un Programa en Ensamblador

    2/12

    4*. D> 4+ D?/@+5+. /#cle 8#e se encagaa de ecoe los 2+++*". ;caactees de la 7antalla 7aa lim7iala**. mo0 al(IsiJ1++. mo0 a(1$ ;Condo a#l( letas $lancas1+1. mo0 esIdiJ(a1+2. inc si ;/asamos a a7#nta a la sig#iente leta del sal#do1+3. inc di

  • 8/16/2019 Escribir Un Programa en Ensamblador

    3/12

    1+4. inc di1+5. loo7 $Hsal#do1+6.1+!.1+". mo0 a(4,++ ;1+*. int 21 ;Temina el 7ogama11+.111. STAT ED/112.113. ,ODE EDS114. ED STAT

    115.

    116. Este programa pide el nombre al usuario y lo muestra porpantalla:

    11!.11". ;------------------------------------------------------------------------------11*. ;Defnicion del segmento de datos12+. ;------------------------------------------------------------------------------121. DATOS SEGMET122. mensae d$ %Eecicios dis7oni$les en

    LLL.0ictosance2.net%123. 7eg#ntaHnom$e d$ %,#al es t# nom$e %124. nom$e d$ 64 D?/@+125. DATOS EDS126.12!. ;------------------------------------------------------------------------------12". ;Defnicion del segmento de 7ila12*. ;------------------------------------------------------------------------------13+. /

  • 8/16/2019 Escribir Un Programa en Ensamblador

    4/12

    154. mo0 es(a155. ;Cin de las inicialiaciones156.15!. ;

  • 8/16/2019 Escribir Un Programa en Ensamblador

    5/12

    2+!. int 212+".2+*. mo0 $(+21+.211. m#estaHnom$e212. mo0 dl(nom$eI$K2J213. mo0 a(2214. int 21 ;Esci$i #n caacte del nom$e215. inc $216. cm7 $l(nom$eI1J ;,om7aa con el n#meo de caactees21!. ne m#estaHnom$e21".21*. mo0 a(4,++ ;22+. int 21 ;Temina el 7ogama221.222. STAT ED/223.224. ,ODE EDS225. ED STAT

    226.

    22!. El mismo programa que antes, pero ahora con llamadas afunciones:

    22".22*. ;------------------------------------------------------------------------------23+. ;Defnicion del segmento de datos231. ;------------------------------------------------------------------------------232. DATOS SEGMET233. mensae d$ %Eecicios dis7oni$les en

    LLL.0ictosance2.net%234. 7eg#ntaHnom$e d$ %,#al es t# nom$e %

    235. nom$e d$ 256 D?/@+236. DATOS EDS23!.23". ;------------------------------------------------------------------------------23*. ;Defnicion del segmento de 7ila24+. ;------------------------------------------------------------------------------241. /

  • 8/16/2019 Escribir Un Programa en Ensamblador

    6/12

    25!.25". ;------------------------------------------------------------------------------25*. ; /ocedimiento inicial26+. ;------------------------------------------------------------------------------261. STAT /O,262.263. call inicialiaHseg ;nicialia los egistos de segmento264. call lim7iaH7antalla ;

  • 8/16/2019 Escribir Un Programa en Ensamblador

    7/12

    31+. 7#s a ;G#ada en la 7ila las 0aia$les 8#e 8#eemos311. 7#s c ;conse0a 7aa c#ando salgamos de la N#ncion312.313. mo0 a(+>"++ ;En esta dieccion comiena la memoia de

    0ideo314. mo0 es(a ;

  • 8/16/2019 Escribir Un Programa en Ensamblador

    8/12

    362. inc di363. loo7 $Hsal#do364.365. 7o7 es366. 7o7 c36!. 7o7 a36".36*. et3!+.3!1. m#estaHmensae end73!2.3!3. ;------------------------------------------------------------------------------3!4. ; 7ideHnom$e3!5. ;3!6. ; in3!!. ; o#t3!". ; macaca D( S( D:3!*. ; mae /ide el nom$e al #s#aio 7aa 8#e lo intod#ca 7o

    7antalla3"+. ;3"1. ;------------------------------------------------------------------------------3"2. 7ideHnom$e 7oc nea3"3.3"4. 7#s a3"5. 7#s c3"6. 7#s es3"!.3"".3"*. ;Mensae al #s#aio 7aa 8#e intod#ca s# nom$e3*+. mo0 si(oset 7eg#ntaHnom$e3*1. mo0 di(@"+F12K1+F2 ;#cle 8#e se encagaa de ecoe los 2+++3*5. ;caactees de la 7antalla 7aa lim7iala3*6. mo0 al(IsiJ3*!. mo0 a(1$ ;Condo a#l( letas $lancas3*". mo0 esIdiJ(a3**. inc si ;/asamos a a7#nta a la sig#iente leta del sal#do4++. inc di4+1. inc di4+2. loo7 $H7ideHnom$e4+3.4+4. ;Almacenamos el nom$e4+5. mo0 a(+A4+6. mo0 d(oset nom$e

    4+!. mo0 nom$eI+J(64 ;Maimo n#meo de caactees4+". int 214+*.41+. 7o7 es411. 7o7 c412. 7o7 a413.414. et415.

  • 8/16/2019 Escribir Un Programa en Ensamblador

    9/12

    416. 7ideHnom$e end741!.41". ;------------------------------------------------------------------------------41*. ; m#estaHnom$e42+. ;421. ; in nom$e contiene el nom$e de #s#aio 8#e se a intod#cido422. ; o#t423. ; macaca D( S424. ; mae M#esta el nom$e al #s#aio 7o 7antalla425. ;426. ;------------------------------------------------------------------------------42!. m#estaHnom$e 7oc nea42".42*. 7#s a43+. 7#s c431. 7#s es432.433. mo0 a(+>"++434. mo0 es(a435. o d(d436. mo0 si(oset nom$eK243!. mo0 di(@"+F12K31F2 ;

  • 8/16/2019 Escribir Un Programa en Ensamblador

    10/12

    46".46*. dato d$ 3 ;#meo del 8#e calc#laemos s# Nactoial4!+.4!1. DATOS EDS4!2.4!3. ;------------------------------------------------------------------------------4!4. ;Defnicion del segmento de 7ila4!5. ;------------------------------------------------------------------------------4!6. /

  • 8/16/2019 Escribir Un Programa en Ensamblador

    11/12

    522. mo0 a(datos523. mo0 ds(a524. mo0 a(7ila525. mo0 ss(a526. mo0 a(eta52!. mo0 es(a52".52*. et53+.531. inicialia end7532.533. ;------------------------------------------------------------------------------534. ; calc#laHNactoial535. ;536. ; in ,< contiene el dato53!. ; o#t De0#el0e en A: el es#ltado de calc#la el Nactoial53". ; macaca A:( ,:53*. ; mae nicialia los egistos de segmento 9 el 7#nteo de 7ila54+. ;541. ;------------------------------------------------------------------------------542. calc#laHNactoial 7oc nea543.544. mo0 a(1545. o c(c546. cm7 c(+ ;Si el n#meo es +54!. e fn ;teminamos54".54*. Nacto55+. m#l c551. dec c552. ne Nacto553.554. fn

    555. et556.55!. calc#laHNactoial end755".55*. ;------------------------------------------------------------------------------56+. ; m#estaHnom$e561. ;562. ; in nom$e contiene el nom$e de #s#aio 8#e se a intod#cido563. ; o#t564. ; macaca D( S565. ; mae M#esta el 0alo del Nactoial 7o 7antalla566. ;56!. ;------------------------------------------------------------------------------

    56". m#estaHNactoial 7oc nea56*.5!+. 7#s a5!1. 7#s c5!2. 7#s es5!3.5!4. mo0 a(+>"++5!5. mo0 es(a ;A7#nta a la memoia de 0ideo5!6. mo0 dl(Nactoial

  • 8/16/2019 Escribir Un Programa en Ensamblador

    12/12

    5!!. mo0 di(@"+F12K31F2 ;