View
217
Download
0
Category
Preview:
Citation preview
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 ;
Recommended