08.05.2013 Views

Juego de instrucciones del 80C31

Juego de instrucciones del 80C31

Juego de instrucciones del 80C31

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

11 0026 753485 mov primera+4,#85h ; -123x<br />

12 0029 753520 mov primera+5,#20h ; 32 = -3936 = F0A0h<br />

13 002C 753885 mov primera+8,#85h ; -123x<br />

14 002F 753993 mov primera+9,#93h ; -109 = 13,407 = 345Fh<br />

15 0032 7830 mov R0,#primera<br />

16 0034 86F0 lazo: mov B,@R0 ; trae 1er factor<br />

17 0036 08 inc R0 ; incrementa apuntador<br />

18 0037 E6 mov A,@R0 ; trae 2do factor<br />

19 0038 1144 acall mul2s ; multiplica ambos<br />

20 003A 08 inc R0<br />

21 003B A6F0 mov @R0,B ; salva parte alta <strong>de</strong>l producto<br />

22 003D 08 inc R0<br />

23 003E F6 mov @R0,A ; salva parte baja <strong>de</strong>l producto<br />

24 003F 08 inc R0<br />

25 0040 B83CF1 cjne R0,#03ch,lazo ; termino ?, brinc si no<br />

26 0043 00 nop<br />

27 0044<br />

28 0044 C228 mul2s: clr testigo<br />

29 0046 30F70C jnb NB,otro ; brinca si 1er factor es positivo<br />

30 0049 B228 cpl testigo ; hace testigo 1<br />

31 004B C0E0 push A ; salva Acc en pila<br />

32 004D C5F0 xch A,B ;<br />

33 004F F4 cpl A ; complementa a 1s<br />

34 0050 04 inc A ; complemento a 2s<br />

35 0051 C5F0 xch A,B ; B = negativo <strong>de</strong> B<br />

36 0053 D0E0 pop A ; recupera Acc<br />

37 0055 30E704 otro: jnb NA,mult ; brinca si 2do factor es positivo<br />

38 0058 B228 cpl testigo ; complementa testigo<br />

39 005A F4 cpl A ; complemento a 1s <strong>de</strong> Acc<br />

40 005B 04 inc A ; Acc = negativo <strong>de</strong> Acc<br />

41 005C A4 mult: mul ab ; multiplica dos positivos<br />

42 005D 302812 jnb testigo,fin ; si testigo = 0, OK<br />

43 0060 ; complementa el producto (16 bits) a doses<br />

44 0060 C0E0 push A<br />

45 0062 C5F0 xch A,B<br />

46 0064 F4 cpl A ; complementa a 1s byte alto<br />

47 0065 C5F0 xch A,B<br />

48 0067 D0E0 pop A ; recupera byte bajo<br />

49 0069 F4 cpl A ; complementa a 1s byte bajo<br />

50 006A 2401 add a,#1 ; lo complementa a doses<br />

51 006C C5F0 xch A,B<br />

52 006E 3400 addc A,#0 ; si necesita ajusta byte alto<br />

53 0070 C5F0 xch A,B ; resultado en B:A<br />

54 0072 22 fin: ret<br />

55 0073 end<br />

Ejemplo 4. Cálculo <strong>de</strong>l CRC <strong>de</strong> una ca<strong>de</strong>na ASCIIZ, usando una tabla.<br />

1 0000 ; Calcula el Codigo <strong>de</strong> Redundancia Ciclica (CRC) <strong>de</strong> una ca<strong>de</strong>na<br />

2 0000 CRC1 equ 30h ; RAM interna<br />

3 0000 CRC0 equ CRC1+1<br />

4 0000 org 0<br />

5 0000 801E sjmp 20h<br />

6 0020 org 20h<br />

7 0020 753000 mov CRC1,#0 ; limpia parte alta <strong>de</strong>l resultado<br />

8 0023 753100 mov CRC0,#0 ; limpia parte baja <strong>de</strong>l resultado<br />

9 0026 7435 mov A,#ca<strong>de</strong>na-miPC ; forma sesgo a ca<strong>de</strong>na<br />

10 0028<br />

Profr. Salvador Saucedo 17

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

Saved successfully!

Ooh no, something went wrong!