domingo, 20 de noviembre de 2016

emu8086 pregunta (10)


ejemplo 1 

 org 100h
comienzo: 
mov si, x
mov al, msg2[si]
cmp msg[si], al ;comparar letra por letra las cadenas, si uno no coincide manda directamente a fin y termina el programa
jne fin:
cmp msg[si], "$" ;si es el final y el programa llega aca, quiere decir que son iguales
jz final:
inc x
loop comienzo
final:
mov dx, offset msg3 
mov ah, 9
int 21h
fin:
ret
msg db "hello world $" 
msg2 db "hello world $" 
msg3 db "Son iguales $"
x dw 0         

ejemplo 2 

ORG 100h
MOV SI, 0 ;ponemos si en 0
comienzo: 
MOV AL, msg2[0] ;copiar la primera letra de la palabra a al
CMP msg[SI],"$" ;si es el fin de la cadena mandar a final
JZ final
CMP msg[SI], AL ;comparar si encuentra la primera letra de la cadena
JNE seguir

 MOV DI, 1 ;poner en 1 di
 comprobar:
 MOV AL, msg2[DI]
 MOV BX, DI
 CMP msg[SI+BX], AL ;posicion de la letra coincidente + di, comparar con la cadena
 JNE seguir ;si no coincide mandar a seguir

 INC DI ;incrementar di para seguir recorriendo cadena 

 CMP msg2[DI],"$" ;si es el fin de la cadena y el programa llego aca quiere decir que la cadena es parte de la palabra
 JZ resultado 

 LOOP comprobar ;bucle para recorrer cadena 

seguir: 
INC SI ;para seguir recorriendo la palabra
LOOP comienzo ;bucle principal para recorrer palabra
resultado:
MOV DX, OFFSET msg3 ;copiar msg3 a dx
MOV AH, 9 ;preparar ah con 9 para la interrupcion 21h
INT 21h ;mostrar contenido en dx
final:
RET
msg DB "Hola Mundo$" 
msg2 DB "ola$" 
msg3 DB "Si es subcadena$" 

ejemplo 3 

name "calc-sum"

ORG 100h ; directive make tiny com file.

; calculate the sum of elements in vector,
; store result in m and print it in binary code.

; number of elements:
MOV CX, 5

; al will store the sum:
MOV AL, 0

; bx is an index:
MOV BX, 0

; sum elements:
next: ADD AL, vector[BX]

; next byte:
INC BX

; loop until cx=0:
LOOP next


; store result in m:  
MOV m, AL


; print result in binary:
MOV BL, m
MOV CX, 8
print: MOV AH, 2   ; print function.
       MOV DL, '0'
       TEST BL, 10000000b  ; test first bit.
       JZ zero
       MOV DL, '1'
zero:  INT 21h
       SHL BL, 1
LOOP print
; print binary suffix:
MOV DL, 'b'
INT 21h



MOV DL, 0ah ; new line.
INT 21h
MOV DL, 0dh ; carrige return.
INT 21h


; print result in decimal:
MOV AL, m
CALL print_al




; wait for any key press:
MOV AH, 0
INT 16h



RET

; variables:
vector DB 5, 4, 5, 2, 1
m DB 0


print_al PROC
CMP AL, 0
JNE print_al_r
    PUSH AX
    MOV AL, '0'
    MOV AH, 0eh
    INT 10h
    POP AX
    RET 
print_al_r:    
    PUSHA
    MOV AH, 0
    CMP AX, 0
    JE pn_done
    MOV DL, 10
    DIV DL    
    CALL print_al_r
    MOV AL, AH
    ADD AL, 30h
    MOV AH, 0eh
    INT 10h    
    JMP pn_done
pn_done:
    POPA  
    RET  
ENDP    

ejemplo 4

org 100h;
jmp inicio;
titulo db  "Presentacion de Integrantes!! $";
integrante1 db  "Primer Integrante $";
nombre1 db " Mi Nombre es Diana $";
Edad1 db "Mi Edad: Tengo 21 Años $";
Vivo1 db "Vivo en: Cerca del Portal 80 Barrio Bolivia $"
MeGusta db "Me gustan los Perros $";
integrante2 db "Segundo Integrante $";
nombre2 db " Mi Nombre es Edgar Andres Ortiz $";
Edad2 db "Mi Edad: Tengo 26 Anos $";
Vivo2 db "Vivo en: Suba Barrio Nueva Tibabuyes $";
Trabajo db "Trabajo como Coordinador TIC en una empresa de Gestión Documental$";
inicio:;
mov ah,9;
mov dx,offset titulo;
int 21h;
mov ah,9;
mov dx,offset integrante1;
int 21h;
mov ah,9;
mov dx,offset nombre1;
int 21h;
mov ah,9;
mov dx,offset Edad1;
int 21h;
mov ah,9;
mov dx,offset Vivo1;
int 21h;
mov ah,9;
mov dx,offset MeGusta;
int 21h;
mov ah,9;
mov dx,offset integrante2;
int 21h;
mov ah,9;
mov dx,offset nombre2;
int 21h;  

ejemplo 5 

name "calc-sum"

ORG 100h ; directive make tiny com file.

; calculate the sum of elements in vector,
; store result in m and print it in binary code.

; number of elements:
MOV CX, 5

; al will store the sum:
MOV AL, 0

; bx is an index:
MOV BX, 0

; sum elements:
next: ADD AL, vector[BX]

; next byte:
INC BX

; loop until cx=0:
LOOP next


; store result in m:  
MOV m, AL


; print result in binary:
MOV BL, m
MOV CX, 8
print: MOV AH, 2   ; print function.
       MOV DL, '0'
       TEST BL, 10000000b  ; test first bit.
       JZ zero

       MOV DL, '1'                   



emu8086 hola mundo


org 100h;
jmp inicio;
titulo db "Lenguaje de Maquina$";
nombre db "Diana Gil$";
inicio:;
mov ah,9;
mov dx,offset titulo;
int 21h;
mov ah,9;
mov dx, offset nombre;
int 21h;
int 20h;
ret            

El lenguaje ensamblador



El lenguaje ensamblador, o assembler (en inglés assembly language y la abreviación asm), es un lenguaje de programación de bajo nivel Consiste en un conjunto de mnemónicos que representan instrucciones básicas para los computadores, microprocesadores, microcontroladores y otros circuito integrados programables. Implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para programar una arquitectura de procesador y constituye la representación más directa del código máquina específico para cada arquitectura legible por un programador. Cada arquitectura de procesador tiene su propio lenguaje ensamblador que usualmente es definida por el fabricante de hardware, y está basada en los mnemónicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria y otras características del lenguaje. Un lenguaje ensamblador es por lo tanto específico de cierta arquitectura de computador física (o virtual). Esto está en contraste con la mayoría de los lenguajes de programación de alto nivel, que idealmente son portátiles.