Un programa para agregar 6 bytes de datos y almacenar la suma y llevar en el conjunto de instrucciones 8085

0

Tengo una pregunta sobre el conjunto de instrucciones 8085. Un programa para agregar 6 bytes de datos almacenados en la memoria a partir de 4500h. debe usar el registro b para guardar cualquier acarreo y finalmente almacenar la suma y transportar en dos ubicaciones de memoria consecutivas 3000h y 3001h.

Escribí lo siguiente para ello.

ACI 4500h
ACI 4501h
ACI 4502h
ACI 4503h
ACI 4504h
ACI 4505h
STA 3000h
HLT

Entonces, esto es correcto e incluso si puede hacer algunas sugerencias para hacerlo mejor, como hacer un bucle en lugar de repetir ACI seis veces y así sucesivamente.

Sugiere cualquier idea que creas que me ayudaría a aprender más sobre este programa.

Gracias de antemano.

    
pregunta BharathYes

1 respuesta

1

¡Ah, más arqueología computacional! Solo le daré una solución aquí, ya que llevaría mucho tiempo solucionar los conceptos erróneos de su código. Estudie y asegúrese de saber exactamente qué hace cada instrucción y por qué.

        ;; HL points to array of bytes to be added
        ;; DE contains 16-bit sum
        ;; C is loop counter

        lxi     h, 4500h        ; point to first byte
        mov     e, m            ; fetch first byte
        mvi     d, 0            ; clear high byte of sum
        mvi     c, 5            ; add 5 more bytes
loop:
        inx     h               ; point to next byte
        mov     a, m            ; fetch next byte
        add     e               ; add to sum
        mov     e, a
        jnc     skip            ; if carry ...
        inr     d               ; increment high byte of sum
skip:
        dcr     c               ; decrement loop counter
        jnz     loop            ; repeat if not done

        ;; Store the result
        xchg                    ; move sum to HL
        shld    3000h

        hlt
    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas