Diferencia entre revisiones de «Lenguaje ensamblador»
Contenido eliminado Contenido añadido
m Revertidos los cambios de 201.153.217.21 a la última edición de Richy |
|||
Línea 86:
== Ejemplos de lenguaje ensamblador ==
=== Ejemplo 1 ===
El siguiente es un
<source lang="asm">
.model small
.stack
.data
Cadena1 DB 'Hola Mundo.$'
.code
programa:
mov ax, @data
mov ds, ax
mov dx, offset Cadena1
mov ah, 9
int 21h
end programa
</source>
=== Ejemplo 2 ===
Una selección de instrucciones para una computadora virtual<ref name=wwwPOCA>[http://iiusaedu.com/~murdocca/POCA Principles of Computer Architecture] (POCA) – ARCTools computadora virtual disponible para descarga y ejecución del código, acceso el 24 de agosto de 2005</ref>) con las correspondientes direcciones de memoria en las que se ubicarán las instrucciones. Estas direcciones NO son estáticas. Cada instrucción se acompaña del código en lenguaje ensamblador generado (código objeto) que coincide con la arquitectura de computador virtual, o conjunto de instrucciones [[ISA]].
{| class="wikitable"
! Dir.
! Etiqueta
! Instrucción
! Código máquina<ref>Murdocca, Miles J. y Heuring, Vincent P.:''Principles of Computer Architecture'' (2000), Prentice Hall, ISBN 0-201-43664-7</ref>
|-
|
|
|<tt>.begin</tt>
|
|-
|
|
|<tt>.org 2048</tt>
|
|-
|
|<tt>a_start</tt>
|<tt>.equ 3000</tt>
|
|-
|<tt>2048</tt>
|
|<tt>ld length,%</tt>
|-
|<tt>2064</tt>
|
|<tt>be done</tt>
|<tt>00000010 10000000 00000000 00000110</tt>
|-
|<tt>2068</tt>
|
|<tt>addcc %r1,-4,%r1</tt>
|<tt>10000010 10000000 01111111 11111100</tt>
|-
|<tt>2072</tt>
|
|<tt>addcc %r1,%r2,%r4</tt>
|<tt>10001000 10000000 01000000 00000010</tt>
|-
|<tt>2076</tt>
|
|<tt>ld %r4,%r5</tt>
|<tt>11001010 00000001 00000000 00000000</tt>
|-
|<tt>2080</tt>
|
|<tt>ba loop</tt>
|<tt>00010000 10111111 11111111 11111011</tt>
|-
|<tt>2084</tt>
|
|<tt>addcc %r3,%r5,%r3</tt>
|<tt>10000110 10000000 11000000 00000101</tt>
|-
|<tt>2088</tt>
|<tt>done:</tt>
|<tt>jmpl %r15+4,%r0</tt>
|<tt>10000001 11000011 11100000 00000100</tt>
|-
|<tt>2092</tt>
|<tt>length:</tt>
|<tt>20</tt>
|<tt>00000000 00000000 00000000 00010100</tt>
|-
|<tt>2096</tt>
|<tt>address:</tt>
|<tt>a_start</tt>
|<tt>00000000 00000000 00001011 10111000</tt>
|-
|
|
|<tt>.org a_start</tt>
|
|-
|<tt>3000</tt>
|
|<tt>a:</tt
|
|}
=== Ejemplo 3 ===
Código en lenguaje ensamblador para [[microcontrolador|µC]] [[Intel 8051|Intel 80C51]]:
<source lang="asm">
ORG 8030H
T05SEG:
SETB TR0
JNB uSEG,T05SEG ;esta subrutina es utilizada
CLR TR0 ;para realizar una cuenta de
CPL uSEG ;0,5 segundos mediante la
MOV R1,DPL ;interrupción del timer 0.
MOV R2,DPH
CJNE R2,#07H,T05SEG
CJNE R1,#78H,T05SEG
MOV DPTR,#0000H
RET
</source>
=== Ejemplo 4 ===
Código en lenguaje ensamblador para [[microcontrolador|µC]] [[PIC16F84|16F84]] de [[Microchip (Empresa)|Microchip]]:
<source lang="asm">
ORG 0
Inicio
bsf STATUS,RP0
clrf PORTB
movlw 0xFF
movwf PORTA
bcf STATUS,RP0
Principal
movf PORTA,W
movwf Contador
movf Contador,F
btfsc STATUS,Z
goto PuntoDecimal
sublw d'9'
btfss STATUS,C
END
</source>
== Referencias ==
|