Problema : escriba un programa para contar el número de unos en el registro B de uso de número de 8 bits dado para mostrar el recuento de unos donde la dirección inicial es 2000 y el número se almacena en la dirección de memoria 3000 y almacena el resultado en la dirección de memoria 3001 .
Ejemplo –
Algoritmo –
- Mueva 00 para registrar B inmediatamente para contar
- Mueva 08 para registrar C inmediatamente para cambiar
- Cargue los datos de la memoria [3000] en el acumulador
- Rotar ‘A’ a la derecha con acarreo
- Salta si no lleva al paso 7
- De lo contrario, aumente el registro B en 1
- Disminuye el registro C en 1
- Saltar si no es cero al paso 4
- Mover el contenido del registro B al acumulador
- Almacene el contenido del acumulador en la memoria [3001] ( número de conteo )
- Deténgase
Programa –
Memoria | Mnemotécnica | operandos | Comentario |
---|---|---|---|
2000 | IMV | segundo, 00 | [B] <- 00 |
2002 | IMV | C, 08 | [C] <- 08 |
2004 | LDA | [3000] | [A] <- [3000] |
2007 | RAR | girar ‘A’ a la derecha con acarreo | |
2008 | JNC | 200C | salta si no lleva |
200B | USD | B | [B] <- [B] + 1 |
200C | RDC | C | [C] <- [C] – 1 |
200D | JNZ | 2007 | salta si no cero |
2010 | MOVIMIENTO | un, b | [A] <- [B] |
2011 | ESTA | [3001] | número de unos |
2014 | HLT | Deténgase |
Explicación: los registros A, B y C se utilizan para fines generales.
- MVI se usa para cargar un registro dado de 8 bits inmediatamente (instrucción de 2 bytes)
- LDA se usa para cargar el acumulador directamente usando una dirección de 16 bits (instrucción de 3 bytes)
- MOV se utiliza para transferir los datos del acumulador al registro (cualquiera) o registro (cualquiera) al acumulador (1 byte)
- RAR se usa para desplazar ‘A’ a la derecha con acarreo (instrucción de 1 byte)
- STA se usa para almacenar datos del acumulador en la memoria directamente usando una dirección de 16 bits (instrucción de 3 bytes)
- INR se usa para aumentar el registro dado en 1 (instrucción de 1 byte)
- JNC se usa para saltar al paso dado si no hay acarreo (instrucción de 3 bytes)
- JNZ se usa para saltar al paso dado si no es cero (instrucción de 3 bytes)
- DCR se usa para disminuir el registro dado en 1 (instrucción de 1 byte)
- HLT se utiliza para detener el programa