08.05.2013 Views

Juego de instrucciones del 80C31

Juego de instrucciones del 80C31

Juego de instrucciones del 80C31

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

23 0024 18 otro: <strong>de</strong>c R0 ; incrementa apuntador interno<br />

24 0025 DAF8 djnz R2,lazo1 ; llego al final? salta si no<br />

25 0027 00 nop<br />

26 0028<br />

27 0028 end<br />

Ejemplo 2. Or<strong>de</strong>na números <strong>de</strong> 8 bits con signo.<br />

1 0000 ; or<strong>de</strong>na 7 numeros con signo con metodo burbuja <strong>de</strong> modo ascen.<br />

2 0000 ; intercambia bytes si N exOR V = "1"; N = MSB <strong>de</strong> la resta<br />

3 0000 datos equ 30h<br />

4 0000 org 0<br />

5 0000 75305D mov datos, #93 ; mueve datos a la RAM interna<br />

6 0003 7531D3 mov datos+1,#-45<br />

7 0006 7532A9 mov datos+2,#-87 ; = A9H<br />

8 0009 753310 mov datos+3,#16<br />

9 000C 75346D mov datos+4,#109 ; = 6DH<br />

10 000F 753525 mov datos+5,#37<br />

11 0012 7536BC mov datos+6,#-68 ; mueve el ultimo dato = BCH<br />

12 0015 ; or<strong>de</strong>na...<br />

13 0015 7930 mov R1,#datos ; inicia apuntador externo<br />

14 0017 E9 lazo1: mov A,R1<br />

15 0018 F8 mov R0,A ; inicia apuntador interno<br />

16 0019 08 inc R0<br />

17 001A E7 lazo2: mov A,@R1 ; usa modo indirecto<br />

18 001B C3 clr c ; limpia el carry<br />

19 001C 96 subb A,@R0<br />

20 001D 20D205 jb ov,uno ; brinca si V = 1<br />

21 0020 33 rlc A ; pone bit <strong>de</strong> signo en el carry<br />

22 0021 4008 jc otro ; usar jnc para or<strong>de</strong>nar <strong>de</strong>scen<strong>de</strong>nte<br />

23 0023 8003 sjmp cambia<br />

24 0025 33 uno: rlc A ; pone bit <strong>de</strong> signo en el carry<br />

25 0026 5003 jnc otro ; usar jc para or<strong>de</strong>nar <strong>de</strong>scen<strong>de</strong>nte<br />

26 0028 E7 cambia: mov A,@R1 ; intercambia contenido <strong>de</strong><br />

localida<strong>de</strong>s<br />

27 0029 C6 xch A,@R0<br />

28 002A F7 mov @R1,A<br />

29 002B 08 otro: inc R0 ; incrementa apuntador interno<br />

30 002C B837EB cjne R0,#datos+7,lazo2 ; llego al fin salta si no<br />

31 002F 00 nop<br />

32 0030 09 inc R1 ; incrementa apuntador externo<br />

33 0031 B936E3 cjne R1,#datos+6,lazo1 ; llego al fin salta si no<br />

34 0034 00 nop<br />

35 0035<br />

36 0035 end<br />

Ejemplo 3. Multiplicación <strong>de</strong> dos números <strong>de</strong> 8 bits empleando la ley <strong>de</strong> signos.<br />

1 0000 ; multiplica numeros <strong>de</strong> 8 bits con signo<br />

2 0000 testigo bit 28h ; para usar ley <strong>de</strong> signos<br />

3 0000 NB bit 0f7h ; bit <strong>de</strong> signo <strong>de</strong> B<br />

4 0000 NA bit 0E7h ; bit <strong>de</strong> signo <strong>de</strong> A<br />

5 0000 primera equ 30h<br />

6 0000 org 0<br />

7 0000 801E sjmp 20h<br />

8 0020 org 20h<br />

9 0020 753047 mov primera, #47h ; 71x<br />

10 0023 753155 mov primera+1,#55h ; 85 = 6035 = 1793h<br />

Profr. Salvador Saucedo 16

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!