Contactos

Estructura del programa en el ensamblador. Información básica sobre el lenguaje del ensamblador. Bajo la disciplina, "la programación del sistema de la estructura del equipo en el lenguaje del ensamblador contiene

1. Arquitectura PC .............................................. ......................... 5

    1.1. Registros.

    1.1.1 Registros generales.

1.1.2. Registros de segmentos

1.1.3 Registro de banderas

1.2. Organización de memoria.

1.3. Presentación de datos.

1.3.1 Tipos de datos

1.3.2 Presentación de personajes y líneas.

2. Operadores de programas en el ensamblador ..............................................

    1. Equipos del lenguaje del ensamblador.

2.2. Direccionamiento de modos y formatos de comandos de máquinas.

3. Pseudo operadores .............................................. ....................

3.1 Directivas de definición de datos

3.2 Estructura del programa del ensamblador.

3.2.1 Segmentos de software. Directiva asume

3.2.3 Directiva de segmentación simplificada

4. Montaje y diseño del programa ................................

5. Comandos de transferencia de datos ............................................... .........

    5.1 Comandos generales

    5.2 Equipos de trabajo con pila.

5.3 Comandos de E / S

5.4 Comandos de transferencia de direcciones

5.5 Equipos de envío de la bandera

6. Equipos aritméticos .............................................. ...........

    6.1 Operaciones aritméticas sobre números binarios enteros

6.1.1 Adición y resta.

6.1.2 Equipos de incremento y reducen el receptor por unidad.

6.2 Multiplicación y división.

6.3 CAMBIO DE SIGNO

7. Operaciones lógicas .............................................. ................

8. Cambios y cambios cíclicos .............................................. ....

9. Operaciones de cadena .............................................. ..................

10. Lógica y organización de programas ............................................. ..

10.1 transiciones incondicionales

10.2 TRANSICIONES CONDICIONALES

10.4 Procedimientos en el lenguaje del ensamblador.

10.5 interrupciones int.

10.6 software del sistema

10.6.1.1 Leer el teclado.

10.6.1.2 Salida de caracteres en la pantalla

10.6.1.3 Finalización de programas.

10.6.2.1 Selección del modo de visualización

11. Memoria de disco .............................................. ........................ ..

11.2 Mesa de distribución de archivos

11.3 Operaciones de E / S en el disco

11.3.1 Archivo de registro en disco

11.3.1.1 Datos en formato asciz

11.3.1.2 Número de archivo

11.3.1.3 Creación de un archivo de disco

11.3.2 Lectura del archivo de disco

Introducción

El lenguaje del ensamblador es una presentación simbólica del lenguaje de la máquina. Todos los procesos en la computadora personal (PC) al nivel más bajo, de hardware son impulsados \u200b\u200bpor solo comandos (instrucciones) del lenguaje de la máquina. Para resolver verdaderamente los problemas asociados con el equipo (o incluso, además, dependiendo del equipo, como, por ejemplo, mejorando la velocidad del programa), es imposible sin el conocimiento del ensamblador.

El ensamblador es una forma conveniente de comandos directamente para el componente PC y requiere conocimiento de las propiedades y capacidades del chip integral que contiene estos componentes, a saber, el microprocesador de PC. Por lo tanto, el lenguaje del ensamblador está directamente asociado con la organización interna de PC. Y no es casual que casi todos los compiladores de idiomas de alto nivel respaldan el acceso al nivel de programación del ensamblador.

Un elemento de programador de capacitación es necesario para estudiar el ensamblador. Esto se debe al hecho de que la programación del ensamblaje requiere conocimiento de la arquitectura de la PC, que le permite crear programas más eficientes en otros idiomas y combinarlos con los programas de ensamblaje.

El manual aborda los problemas de programación en el lenguaje del ensamblador para las computadoras según los micropestores de Intel.

Este tutorial se dirige a todos los que está interesado en la arquitectura del procesador y los conceptos básicos de la programación en el ensamblador, principalmente desarrolladores del producto de software.

    Arquitectura de PC.

La arquitectura de la computadora es una representación abstracta de una computadora que refleja su organización estructural, de circuitos y lógica.

Todas las computadoras modernas tienen algunas propiedades generales e individuales de la arquitectura. Las propiedades individuales son inherentes solo en un modelo informático específico.

El concepto de una arquitectura de la computadora incluye:

    un esquema estructural de computadoras;

    medios y métodos de acceso a los elementos del esquema estructural EMM;

    establecer y disponibilidad de registros;

    organización y formas de abordar;

    método de representación y formato de los datos informáticos;

    conjunto de comandos de máquina computadora;

    formatos de máquina;

    interrupciones de procesamiento.

Los elementos principales del hardware de la computadora son: una unidad de sistema, un teclado, dispositivos de visualización, unidades, dispositivos de impresión (impresora) y varios medios de comunicación. La unidad del sistema consiste en una placa base, fuente de alimentación y celdas de extensión para juntas adicionales. La placa del sistema contiene un microprocesador, una memoria permanente (ROM), RAM (RAM) y coprocesador.

      Registros.

Dentro del microprocesador, la información está contenida en un grupo de 32 registros (16 usuarios, 16 sistemas), a una forma o que están disponibles para el programador disponible. Dado que el manual está dedicado a la programación para el microprocesador 8088-I486, luego la lógica para iniciar este tema de la discusión de los registros internos del microprocesador disponible para el usuario.

Los registros personalizados son utilizados por un programador para escribir programas. Estos registros incluyen:

    ocho registros de 32 bits (Registros de Propósito General) EAX / AX / AH / AL, EBX / BX / BH / BL, ECX / CX / CH / CL, EDX / DX / DLH / DL, EDX / BP, ESI / SI, EDI / DI, ESP / SP;

    seis 16 -, registros de bits: CS, DS, SS, ES, FS, GS;

    registros de estado y gestión: Registro de banderas EFLAGS / BLAGS, y registro de punteros de comandos EIP / IP.

A través de la línea inclinada hay partes de un registro de 32 bits. El prefijo E (extendido) denota el uso de un registro de 32 metrantes. Para trabajar con bytes, se utilizan registros con prefijos L (BAJO) y H (ALTO), por ejemplo, Al, CH, que denotan los bytes más jóvenes y mayores de partes de 16 bits de los registros.

        Registros de propósito general.

EAX / AX / AH / AL (Registro de Acumulador) - batería. Se utiliza al multiplicar y la división, en las operaciones de E / S y en algunas operaciones sobre líneas.

EBX / BX / BH / BL - registro básico (Registro de base), que se usa a menudo al abordar los datos en la memoria.

ECX / CX / CH / CL - encimera (Conteo de registro), se utiliza como una serie de recuento de repetición de ciclos.

EDX / DX / DH / DL - registro de datos (Registro de datos), utilizado para almacenar datos intermedios. En algunos equipos, el uso es necesario.

Todos los registros de este grupo le permiten recurrir a sus partes "más jóvenes". Uso para autopratizar Puede solo menos partes de 16 y 8 bits de estos registros. Los 16 bits anteriores de estos registros como objetos independientes no están disponibles.

Para admitir comandos de procesamiento de filas que permiten el procesamiento secuencial de cadenas de elementos de tener una longitud 32, 16 u 8 bits:

ESI / SI (Registro de índice de origen) - índice fuente. Contiene la dirección del elemento fuente actual.

EDI / DI (Registro de índice de distinación) - índice receptor (Recipiente). Contiene la dirección actual en la cadena del receptor.

En la arquitectura del micropressor, la estructura de datos se admite en el nivel de software y el nivel de hardware: pila. Para trabajar con una pila hay equipos especiales y registros especiales. Cabe señalar que la pila se llena en la dirección de las direcciones más pequeñas.

ESP / SP (registro de puntero de pila) - registrarse puntero apilar. Contiene el vértice de pila en el segmento de pila actual.

EBP / BP (registro de puntero base) - registro de puntero base de pila. Diseñado para organizar el acceso arbitrario a los datos dentro de la pila.

1.1.2. Registros de segmentos

En el modelo de software de microprocesador hay seis. registros de segmentos: CS, SS, DS, ES, GS, FS. Su existencia se debe a los detalles específicos de la organización y el uso de los microprocesadores Intel. El hardware de microprocesador admite la organización estructural de un programa que consiste en segmentos. Para especificar los segmentos en este momento, actualmente los registros de segmentos están previstos. El microprocesador admite los siguientes tipos de segmentos:

    Segmento de código.Contiene los comandos del programa para acceder a este segmento, se sirve el registro CS (Registro de segmentos de código). registro de código de segmento. Contiene la dirección del segmento con comandos de máquina a la que tiene acceso el microprocesador.

    Segmento de datos. Contiene el programa que se está procesando. Para acceder a este segmento, se atiende el registro DS (Registro de segmentos de datos) - registro de datos de segmentoque almacena la dirección del segmento de datos del programa actual.

    Segmento de pila. Este segmento es un área de memoria llamada pila. El microprocesador organiza la pila de acuerdo con el principio: la primera "vino", la primera "izquierda". Para acceder a la pila sirve como Registro SS (Registro de segmentos de pila) - pila de registro de segmentosque contiene la dirección del segmento de pila.

    Segmento de datos adicionales. Los datos procesados \u200b\u200bpueden estar todavía en tres segmentos de datos adicionales. De forma predeterminada, se supone que los datos están en el segmento de datos. Cuando se utiliza segmentos de datos adicionales, su dirección debe especificarse explícitamente con la ayuda de prefijos especiales de segmentos de redefix en el comando. Las direcciones de segmentos de datos adicionales deben estar contenidos en ES, GS, registros FS (registros de segmentos de datos de extensión).

        Registro de gestión y estado

El microprocesador contiene varios registros que contienen la información de estado como el microprocesador en sí y los programas cuyos comandos se cargan actualmente en el transportador. Eso:

Registro de puntero de comando EIP / IP;

    eflags / banderas banderas Registrarse.

Usando estos registros, puede obtener información sobre los resultados de la ejecución de los comandos y afectar la condición del propio microprocesador.

EIP / IP (registro de puntero de instrucciones) - puntero comandos. El registro EIP / IP tiene un poco de 32 o 16 bits y contiene un cambio del siguiente comando al contenido relativo al contenido del registro de segmento CS en el segmento de comandos actual. Este registro no está disponible directamente, pero el cambio está hecho por los comandos de transición.

Eflags / banderas (registro de bandera) - registrarse banderas. Betty 32/16 bits. Los bits separados de este registro tienen cierto propósito funcional y se llaman banderas. La bandera es un bit que toma el valor de 1 ("Bandera") si se cumple una determinada condición y el valor de 0 ("El indicador se restablece") de lo contrario. La parte más joven de este registro es completamente similar al registro de banderas para I8086.

1.1.3 Registro de banderas

El registro de bandera es de 32 bits, tiene el nombre de EFLAGS (Fig. 1). Los bits de registro separados tienen cierto propósito funcional y se llaman banderas. Cada uno de ellos asignó un nombre específico (ZF, CF, etc.). Los 16 bits menores de EFLAGS representan el registro de banderas de las banderas de 16 bits utilizadas en la implementación de programas escritos para el microprocesador I086 y I286.

Fig.1 Registro de banderas

Algunas banderas son aprobadas por las banderas de las condiciones; Cambian automáticamente al realizar comandos y registrar estas u otras propiedades de su resultado (por ejemplo, es cero). Otras banderas se llaman banderas estatales; Cambian del programa y afectan el comportamiento adicional del procesador (por ejemplo, interrupciones de bloques).

Condiciones de banderas:

Cf (llevar la bandera) - bandera de transporte. TOMA UN VALOR DE 1 Si, cuando apareció la unidad de integración, apareció una unidad de transferencia, no "choque" en la malla de descarga, o si, cuando restaba números sin una señal, el primero de ellos fue menor que el segundo. En los comandos de cambio en CF, se ingresa un bit, lanzado para la cuadrícula de descarga. CF también registra las características del comando de multiplicación.

De (bandera de desbordamiento) - desbordamiento de la bandera. Se instala en 1, si al agregar o restar números enteros con el signo resultó ser el resultado, el módulo es superior al valor permisible (se produjo un desbordamiento de Mantissa y se "subió" a una descarga de señales).

ZF (indicador cero) - bandera de rasguño. Establecido en 1 si el resultado del comando resultó ser igual a 0.

SF (bandera de signo) - bandera firmar. Ubicado en 1, si un resultado negativo resultó en operaciones en los números de los iconos.

PF (bandera de paridad) - bandera paridad. Igual a 1 si el resultado del siguiente comando contiene una cantidad par de unidades binarias. Por lo general, se tiene en cuenta cuando las operaciones de E / S.

Bandera auxiliar de llevar - bandera de transferencia adicional. Corrige las características de la realización de operaciones sobre los números binarios decimales.

Banderas de estado:

DF (indicador de dirección) - bandera de dirección. Establece la dirección de las filas de visualización en comandos de cadena: en DF \u003d 0 líneas se ve "hacia adelante" (desde el principio hasta el final), con DF \u003d 1, en la dirección opuesta.

IOPL (Nivel de privilegio de entrada / salida) - nivel de privilegios de E / S.Se utiliza en el modo protegido del microprocesador, para controlar el acceso a los comandos de E / S, dependiendo del privilegio de la tarea.

NT (tarea anidadada) - bandera de anidación de tareas.Utilizado en el modo de funcionamiento protegido del microprocesador para solucionar el hecho de que una tarea está incrustada en otra.

Bandera del sistema:

If (bandera de interrupción) - bandera de interrupción. En if \u003d 0, el procesador deja de responder a las interrupciones entrantes, cuando si \u003d 1, se elimina la cerradura de interrupción.

TF (bandera de la trampa) - bandera de rastreo. Cuando TF \u003d 1, después de ejecutar cada comando, el procesador realiza una interrupción (con el número 1) de lo que puede usar cuando se depura un programa para su traza.

RF (bandera de currículum) - bandera de renovación. Se utiliza al procesar interrupciones de registros de depuración.

VM (modo virtual 8086) - bandera virtual 8086. El 1-procesador funciona en modo 8086 virtual. El procesador funciona en modo real o seguro.

AC (Cheque de alineación) - bandera de control de alineación. Diseñado para resolver el control de alineación al acceder a la memoria.

      Organización de memoria.

Memoria física a la que se llama el microprocesador. rAM (o dispositivo de almacenamiento operacional - RAM). RAM es una cadena de bytes que tiene su propia dirección única (su número), llamado físico. El rango de valores de direcciones físicas de 0 a 4 GB. El mecanismo de control de memoria es completamente hardware.

El hardware de microprocesador admite múltiples modelos de uso de RAM:

    modelo segmentado. En este modelo, la memoria para los programas se divide en áreas continuas de memoria (segmentos), y el programa en sí solo puede atraer a los datos que se encuentran en estos segmentos;

    modelo de página. En este caso, la memoria RAM se considera como un conjunto de bloques de tamaño fijo de 4 KB. El uso principal de este modelo está asociado con la organización de la memoria virtual, que permite el uso de espacio de memoria para trabajar más que la cantidad de memoria física. Para el microprocesador Pentium, el tamaño de la posible memoria virtual puede alcanzar las 4 tb.

El uso y la implementación de estos modelos dependen del modo de funcionamiento del microprocesador:

    Modo de direcciones reales (modo real). El modo es similar al procesador I8086. Se nos necesita para el funcionamiento de los programas desarrollados para los modelos de procesadores tempranos.

    Modo protegido. En un modo seguro, la posibilidad de procesamiento de información multitarea, protección de la memoria con la ayuda de un mecanismo de privilegio de cuatro niveles y su organización de la página.

    Modo virtual 8086. En este modo, la capacidad de trabajar múltiples programas para I8086. Al mismo tiempo, es posible la operación de los programas de régimen reales.

La segmentación es el mecanismo de direccionamiento que garantiza la existencia de varios espacios específicos independientes. El segmento es independiente, admitido en el nivel de hardware del bloque de memoria.

Cada programa en el caso general puede consistir en cualquier número de segmentos, pero el acceso directo tiene a tres principales: código, datos y pila) y de uno a tres segmentos de datos adicionales. El sistema operativo coloca los segmentos del programa en RAM en ciertas direcciones físicas, después de lo cual coloca los valores de estas direcciones a los registros correspondientes. Dentro del segmento, el programa se refiere a las direcciones en relación con el inicio del segmento linealmente, es decir, a partir de la dirección 0 y terminando con la dirección igual al tamaño del segmento. Dirección relativa o parcialidad,qué microprocesador utiliza para acceder a los datos dentro del segmento, se llama eficaz.

Formación de la dirección física en modo real.

En modo real, el rango de cambios en la dirección física de 0 a 1 MB. Tamaño de segmento máximo 64 KB. Al contactar un específico dirección física La RAM está determinada por la dirección del inicio del segmento y el desplazamiento dentro del segmento. La dirección del segmento del segmento se toma del registro del segmento correspondiente. Al mismo tiempo, el registro del segmento contiene solo los 16 bits anteriores de la dirección física del inicio del segmento. Los cuatro bits secundarios que faltan de una dirección de 20 bits se obtienen cambiando el valor del registro del segmento a la izquierda por 4 descarga. La operación de turno se realiza hardware. El valor de 20 bits resultante es la dirección física actual correspondiente al comienzo del segmento. Es decir dirección física Vale la pena como un par "Segmento: offset", donde "segmento" (segmento) es el primero en ser los primeros bits de la dirección de memoria inicial a la que el personal y el "offset", la dirección de 16 bits de esta celda, contado desde el comienzo de este segmento de memoria (segmento 16 * + el offset da la dirección celular absoluta). Si, por ejemplo, en el registro CS, se almacena el valor de 1234H, luego el par de la dirección 1234H: 507H determina la dirección absoluta igual a 16 * 1234H + 507H \u003d 12340H + 507H \u003d 12847h. Tal pareja se registra en forma de una doble palabra, y (así como para los números) en la forma "invertida": en la primera palabra, hay un cambio, y se coloca el segmento, y cada una de estas palabras es Presentado en la forma "invertida". Por ejemplo, un par de 1234h: 5678h se grabarán así: | 78 | 56 | 34 | 12 |.

Este mecanismo para la formación de la dirección física le permite hacer que el software se mueva, es decir, las direcciones de descarga no específicas en RAM.

En el destino, puede seleccionar comandos (entre paréntesis son ejemplos de códigos Mnemotécnicos de operaciones de IBM PC Tipo Tipo de PC Operaciones de ensamblador):

l Realización de operaciones aritméticas (ADD y ADC - Adición y adiciones con transferencia, Sub y SBB - Resta y resta con préstamo, Mul e IMUL - Multiplicación sin signos y con signo, DIV e IDIV - División sin signo y con signo, CMP - Comparaciones etc.);

l Realización de operaciones lógicas (o, y, no, XOR, prueba, etc.);

l ENVÍO (MOV - Para enviar, XCHG - Intercambio, en entrar en el microprocesador, salida del microprocesador, etc.);

l Transmisión de control (ramas del programa: JMP - Transición incondicional, procedimiento de llamada, devolución de Ret, J * - Transición condicional, control de ciclo de bucle, etc.);

l Línea de caracteres de procesamiento (Movs - Envío, CMPS - Comparación, LODS - Descargas, SCA - Escaneo. Estos comandos se usan generalmente con el representante del prefijo (modificador de repetición);

l interrupciones del programa (interrupciones INT - programa, en - interrupción condicional al desbordamiento, IRT - Regreso de la interrupción);

l Control del microprocesador (ST * y CL * - Instalación y restablecimiento de banderas, HLT - Detener, Esperar - Expectativas, NOP - ROGING, etc.).

Con una lista completa de los comandos de ensamblador, puede familiarizarse en las obras.

Comandos de transferencia de datos

l MOV DST, SRC - Envío de datos (Mover - Enviar desde SRC a DST).

Envíos: un byte (si SRC y DST tienen un formato de byte) o una palabra (si SRC y DST tienen un formato de Word) entre registro o entre registro y memoria, y también registra el valor directo al registro o en la memoria.

Los operandos DST y SRC deben tener el mismo formato: bytes o palabra.

SRC puede ser Tipo: R (Registrarse) - Registrarse, M (Memoria) - Memoria, I (Impedancia) - Valor directo. DST puede ser tipo R, m. Es imposible usar los operandos en un comando: RSGM junto con I; Dos operandos tipo M y dos operandos tipo RSGM). Operando puedo ser una expresión simple:

hacha MOV, (152 + 101B) / 15

El cálculo de la expresión se realiza solo cuando se emite. Las banderas no cambian.

l Push SRC - Pila de revestimiento de la palabra (PUSH - apretado Registro en la pila de İSRC). Coloca los contenidos de SRC en la parte superior de la pila: cualquier registro de 16 bits (incluido el segmento) o dos celdas de memoria que contienen una palabra de 16 bits. Las banderas no cambian;

l Pop DST - Extraer palabras de la pila (POP - Empuje hacia afuera; Cuente de la pila en DST). Elimina la palabra de la parte superior de la pila y lo coloca en DST: cualquier registro de 16 bits (incluido el segmento) o en dos celdas de memoria. Las banderas no cambian.

TEMA 2.5 Conceptos básicos de programación del procesador.

Con un aumento en la duración del programa, se vuelve cada vez más difícil recordar los códigos de varias operaciones. Alguna asistencia a este respecto tiene notación mnemónica.

El lenguaje de codificación simbólico de los comandos se llama ensamblador.

Ensamblador de idiomas - Este es un idioma en el que cada declaración corresponde a exactamente un equipo de máquina.

Montaje Se llama la transformación del programa del lenguaje del ensamblador, es decir, la preparación del programa en el lenguaje de la máquina al reemplazar los nombres simbólicos para los códigos de la máquina, y las direcciones simbólicas, a números absolutos o relativos, así como la inclusión de los programas de la biblioteca y Generación de secuencias de comandos simbólicas especificando parámetros específicos en microcomandos. Este programa generalmente se coloca en la ROM o se introduce en RAM de algún transportista externo.

El lenguaje del ensamblador tiene varias características que lo distinguen de idiomas de alto nivel:

1. Es un cumplimiento mutuamente inequívoco entre las declaraciones y los comandos de la máquina del ensamblador.

2. El programador en el lenguaje del ensamblador tiene acceso a todos los objetos y comandos presentes en la máquina de destino.

La idea de lo básico de la programación en idiomas orientados a la máquina es útil para:



Una mejor comprensión de la arquitectura de la PC y el uso más competente de las computadoras;

Desarrollar más estructuras racionales de algoritmos para resolver tareas aplicadas;

Las posibilidades de ver y ajustar programas ejecutables con extension.exe y.com compilados desde cualquier idioma de alto nivel, en caso de la pérdida de programas de origen (lo que hace que los programas especificados depuren el depurador de depuración y descomplejar su pantalla en el lenguaje del ensamblador);

Hacer programas para resolver las tareas más responsables (el programa compilado en un lenguaje orientado a la máquina suele ser más eficiente, en breve y más rápido interés en 30-60 programas obtenidos como resultado de transmisiones de idiomas de alto nivel)

Para implementar los procedimientos incluidos en el programa básico en forma de fragmentos individuales si no se pueden implementar utilizando un lenguaje de alto nivel, ni el uso de los procedimientos de servicio del sistema operativo.

El programa en el lenguaje del ensamblaje solo puede trabajar en la computadora de una familia, y el programa escrito en el idioma de alto nivel puede trabajar potencialmente en diferentes máquinas.

El alfabeto del lenguaje del ensamblador es caracteres ASCII.

Números solo enteros Distinguir:

Números binarios, terminan en la letra en;

Números decimales que terminan con la letra D;

Números hexadecimales, termina con la letra N.

RAM, Registros, Presentación de datos

Para una serie MP específica, se utiliza un programa individual: el lenguaje del ensamblador.

El lenguaje del ensamblador ocupa una posición intermedia entre los códigos de la máquina y los idiomas de alto nivel. El programa en este idioma es más fácil. El programa de idioma del ensamblador utiliza más racionalmente las capacidades de una máquina en particular (más precisamente con MP) que un programa de alto nivel (que es más sencillo para un programador que el ensamblador). Los principios básicos de la programación en idiomas orientados a la máquina analizarán el ejemplo del lenguaje del ensamblador para MP KR580BM80. Para la programación en el idioma utiliza una técnica general. Las técnicas específicas de las grabaciones de programas están asociadas con las características de la arquitectura y el sistema de equipos del MP de destino.

Sistema de microprocesador modelo de software basado en MP KR580VM80

Modelo de software MPS de acuerdo con la Figura 1

MP Puerta de memoria

S. Z. C.A. pag. C.

Foto 1

Desde el punto de vista del programador, MP KR580BM80 tiene el siguiente software y registros asequibles.

PERO- Batería de registro de 8 bits. Es el registro principal de MP. Cualquier operación realizada en Allu asume la colocación de uno de los operandos que se procesarán en la batería. El resultado de la operación en All también se almacena generalmente en A.

