Está en la página 1de 23

TEMA DE LA SESIÓN 02

El sistema computacional
• Componentes
• Ejecución de programas
• Estructura de interconexión
• Sistema de buses

LOGRO DE LA SESIÓN
“Al finalizar la sesión de aprendizaje el estudiante
identifica las estructuras de interconexiones en él
mainboard, implementando líneas de código
asembler para gestionar la memoria del computador”
LENGUAJE ENSAMBLADOR
CON EMU8086
1. LENGUAJE ENSAMBLADOR

2. Software EMU8086
El emu8086 es un emulador del microprocesador 8086 (Intel o AMD compatible) con assembler integrado.
Dado que en un entorno emulado de microprocesador no es posible implementar una interfaz real de
entrada/salida, el emu8086 permite interfacear con dispositivos virtuales y emular una comunicación con el
espacio de E/S.

- Instalación: descarga de EMU806


- Descripción de EMU8086
- Descripción de los REGISTROS:
- Org 100h: Indica al ensamblador que continúe el ensamblador a partir de la dirección dada por el
argumento, en este e caso 100H. Es el inicio de un programa assembler.
- Ret: Instrucción de retorno. Si lo ponemos al final del código, nos retorna al sistema operativo, es decir
finaliza el programa. Si se le pone al final de una función, nos retorna a la línea de código siguiente al
llamado.
- Mov: Su propósito es la transferencia de datos entre registros de procesador o registro de memoria. Mov
tiene ciertas limitaciones. No admite cualquier pareja de operandos
Sintaxis: Mov destino, origen
- Reglas:
o No se puede mover de memoria a memoria
o No se pueden cargar registros de segmento en direccionamiento inmediato
o No se puede mover a CS
o Nota:Tampoco se puede mover un registro de menor tamaño a un registro de mayor tamaño. Si
intentamos mover BL (parte baja de BX, de tamaño 8 bits) en AX (registro de 16 bits), el
ensamblador nos dirá que eso no se puede, y que no existe ningún código de operación para
eso.
Ejercicios:

Programa 01:

Org 100h

Mov ax, bl

Ret

ORG 100H

MOV AX,BL ; BL→ media palabra de BX

RET

Programa 02:

Org 100h

Mov ax, bx

Ret

Programa 03: Vamos a probar cargando valores de los sistemas numéricos, vamos a cargar el valor 27 decimal en
el registro AH.

Org 100h

mov AH, 27 ; mov destino, origen

Ret

Programa 04: Cargar el valor 1101010 en binario en el registro BL .


Org 100h

mov CH, 1101010b ; mov destino, origen

Ret

Programa 05: Cargar el valor 3678 en octal en el registro CH

Org 100h

mov CH, 3678o ; mov destino, origen

Ret
Error

Programa 06: Se quiere cargar el valor CADAh en hexadecimal en elRegistro DX

Org 100h

mov DX, CADAh ; mov destino, origen

Ret

Org 100h

mov DX, 0CADAh ; mov destino, origen

Ret

Programa 07: Se decide c Argar 2 valores → 15 decimal en el registro CH y 1101 en binario en el registro DL

Org 100h

mov CH, 15

mov DL, 1101b

Ret

Programa 08: Se decide cargar a AH el valor 28h, luego usando la interrupción mov copiar el valor AH al registro
CH

Org 100h

mov AH, 28h

mov DH, AH

Ret

CARACTERES ASCII

Programa 09: Colocaremos los simbolos + -

Org 100h

mov AX, “+”

mov BX, “-“

Ret

Programa 10:

Org 100h

mov AX, 16h

mov BX, [101h]

Ret

Nota:
[] → lo que haya en la dirección

Programa 11:

Org 100h

mov AH, 7Ah

mov BL, 99

mov CL, 11001111b

mov DH, [102h]

mov AX, 100

mov BX, “A”

mov CX, 0ABCDh

mov DX, 645o

ret
Programa 12: Sumar los valores 5 y 4

ORG100h

moval,5 ;cargamosalregistroalelvalorde5
movbl,4 ;cargamosalregistroblelvalorde4
addal,bl ;adicionamos=>al=al+bl

ret

Programa 13: Sumar 3 valores, 11100b, C1h y 12 en decimal

org100h

moval,11100b
movbl,0c1h
addal,bl
movbl,12
addal,bl

ret

Programa 12: Utilizando la instrucción ADD, realizar la progresión aritmética siguiente.

1, 5, 9, 13, 11

Se pide que el número 11 este en el registro AL


Programa 14: Correr el programa

org100h

moval,1
addal,al
movbl,2
addbl,bl
movcl,3
addcl,cl
movdl,4
adddl,dl

ret

Restas o diferencias:
Programa 15: Restar 2 de 5

org100h

moval,5
movbl,2
subal,bl

ret

Programa 16: Programa 12: Restar 5 de 2

org100h

moval,2
movbl,5
subal,bl

ret

➔ El resultado es FD ya que 2 – 5 = -253


➔ Operaciones con INC: incremental

Programa 18: Realizar un programa en Assembler donde cargamos el valor de 12 e incrementamos en 1

Org 100h

mov al,12

inc al

ret

Programa 19: Correr el programa

Org 100h

mov ah,12

inc ah

mov al,13

inc al

mov bh,14

inc bh

mov bl,15

inc bl

ret

➔ Operaciones decrementales

Programa 20: Cargamos el valor de 11 y decrementamos en 1

Org 100h

mov CX, 11

dec CX

ret
Programa 21: Correr el programa

Org 100h

Mov ax 101010001b

Dec ah

Mov bx,1131

Dec bh

Mov cx,0BABAh

Dec ch

Ret

MULTIPLICACIÓN Y DIVISIÓN

- Mul
- Div

Mul: la instrucción MUL realiza multiplicación (sin signo) entre AL y otro registro o un número. El resultado se
almacena en AX.

AX = AL*registro

MUL destino
Div: La instrucción DIV realiza la división (sin signo) entre AX y otro registro, quedando el resultado en AL y el módulo
en AH, es decir, el algoritmo es AL=AX/registro, AH=(módulo o residuo).

AL =AX / registro, AH → Módulo o residuo

DIV destino

Programa 22: Realiza un programa para multiplicar los números y 4

Org 100h

Mov dl,2

Mov al,4

Mul dl ; ax = al * dl
Ret

Programa 23: Multiplicar los números AAAA y B

Org 100h

Mov DX 0AAAAh

Mov AX, 0Bh

Mul DX ; AX = AX*DX

; el resultado es 7554Eh

Ret

Programa 24: Realizar la división de 6 entre 2

Org 100h

Mov AL,6

Mov BL,3

Div BL ; AL=02, AH=00

Ret

Programa 25: Realizar la división de 203 entre 4

Mov AX,203

Mov BL,4

Div BL ; AL=32 cociente , AH=3 residuo

Ret
Programa 26: Correr el programa

Org 100h

Mov ah,12

Mov al, 0Fah

Add dl,34o

Add dh, 1101b

Mul dl

Mov dx, 3Ah

Div dll

Ret

OPERADORES LÓGICOS

- NOT
- OR
- AND
- XOR

NOT:
➔ Lleva a cabo la negación bit por bit del operando destino. El resultado se guarda en el mismo operando
destino. Cambia los bits del operando por su complemento.

NOT destino

OR

➔ Or inclusivo lógico, la instrucción OR lleva a cabo, bit por bit, la disyunción inclusiva lógica de los dos
operandos. El resultado lo almacena en el destino.

OR destino,fuente

AND

➔ Operación lógica “and” a nivel de bit entre los operandos. El resultado se almacena en el destino.

AND destino,fuente

XOR

