InglésFrancésEspañol

Ad


icono de página de OnWorks

as31 - Online en la nube

Ejecute as31 en el proveedor de alojamiento gratuito de OnWorks a través de Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS

Este es el comando as31 que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.

PROGRAMA:

NOMBRE


as31: un ensamblador Intel 8031/8051

SINOPSIS


as31 [-h] [-l] [-s] [-v] [-Aarg] [-Ffmt] [-Ofile] infile.asm

DESCRIPCIÓN


As31 ensambla infile.asm en uno de varios formatos de salida diferentes. La salida será
en un archivo llamado infile.obj. Se requiere la extensión .asm.

CAMPUS


Las opciones deben aparecer antes del nombre del archivo de entrada. Ambas opciones son opcionales. El texto de
cada bandera debe aparecer en el mismo argumento que la bandera. Por ejemplo, "-Fod" es un valor válido
argumento, pero "-F od" no lo es.

-h Esto hace que el ensamblador imprima un mensaje detallado que describe sus opciones.
El mensaje se escribe con el error estándar.

-l Esta opción le dice al ensamblador que también genere un archivo de listado. Un listado será
colocado en el archivo infile.lst. Donde 'infile' es el archivo que se está ensamblando.
Esta opción puede aparecer en cualquier lugar antes de infile.asm. La opción debe ocurrir aislada
en la línea de comando.

El archivo de listado muestra el código generado por el ensamblador en hexadecimal y hasta 60 caracteres
se conservan del archivo fuente.

-s Esto hace que el ensamblador escriba la salida en la salida estándar.

-v Esto hace que el ensamblador imprima un número de versión en la salida estándar.

-Arg Esta opción especifica una cadena específica de formato que se pasa al formato
generador. Tanto el formato "tdr" como el srecord utilizan esta opción.

-Formato
Esta opción especifica el formato de salida que se utilizará.

Actualmente, las únicas opciones disponibles para esto son:

hex Este formato es el formato Intel HEX que es esperado por una serie de EPROM
programadores y el depurador PAULMON. Para usar con algunos programadores, el
Es posible que la extensión del archivo de salida deba cambiarse a .HEX para ser reconocida por
el programador. No se utiliza una opción. Este formato debe ser el predeterminado si
no se utiliza la opción -F.

tdr Este formato genera un archivo asci de dígitos hexadecimales formateado de tal manera, por lo que
que pueden ser leídos por el depurador de tdr. Se puede especificar un argumento (ver
-Una opción) que pasará una cadena de formato específico al generador de formato.
En este caso, la cadena de argumentos representa un desplazamiento para agregar al
contador de ubicación. Este desplazamiento se especifica en decimal y por defecto es
64 * 1024 (0x10000). Para especificar un desplazamiento de 100, necesitaría "-Ftdr
-A100 "al invocar al ensamblador.

byte Este formato es simplemente una dirección y un byte en cada línea, en ascii. No -A
se utiliza la opción.

od Este formato es similar a la salida de od(1). El formato consta de un
dirección seguida de dieciséis bytes hexadecimales, seguida del equivalente
ASCII. No se utiliza una opción.

srec2, srec3, srec4
El generador srecord es capaz de generar salida con cualquiera de 2, 3,
o direcciones de 4 bytes. La opción -A se puede utilizar para configurar la dirección base
offset, el valor predeterminado aquí es 0x0000 (a diferencia de Colina).

NOTA: Este ensamblador permite expandir los formatos de salida para incluir muchos
diferentes formatos de salida.

-Archivo Esta opción le dice al ensamblador que escriba la salida en un archivo.

ENSAMBLADOR INSTRUCCIONES


Este ensamblador acepta formatos de instrucción estándar 8031/8051. A continuación se muestra una lista de
instrucciones y modos de direccionamiento.

