terça-feira, 18 de agosto de 2015



ASSEMBLER ADITION BCD

EN: Program to add the contents of the BC and DE records pairs in BCD and   place the result in result

PT:   Programa para somar os conteudos dos pares de registos BC e DE em BCD e colocar o resultado em result

FR: Programme pour adictioner les paires de registres BC et DE en BCD et placer le résultat dans result



inic:   mov a,e
          add c
          daa
          sta result
          mov a,d
          adc b
          daa
          sta result+1
          mvi a,0
          adc a
          sta result+2
         
          rst 1

_____________EXAMPLES_______________________

when the program run, if BC=2749 and DE=6448,  at the end of program
execution    result has 97, result+1 has 91 and result+2 has  0

_____________

when the program run, if BC=9052 and DE=2914, at the end of program
execution    result has 66, result+1 has 19 and result+2 has 1

  :)


terça-feira, 4 de agosto de 2015



PT: Multiplicação de polinómios
FR: La multiplication des polynômes
EN: Multiplication of polynomials

________________________________________________________________________________

          3+5(2+4)            = 33
          _____________________________________________

          3+5(2+x)            =13+5x
          _____________________________________________
                   
          x(3+2)                 =5x
          _____________________________________________

          (x+2)(x-1)           =x²+x-2
                                                                     x + 2
                                                                X   x  -  1
                                                                    -x  -  2
                                                           x² + 2x        
                                                           x² +   x  -  2



_______________________________________________________________________________


          (3x³-2x²+4x-2)(2x²-x+1)            =6x⁵-7x⁴+13x³-10x²+6x-2

                                               3x³- 2x² + 4x - 2
                                         X           2x²  -   x +1
                                            3x³ -   2x² + 4x - 2
                               - 3x⁴ +  2x³ -   4x² + 2x
                         6x⁵ - 4x⁴ +  8x³ -   4x²               
                         6x⁵ - 7x⁴ +13x³ -10x²  + 6x - 2
          _________________________________________________________________     


          (3x³+x) (x²+2)                        =3x⁵+7x³+2x
                                     
                                            3x³+ 0x² +   x  + 0
                                       X             x² +  0x + 2
                                           6x³ + 0x² +  2x +0
                         3x⁵ + 0x⁴ +  x³ + 0x²          
                         3x⁵         +  7x³          +  2x






______________________________________________________________________________

          (-2x³+2x²+3x-2)(-2x²-3x+2)          =4x⁵+2x⁴-16x³-x²+12x-4

                                                          -2x³ + 2x²+ 3x  -  2
                                                   X              -2x²  - 3x + 2
                                                      -    4x³ + 4x² + 6x  - 4
                                                6x⁴ -   6x³  -  9x² + 6x
                                       4x⁵ -  4x⁴ -   6x³ + 4x²               
                                      4x⁵ + 2x⁴ - 16x³  -   x²  +12x  - 4

         _________________________________________________________________

          (-2x³+x+3)(2x²+3)                          =-4x⁵-4x³+6x²+3x+9

                                                         -2x³ + 0x² +    x + 3
                                                     X            2x² +  0x + 3
                                                       - 6x³  + 0x² +  3x + 9
                                     -4x⁵ + 0x⁴ + 2x³  + 6x²               
                                     -4x⁵          -   4x³  + 6x² +  3x + 9                                              







sábado, 25 de julho de 2015

Assembler 8085 String Copy

Assembler 8085     String Copy


 ;    PROGRAM STRING COPY   STRCPY DO C++

DADOS         EQU 2000h
CODIGO       EQU 3000h

        ORG DADOS
SDEST           DS 10  ; HL  String target
SFONTE        DS 6   ; BC  String source

        ORG CODIGO
BEGIN:       LXI H,SDEST;
                   LXI B,SFONTE

STRCPY:     LDAX B
                   ANA A
                   MOV M,A
                   JZ FIM
                   INX B
                   INX H
                   JMP STRCPY
FIM:           RST 1

_______________________________
              SYMBOL TABLE
 
 BEGIN           3000
 FIM                3011
 SDEST           2000
 SFONTE        200A
 STACK        S 0000
 STRCPY        3006


The string ends at the value 0.
at the following example x means d'ont care.

If the string SFONTE='John'
means SFONTE memory 200A= 'J' , 'o' , 'h' , 'n' , 0 , x
              SDEST memory 2000= x , x , x , x , x , x , x , x , x , x

after we run the program the memory is:
   string SFONTE='John'
   string  SDEST='John'
means SFONTE memory 200A= 'J' , 'o' , 'h' , 'n' , 0 , x
              SDEST memory 2000 = 'J' , 'o' , 'h' , 'n' , 0 , x , x , x , x , x

cool!

quarta-feira, 22 de julho de 2015

ASSEMBLER 8085

;FR    La multiplication par additions successives
;PT    MULTIPLICACAO POR SOMAS SUCESSIVAS
;EN   Multiplication by successive additions

;FR    Le résultat est valable uniquement si moins d'un octet
;PT    O RESULTADO NAO PODE EXCEDER 1 BYTE
;EN   The result is only valid if less than one byte    

DADOS        EQU 2000h
CODIGO       EQU 3000h

                   ORG DADOS
NUM1:        DB 1    
NUM2:        DB 1   
   
       
                  ORG CODIGO
BEGIN:            LXI H,NUM1       ; HL APONTA NUM1
                        LDA NUM2;
                        CMP M                ; instrucctions to put
                        JC CONDICAO    ; the counter
                        MOV A,M            ; with the less number that we have
                        LXI H,NUM2       ; to multiply
CONDICAO:    MOV C,A   
                        INR C   
                        MVI A,0
LOOP:              DCR C
                        JZ FIM
                        ADD M
                        JMP LOOP
          
FIM:                RST 1



EN: The result of multiplying NUM1 by NUM2 is in the accumulator now at the end
FR: Le acumulateur va rester avec le resultat de la multiplication de le NUM1 e NUM2
PT: O resultado da multiplicação de NUM1 pelo NUM2 fica no acumulador 

means:         ça veux dire:          quer dizer:

A=NUM1xNUM2

very nice!



A lampada acesa     :)
     The lit lamp      
La lampe allumée   

It's very nice!   It's simple, ok. I intend to publish more interestings. its the begin.

terça-feira, 21 de julho de 2015

terça-feira, 14 de julho de 2015

FR: Petit programme assembler pour le 8085: Chercher le numero plus grand...

EN: Program assembler for the 8085 processor: Find the upper number...

PT: Programa assembler para o processador 8085: Procurar o maior numero...



; EN: program to find the upper number in a list TABELA of length LEN 
; FR: programme pour trouver le numero plus grand dans une list TABELA de dimension LEN
; PT: programa para encontrar o maior dum array TABELA de dimensao LEN
      

                 ORG 2000h
LEN:         DW 4          
TABELA:   DS 20
MAIOR:     DS 1
        

                  ORG 3000H

                  LXI H,LEN
                  MOV C,M
                  INX H
                  MOV B,M
                  LXI H,TABELA
                  MOV A,M

LOOP2:     INX H
                  DCX B
                  STA MAIOR
                  MOV A,B
                  ORA C
                  LDA MAIOR
                  JZ EXIT

                  CMP M 
IF:             JNC LOOP2

                 MOV A,M
                 MOV D,H
                 MOV E,L
       
FIM_DE_IF:    JMP LOOP2
         
       
EXIT        RST 1