Entradas

Mostrando entradas de marzo, 2019

Programa loop lyvan

org 100h include 'emu8086.inc' 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      ; brinca si es igual cmp msg[si], al   ;comparar si encuentra la primera letra de la cadena  jne seguir    ;brica si es diferente 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 ...

Loop

Control de Bucles (instrucciones simples) Éstas posibilitan el grupo de control más elemental de nuestros programas. Un bucle es un bloque de código que se ejecuta varias veces. Hay 4 tipos de bucles básicos: o Bucles sin fin o Bucles por conteo o Bucles hasta o Bucles mientras Las instrucciones de control de bucles son las siguientes: • • INC   incrementar • • DEC   decrementar • • LOOP   realizar un bucle • •  LOOPZ,LOOPE realizar un bucle si es cero • • LOOPNZ,LOOPNE realizar un bucle si no es cero • • JCXZ   salta si CX es cero

emu8086.inc

emu8086.inc define las siguientes macros : PUTC char - macro con 1 parámetro, imprime un carácter ASCII en la posición actual del cursor. GOTOXY col, fila - macro con 2 parámetros, establece la posición del cursor. PRINT string - macro con 1 parámetro, imprime una cadena. PRINTN string - macro con 1 parámetro, imprime una cadena. Lo mismo que PRINT pero agrega automáticamente "retorno de carro" al final de la cadena. CURSOROFF - apaga el cursor de texto. CURSORON - enciende el cursor de texto. Para usar cualquiera de las macros anteriores, simplemente escriba su nombre en algún lugar de su código y, si es necesario, los parámetros emu8086.inc también define los siguientes procedimientos : PRINT_STRING : procedimiento para imprimir una cadena terminada en nulo en la posición actual del cursor, recibe la dirección de la cadena en el registro DS: SI . Para usarlo declare: DEFINE_PRINT_STRING antes de la directiva END . PTHIS : procedimi...

Ejemplos de banderas

Imagen
Ejemplo 1 .model small .stack .data .code     mov al,255     mov bl,1     add al,bl         .exit end               Ejemplo 2 .model small .stack .data   .code      mov al, 2      mov bl, 2      sub al,bl               .exit end Ejemplo 3 .model small .stack .data   .code      mov al, 1      mov bl, 2      sub al,bl               .exit end

Ejemplos de la libreria emu8086.inc

Imagen
Ejemplo 1 org 100h ; inicio de programa include 'emu8086.inc' ;Incluye funciones de libreria emu8086 ; DEFINE_SCAN_NUM ; DEFINE_PRINT_STRING   DEFINE_PRINT_NUM   DEFINE_PRINT_NUM_UNS     mov si, 0 mov al, 0 ;Convertir primera cadena a numero   cadAnum: cmp cad1[si], "$"   jz seguir   mov bl, 10   mul bl sub cad1[si], '0'   add al, cad1[si]   inc si ;realiza un incremento loop cadAnum ; seguir: mov aux1, al ;Convertir segunda cadena a numero mov si, 0 mov al, 0 cadAnum2: cmp cad3[si], "$"   jz seguir2 ;Saltar si el resultado es cero   mov bl, 10   mul bl sub cad3[si], '0'   add al, cad3[si]   inc si loop cadAnum2 seguir2: mov bl, al mov al, aux1 ;realizar operaciones normalmente teniendo ya los dos numeros decimales cmp cad2, "-" jz resta cmp cad2, "+" jz suma cmp cad2, "*" jz multi cmp cad2, "/...