CICLOS DE BYTES DE INSTRUCCIÓN
----------- ----- ------
ACALL dirección11 2 24
AÑADIR A, # data8 2 12
AÑADIR A, @Ri 1 12
AÑADIR A, Rn 1 12
AÑADIR A, directo 2 12
ADDC A, # datos8 2 12
ADDC A, @Ri 1 12
ADDC A, Rn 1 12
ADDC A, directo 2 12
Dirección AJMP 11 2 24
ANL A, # datos8 2 12
ANL A, @Ri 1 12
ANL A, Rn 1 12
ANL A, directo 2 12
ANL C, / bit 2 24
ANL C,! Bit 2 24
ANL C, bit 2 24
ANL directo, # data8 3 24
ANL directo, A 2 12
CJNE @Ri, # data8, rel 3 24
CJNE A, # data8, rel 3 24
CJNE A, directo, rel 3 24
CJNE Rn, # data8, rel 3 24
CLR A 1 12
CLR C 1 12
CLR bits 2 12
CPL A 1 12
CPL C 1 12
Bit CPL 2 12
DA A 1 12
DIC @Ri 1 12
DIC A 1 12
DIC DPTR 1 12
DIC Rn 1 12
DEC directo 2 12
DIV AB 1 48
DJNZ Rn, versión 2 24
DJNZ directo, rel 3 24
INC @Ri 1 12
INC A 1 12
INC DPTR 1 24
INCRn 1 12
INC directo 2 12
Bit JB, rel 3 24
Bit JBC, rel 3 24
JC relativo 2 24
JMP @A + DPTR 1 24
JMP @DPTR + A 1 24
Bit JNB, rel 3 24
Pariente JNC 2 24
JNZ pariente 2 24
JZ pariente 2 24
Dirección LCALL 16 3 24
Dirección LJMP 16 3 24
MOV @Ri, # datos8 2 12
MOV @Ri, A 1 12
MOV @Ri, directo 2 24
MOV A, # datos8 2 12
MOV A, @Ri 1 12
MOV A, Rn 1 12
MOV A, directo 2 12
MOV C, bit 2 12
MOV DPTR, # datos16 3 24
MOV Rn, # datos8 2 12
MOV Rn, A 1 12
MOV Rn, directo 2 24
Bit MOV, C 2 24
MOV directo, # data8 3 24
MOV directo, @Ri 2 24
MOV directo, A 2 12
MOV directo, Rn 2 24
MOV directo, directo 3 24
MOVC A, @A + DPTR 1 24
MOVC A, @A + PC 1 24
MOVC A, @DPTR + A 1 24
MOVC A, @PC + A 1 24
MOVX @DPTR, A 1 12
MOVX @Ri, A 1 24
MOVX A, @DPTR 1 24
MOVX A, @Ri 1 24
MUL AB 1 48
NOP 1 12
ORL A, # datos8 2 12
ORL A, @Ri 1 12
ORL A, Rn 1 12
ORL A, directo 2 12
ORL C, / bit 2 24
ORL C,! Bit 2 24
ORL C, bit 2 24
ORL directo, # data8 3 24
ORL directo, A 2 12
POP directo 2 24
PUSH directo 2 24
RETO 1 24
RETÍ 1 24
RL A 1 12
RL A 1 12
RR A 1 12
CRR A 1 12
SET A 1 12
SETB bit 2 12
SJMP relativo 2 24
SUBB A, # datos8 2 12
SUBB A, @Ri 1 12
SUBA, Rn 1 12
SUBB A, directo 2 12
INTERCAMBIAR A 1 12
XCH A, # datos8 2 12
XCH A, @Ri 1 12
XCH A, Rn 1 12
XCH A, directo 2 12
XCHD A, # datos8 2 12
XCHD A, @Ri 1 12
XCHD A, Rn 1 12
XCHD A, directo 2 12
XRL A, # datos8 2 12
XRL A, @Ri 1 12
XLRL A, Rn 1 12
XRL A, directo 2 12
XRL directo, # data8 3 12
XRL directo, A 2 12

ENSAMBLADOR DIRECTIVAS


As31 incluye las siguientes directivas de ensamblador:

Expr.ORG
Comience a ensamblar en la dirección especificada por la expresión expr. Ocurre un error
si el ensamblador comienza a ensamblar sobre un espacio de direcciones que ha sido previamente
ensamblado en.

.EQU símbolo, expr
Establecer símbolo al valor de expr. El valor de expr debe conocerse durante la primera
pass, cuando se encuentra la línea que contiene el .EQU.

.BYTE expr, expr, ...
Reúna los bytes especificados por la expresión en la memoria. Una cuerda también puede ser
especificado con esta directiva.

.PALABRA expr, expr, ...
Reúna las palabras especificadas por la expresión en la memoria. El orden de bytes
utilizado, es el utilizado por el 8031.