B, c, d, e, h, l - Registros de uso general de 8 bits (RON). Memoria interna MP. Diseñado para almacenar información procesada, así como los resultados de la operación. Al procesar palabras de 16 bits de registros, BC, DE, HL se forman pares, y el registro dual se llama la primera letra - B, D, H. En el par de registros, el primer registro es el primer registro. Las propiedades especiales tienen los registros H, L utilizados para almacenar datos y para el almacenamiento de direcciones de 16 bits de las celdas de RAM.

Florida- Registro de banderas (registro de signos) Registro de 8 bits, en el que se conservan cinco signos del resultado de la realización de operaciones aritméticas y lógicas en MP. Formato de FL de acuerdo con el dibujo.

La descarga con (CY - LLEVE): la transferencia se establece en 1 si hubo una transferencia del byte de descarga más antiguo al realizar operaciones aritméticas.

La descarga P (paridad) es la paridad, se establece en 1 si el número de unidades en la descarga del resultado es incluso.

La cantidad de la CA es una transferencia adicional, diseñada para almacenar el valor de transferencia del resultado del resultado más joven.

La descarga z (cero) se establece en 1 si el resultado de la operación es 0.

La descarga S (signo) se establece en 1, si el resultado es negativo, y en 0, si el resultado es positivo.

Sp.- El puntero de la pila, el registro de 16 bits, está diseñado para almacenar la dirección de la celda de memoria, donde se registró el último ingresado en la pila de bytes.

ordenador personal - Medidor de software (Contador de comandos), registro de 16 bits, diseñado para almacenar la dirección del siguiente ejecutable del comando. Los contenidos del medidor de comandos aumentan automáticamente en 1 inmediatamente después de la muestra del siguiente byte del comando.

En el área de memoria inicial de la dirección 0000n - 07FF, se ubican los programas de control y demostración. Esta es la región de ROM.

0800 - KAFF - DIRECTORES DE ÁREA PARA REGISTRAR LOS PROGRAMAS EN ESTUDIO. (RAM).

0V00 - 0VV0 - Direcciones de área para la grabación de datos. (RAM).

0v0 - la dirección inicial de la pila. (RAM).

La pila es un área de RAM especialmente organizada, destinada al almacenamiento temporal de datos o direcciones. El número grabado en la pila se recupera primero. Pila Pointer almacena la dirección de la última celda de la pila, en la que se registra la información. Cuando llame a una subrutina, la dirección de la dirección de retorno se guarda automáticamente en la pila. Como regla general, al comienzo de cada subprograma, los contenidos de todos los registros involucrados en su ejecución se almacenan en la pila, y al final de la subrutina los restauran de la pila.

Formato de datos y ensamblador de estructura de idioma

La memoria del MP KR580BM80 es una matriz de palabras de 8 personas, llamadas bytes, cada byte tiene su propia dirección de 16 bits que determina su posición en la secuencia de celdas de memoria. MP puede abordar 65536 bytes de memoria, que pueden contener tanto ROM como RAM.

Formato de datos

Los datos se almacenan en la memoria como palabras de 8 bits:

D7 D6 D5 D4 D3 D2 D1 D0 D0

El bit más joven es un poco 0, el mayor - bit 7.

El equipo se caracteriza por un formato, es decir, el número de descargas asignadas para ello, que se dividen en ciertos campos funcionales.

Formato del equipo

Los comandos MP KR580VM80 tienen un formato de dos o tres años. Los comandos multibales deben colocarse en los Yaps vecinos. El formato del equipo depende de las características de la operación que se realiza.

El primer byte del comando contiene un código de operación registrado en forma Mnemonic.

Define el formato del comando y las acciones que mp se debe hacer en los datos durante su ejecución, y el método de direccionamiento, y también puede contener información sobre el hallazgo de datos.

En la segunda y tercera bytes puede haber datos sobre los cuales las operaciones, o las direcciones indican la ubicación de los datos. Los datos sobre los cuales se realizan las acciones se denominan operandos.

El formato de un comando de una sola ruta de acuerdo con la Figura 2

Figura 4.

En los comandos en el lenguaje del ensamblador, el código de operación tiene una forma abreviada de escribir palabras en inglés: designación mnemónica. Mnemonica (de la Mnemotécnica griega: el arte de la memorización) hace que sea más fácil recordar los comandos por su propósito funcional.

Antes de la ejecución, el programa de origen se traduce utilizando un programa de transmisión llamado ensamblador, al idioma de las combinaciones de código: el lenguaje de la máquina, en este formulario se coloca en la memoria del MP y luego se usa al ejecutar el comando.


Métodos de direccionamiento

Todos los códigos de operando (entrada y salida) deben estar ubicados en algún lugar. Pueden estar en registros internos de MP (opción más conveniente y rápida). Se pueden ubicar en la memoria del sistema (la opción más común). Finalmente, pueden estar en dispositivos de E / S (el caso más raro). La definición de la posición del operando se realiza mediante el código de comando. Hay diferentes métodos con los que el código de comando puede determinar dónde tomar el operando de entrada y dónde colocar el operando de salida. Estos métodos se denominan métodos de direccionamiento.

Para MP KR580VM80, hay los siguientes métodos de direccionamiento:

Directo;

Registrarse;

Indirecto;

Manchado.