➔ Or exclusivo lógico, la instrucción OR lleva a cabo, bit por bit, la disyunción exclusiva lógica de los dos
operandos. El resultado lo almacena en el destino.

XOR destino,fuente
Programa 27: Correr el programa

org 100h
mov ax,1
not ax
mov bx,2
not bx

mov cx,3
not cx
mov dx,4
not dx
ret

Programa 28: Realizar la tabla de verdad de la compuerta OR

org 100h
mov ah,0
mov al,0
or al,ah
mov bh,0
mov bl,1
or bl,bh

mov ch,1
mov cl,0
or cl,ch
mov dh,1
mov dl,1
or dl,dh
ret

Programa 29: Realizar la tabla de verdad de la compuerta AND

org 100h
mov ah,0
mov al,0
and al,ah
mov bh,0
mov bl,1
and bl,bh

mov ch,1
mov cl,0
and cl,ch
mov dh,1
mov dl,1
and dl,dh
ret
Programa 30: Realizar la tabla de verdad de la compuerta XOR

org 100h
mov ah,0
mov al,0
xor al,ah
mov bh,0
mov bl,1
xor bl,bh

mov ch,1
mov cl,0
xor cl,ch
mov dh,1
mov dl,1
xor dl,dh
ret

Programa 31: Correr el programa

org 100h
mov ah,0
mov al,0
not ah
or al,ah
mov bh,0
mov bl,1
not bh
or bl,bh

mov ch,1
mov al,0
not ch
or cl,ch
mov dh,1
mov dl,1
not dh
or dl,dh
ret
OTROS OPERADORES

- CMP
- NEG

CMP:
➔ Compara dos operandos.

CMP destino,fuente

NEG

➔ Genera el complemento a 2 de un valor

NEG destino

Programa 32: Comparar los números 5 y 5

org 100h
mov al,5
mov bl,5
cmp al,bl
ret
Programa 33: Correr el programa

org 100h
mov al,5
neg al
ret

Programa 34: Correr el programa

org 100h
mov ax,0123h
mov dx,111000100b
cmp ah,dh
neg al
ret

Programa 35: Correr el programa

org 100h
mov al,a
mov bl,b
mov cl,c
mov dl,d
ret

- observar
a db 01h
b db 02h
c db 03h
d db 04h
Programa 36: Correr el programa

org 100h
mov ah,variable1
mov al,variable2
mov bh,variable3
mov bl,variable4
mov cx,variable5
ret

- Observar

-
- variable1 db 017h
- variable2 db 0Ah
- variable3 db 0Dh
- variable4 db 01Ch
- variable5 dw 0Fah

Programa 37: Correr el programa

org 100h
mov al,1
mov bl,2
mov cx,4
suma:
add al,bl
loop suma
ret

Programa 38: Correr el programa

org 100h
mov cx,5
mov bx,1
mov dl,2
comienzo:
mov ax,bx
mul dx
mov bx,ax
loop comienzo
ret
Programa 38: Correr el programa

org 100h
call p1
add ax,1
ret
p1 proc near
mov ax,1234h
ret
endp
Programa 39: Correr el programa

org 100h
call p1
call p2
call p3
ret
p1 proc near
mov ax,0101h
mov cx,3
suma1:
add al,ah
loop suma1
ret
endp

p2 proc near
mov bx,0202h
mov cx,3
suma2:
add bl,bh
loop suma2
ret
endp

p3 proc near
mov dx,0303h
mov cx,3
suma3:
add dl,dh
loop suma3
ret
endp
Programa 39: Correr el programa

org 100h
mov ax,1000
mov cx,3
jmp bucle1
mov ax,2015h
mov bx,2016h
mov cx,2017h

bucle1:
mov ax,100000001b
mov bx,401o
add ah,al
add bh,bl
loop bucle1
ret
ACTIVIDAD 02
Desarrolle 10 ejercicios en ASEMBLER y correrlos en el simulador, realizar el informe en ms Word o PDF.

También podría gustarte