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