Inmediato el direccionamiento asume que el operando (entrada) está en la memoria directamente en el código de comando. El operando suele ser una constante que debe enviarse en algún lugar, a algo que agregar, etc. Los datos están contenidos en la segunda o en la segunda y tercera bytes del comando, y el byte de datos más jóvenes está en la segunda mitad del equipo. , y el mayor, en los terceros equipos pagados.

Derecho (Es absoluto) El direccionamiento supone que el operando (entrada o salida) está en la memoria en la dirección, cuyo código se encuentra dentro del programa inmediatamente en el código de comando. Utilizado en comandos de tripite.

Registrarse el direccionamiento sugiere que el operando (entrada o salida) está en el registro interno de MP. Utilizado en comandos de un solo byte

Indirecto (implícito) El direccionamiento sugiere que en el registro interno MP no es el propio operando, y su dirección en la memoria.

Staine el direccionamiento sugiere que el comando no contiene la dirección. Direccionamiento a celdas de memoria en los contenidos del registro de 16 bits SP (puntero de la pila).

Sistema de equipo

El sistema de comandos MP es una lista completa de acciones elementales que pueden producir MP. El MP controlado por estos comandos realiza acciones simples, como las operaciones elementales aritméticas y lógicas, la transferencia de datos, la comparación de dos valores, etc. El número de MP comanda KR580BM80 - 78 (teniendo en cuenta las modificaciones 244).

Distinguir los siguientes grupos de equipos:

Transmisión de datos;

Aritmética;

Teaser del cerebro;

Comandos de transición;

Comandos de E / S, control y pila.


Símbolos y abreviaturas utilizadas en la descripción de los comandos y programas de programación.

Símbolo Abreviatura
Addr Dirección de 16 bits
Datos. Datos de 8 bits
DATOS 16. Datos de 16 bits
Puerto. Dirección de 8 bits de UVV (dispositivos de E / S)
Byte 2. Equipo de segundo byte
Byte 3. Equipo de tercer byte
R1, R2 Uno de los registros: a, b, c, d, e, h, l
RP. Uno de los pares de registro: B - Especifica un par de sol; D - Especifica un par de DE; H - especifica un par de hl
Rh. Registro de primer par
Rl Segundo registro de pareja
Λ Multiplicación lógica
V. Adición lógica
Adición del módulo dos.
METRO. La celda de memoria, cuya dirección establece el contenido del par de registro HL, es decir, M \u003d (HL)

Trabajo de curso

Bajo la disciplina "Programación del sistema"

Tema №4: "Resolver tareas para procedimientos"

Opcion 2.

Universidad Estatal de Siberia Oriental

Tecnología y gestión.

____________________________________________________________________

Colegio tecnológico

LA TAREA

para los cursos

Disciplina:
Tema: Resolver tareas para procedimientos.
Artista (s): Glavinskaya Arina Aleksandrovna
Líder: Dambaevaseegma Viktorovna
Resumen del trabajo: estudio de subprogramas en el lenguaje del ensamblador,
Resolviendo tareas utilizando subrutinas.
1. Parte teórica: información básica sobre el lenguaje del ensamblador (conjunto
Equipos, etc.), organización de subprogramas, métodos de transmisión de medicamentos.
en subrutinas
2. Parte práctica: desarrolle dos subprogramas, uno de los cuales convierte cualquier carta dada al título (incluidas las letras rusas), y el otro convierte la letra a la línea.
Convierte cualquier carta dada al título, y el otro convierte la letra a la línea.
Convierte la letra a la línea.
Términos de ejecución del proyecto a través:
1. La parte teórica es del 30% en 7 semanas.
2. Parte práctica - 70% a las 11 semanas.
3. Protección - 100% a las 14 semanas.
Requisitos para el registro:
1. El cálculo y la nota explicativa del proyecto de intercambio deben presentarse en
Copias electrónicas y sólidas.
2. El informe del informe debe tener al menos 20 páginas de escritura a máquina sin aplicaciones contables.
3. RPZ se emite de acuerdo con GOST 7.32-91 y firmado por el gerente.

Gerente __________________

Artista __________________

Fecha de emisión " 26 " septiembre 2017 GRAMO.


Introducción 2.

1.1 Información básica sobre el lenguaje del ensamblador. 3.

1.1.1 Conjunto de comandos. cuatro

1.2 Organización de subrutinas en el lenguaje del ensamblador. cuatro

1.3 Métodos para transferir parámetros en subrutinas. 6.

1.3.1 Transferencia de parámetros a través de registros .. 6

1.3.2 Transferencia de parámetros a través de la pila. 7.

2 sección práctica .. 9

2.1 Configuración del problema. nueve

2.2 Descripción del problema del problema. nueve

2.3 Prueba del programa .. 7

Conclusión. ocho

Referencias .. 9


Introducción

Es bien sabido que es difícil programar en el ensamblador. Como saben, hay muchos idiomas diferentes. nivel altoEso le permite pasar mucho menos esfuerzo al escribir programas. Naturalmente, la pregunta surge cuando el programador puede necesitar usar el ensamblador al escribir programas. Actualmente, puede especificar dos áreas en las que el uso del lenguaje del ensamblador está justificado, y con frecuencia es necesario.

