Juego de instrucciones del 80C31
Juego de instrucciones del 80C31
Juego de instrucciones del 80C31
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