.BANDERA símbolo1, símbolo. [0-7]
Establece el símbolo1 en la dirección de bit especificada por el símbolo. [0-7] expresión. Donde
[0-7] denota un carácter entre 0 y 7. La dirección de bit resultante se comprueba para
vea si es una dirección de bit válida.

.END Esta directiva se ignora.

.SALTAR expr
Agrega el valor de expr al contador de ubicaciones. Se utiliza para reservar un bloque de
datos no inicializados. Expr debe estar en bytes.

LÉXICO Convenciones


- Todos los caracteres que siguen un punto y coma se ignoran hasta que se encuentra una nueva línea.

- Todos los números están predeterminados en decimal, a menos que el número comience con uno de los siguientes:

0x o 0X
Esto indica un número hexadecimal. es decir. 0x00ff

0b o 0B
Esto indica un número binario. (1 y 0). es decir. 0b1100110010

0 Esto indica un número octal. es decir. 0377

- Todos los números están predeterminados en decimal, a menos que el número termine con uno de los siguientes
personajes:

bo B Esto indica un número binario. A menos que se haya utilizado 0x anteriormente. es decir. 1010101b

ho H Esto siempre indica un número hexadecimal, sin embargo, si el primer carácter es
no numérico, entonces se debe especificar 0x o 0. Esto evita confundir
al ensamblador a pensar que un número hexadecimal es un símbolo. Por ejemplo: 0ffh,
0xffh, 0XffH, 20h, 0x20 y 020h son medios para especificar un dígito hexadecimal válido. Pero
los siguientes no son: ffh, 0ff.

d o D Esto obliga a un número a ser decimal. A menos que se haya utilizado 0X. es decir. 129d

o o O Esto hace que el número se interprete como octal. es decir. 377o

- Una constante de carácter se puede ingresar como 'c' donde c es algún carácter. \ b, \ n, \ r,
\ t, \ '\ 0 también son válidos. Una constante de caracteres se puede usar en cualquier lugar donde un entero
valor puede.

- Una cadena se ingresa como un conjunto de caracteres entre comillas dobles "". Una cuerda
solo es válido con la directiva .BYTE. \ b, \ n, \ r, \ t, \ "también son escapes válidos.
Sin embargo, \ 0 no lo es.

- Instrucciones, directivas y símbolos: R0, R1, R2, R3, R4, R5, R6, R7, A, AB,
y C se puede ingresar en mayúsculas o minúsculas sin confusión del ensamblador. Estos
Sin embargo, las palabras no pueden definirse como un símbolo de usuario. Se puede utilizar cualquier símbolo de usuario, y
se conservará el caso. Por tanto, los símbolos de usuario "foo" y "Foo" son diferentes, pero
"addc" es lo mismo que "aDdC".

- Un símbolo puede ser cualquier carácter alfanumérico más el guión bajo ('_').

- Las expresiones se aceptan en la mayoría de los lugares donde se necesita un valor o un símbolo. Un
expresión consta de los siguientes operadores. Todos los operadores evalúan a números enteros
objetos (los operadores de mayor precedencia se enumeran primero):

- Unario menos

& Bit-sabio AND.

| O en bits.

* Multiplicación de enteros.

/ División entera

% De módulo entero

+ Suma de enteros.

- Resta de enteros.

- Además de estos operadores, se puede utilizar un símbolo especial '*' para representar el
contador de ubicación actual.

EJEMPLOS


A continuación se muestra un programa de montaje de muestra.

.org 0
inicio: mov P3, # 0xff; usar fns alternativos en P3
; los leds de P1 están invertidos.
setb F0; escalando
mov A, # 0x01; bit inicial

escribir: cpl A; Escribelo
movimiento P1, A
cabo A
retraso de llamada
jb F0, trepar; escalando de qué manera?

climbdn: rr A; abajo - cambiar a la derecha
jnb ACC.0, escribir; vuelve por más
establecerb F0
ajmp escribir

trepar: rl A; arriba - desplazamiento a la izquierda
jnb ACC.7, escribir; vuelve por más
borrar F0
ajmp escribir
.fin ; esta directiva ignorada.

AUTORES


Ken Stauffer (Universidad de Calgary)[email protected]>
Martin Langer[email protected]>

AS31(1)

Use as31 en línea usando los servicios de onworks.net


Servidores y estaciones de trabajo gratuitos

Descargar aplicaciones de Windows y Linux

Comandos de Linux

Ad