Primero, estos son los llamados programas del sistema dependientes de la máquina, generalmente administran varios dispositivos informáticos (dichos programas se denominan controladores). Estos programas del sistema utilizan comandos especiales de máquinas que no necesitan aplicarse en ordinarias (o como dicen aplicado) Programas. Estos comandos son imposibles o muy difíciles de establecer en el lenguaje de alto nivel.

El segundo área de aplicación del ensamblador se asocia con la optimización de la ejecución del programa. Muy a menudo, los traductores de programas (compiladores) con lenguajes de alto nivel dan un programa muy ineficiente en la máquina. Esto generalmente se relaciona con un programa computacional, en el que la mayoría del tiempo se realiza muy pequeño (alrededor del 3-5%) del programa (ciclo principal). Para resolver este problema, se pueden usar los llamados sistemas de programación multilingüe que le permiten registrar partes del programa en diferentes idiomas. Normalmente, la parte principal del programa se registra en el lenguaje de programación de alto nivel (Fartran, Pascal, C, etc.), y el tiempo de ejecución crítico del programa está en el ensamblador. La velocidad de todo el programa puede aumentar significativamente. A menudo, esta es la única forma de hacer que el programa dé el resultado para un tiempo aceptable.

El propósito de este curso de curso es obtener habilidades prácticas para trabajar la programación en el lenguaje del ensamblador.

Tareas de trabajo:

1. Estudiar la información básica sobre el lenguaje del ensamblaje (estructura y componentes del programa del ensamblador, formato del equipo, la organización de las subrutinas, etc.);

2. Examine los tipos de operaciones de bits, el formato y la lógica de la operación de los comandos de ensamblaje lógico;

3. Resuelva la tarea individual de aplicar subrutinas en el ensamblador;

4 .. Formule la conclusión sobre el trabajo realizado.

1 sección teórica

Información básica sobre Assmbler

El ensamblador es un lenguaje de programación de bajo nivel, que es un formato para los comandos de la máquina de grabación, conveniente para la percepción humana.

Los comandos de lenguaje del ensamblador son uno de uno en uno correspondientes a los equipos del procesador y, de hecho, son una forma simbólica conveniente de grabación (mnemokode) de los comandos y sus argumentos. Además, el lenguaje del ensamblador proporciona abstracciones básicas de software: vinculando las partes del programa y los datos después de las etiquetas con nombres y directivos simbólicos.

Las directivas del ensamblador le permiten incluir bloques de datos en el programa (descrito explícitamente o leído del archivo); repetir un cierto fragmento del número especificado de veces; compilar un fragmento por condición; Establecer la dirección de ejecución del fragmento, cambie los valores de las etiquetas durante el proceso de compilación; Use definiciones macro con parámetros y otros.

Ventajas y desventajas

· La cantidad mínima de código redundante (uso de un número menor de comandos y referencias a la memoria). Como resultado, tamaño de alta velocidad y programas más pequeños;

· Grandes volúmenes de código, una gran cantidad de tareas menores adicionales;

· Código de falta de lectura, dificultad para respaldar (depuración, agregar características);

· La dificultad de implementar paradigmas de programación y cualquier otra convención compleja, la complejidad del desarrollo conjunto;

· Menos cantidades de bibliotecas disponibles, su pequeña compatibilidad;

· Acceso inmediato al equipo: Puertos de E / S, Registros de Procesadores Especiales;

· Máximo "FIT" para la plataforma deseada (el uso de instrucciones especiales, características técnicas de "hierro");

· Infecciones a otras plataformas (excepto compatibles con binarias).

Además de las instrucciones, el programa puede contener directivas: comandos que no se envían directamente a las instrucciones de la máquina y los administradores del compilador. El conjunto y la sintaxis diferirán significativamente y dependerán de la plataforma de hardware, sino del compilador utilizado (generando dialectos de idiomas dentro de una familia de arquitecturas). Como conjunto, las directivas se pueden asignar:

· Determinación de datos (constantes y variables);

· Gestión del programa del programa en memoria y parámetros del archivo de salida;

· Configuración del modo compilador;

· Todo tipo de abstracción (es decir, elementos de lenguajes de alto nivel), desde los procedimientos y funciones de registro (para simplificar la implementación del paradigma de la programación de procedimientos) a las estructuras y ciclos condicionales (para el estructigm de la programación estructural);

· Macros.

Conjunto de comandos

Los comandos típicos del lenguaje del ensamblador son:

· Comandos de transferencia de datos (MOV, etc.)

· Equipos aritméticos (agregar, sub, imul, etc.)

· Operaciones lógicas y lotes (o, y, XOR, SHR, etc.)

· Equipos de gestión de ejecución del programa (JMP, Loop, Ret, etc.)

· Comandos de llamadas de interrupción (a veces se refieren a comandos de control): int

· Comandos de E / S en Puertos (IN, OUT)

Para microcontroladores y microcomputadores también se caracterizan por el control de los comandos y la transición por condición, por ejemplo:

· JNE - Ir si no es igual;

· JGE - Ir, si es más o igual.



¿Te gustó el artículo? Compártelo