Etapas de solución de un problema
Módulo o secciones de un algoritmo
Comandos de debug
Comandos debug
Ejemplo:
Al= perimetro
Ch= base
Bx=altura
Si
al: 10
ch: 05
Add al,ch 15
Mul 2
2A
Diagrama de flujo si entonces
Crear un programa que determine que número
es mayor o son iguales
Si a>b entonces bh=1
Si b>a entonces bh=2
inicio Si a=b entonces bh=0
a,b MOV AH,20
MOV AL,10
CMP AH,AL
v El mayor es a JB XX
a>b
MOV BH,01
JMP FIN
F
XX : CMP AH,AL
v JZ YY
a<b El mayor es b
MOV BH,02
JMP FIN
F
YY: MOV BH,00
Son iguales FIN: NOP
fin
Estructura de selección múltiple
Crear un programa que dada una opción(opc) y los operandos (a,b)realice las
siguientes operaciones
Si opc=1 entonces c=a+b
Si opc=2 entonces c=a-b
Si opc=3 entonces c=a/b Si ch=opc
en caso contrario c=a/b al=operando 1
ah=operando 2
inicio Mov ch,01
Mov al,10
Mov ah,02 //mov ch,02
opc,a,b
Cmp ch,01
Jnz resta
opc Add al,ah
1 default Jmp fin
2 3 resta: cmp ch,02
Jnz division
c=a+b c=a-b c=a/b c=a*b Sub al,ah
Jmp fin
division: cmp ch,03
Jnz mult
Div ah
c Jmp fin
mult: mult ah
Fin: nop
fin
Estructuras de repetición
• For(valor inicial; condición;incremento)
{
}
• While(condición){
}
• Do{
}while(condición)
for
while
Conversión ASCIIHEXADECIMAL
letra A-B
30 carácter 39 41 carácter 46
CODIGO CÓDIGO
CODIGO CÓDIGO DECIMAL HEXA ASCII
DECIMAL HEXA ASCII 65 41 A
66 42 B
48 30 0 67 43 C
49 31 1 68 44 D
69 45 E
50 32 2 70 46 F
51 33 3
52 34 4 CODIGO CÓDIGO
53 35 5 DECIMAL HEXA ASCII
54 36 6 97 61 a
98 62 b
55 37 7 99 63 d
56 38 8 100 64 c
56 39 9 101 65 e
102 66 f
Ascii hexadecimal
Inicio: lee dato
dato30 inicio
dato39 numero
dato <41 inicio
dato 41 letra
si no inicio
Letra: dato=dato-7
Numero:dato=dato-30
fin
Conversión
HEXADECIMAL ASCII
0
A
.
B
. +30
C +37 .
D
E
9
F
Ejemplo:
A
+37
41
Escritura Carácter
Mov AH,02 Espera entrada proveniente
Int 21 del teclado, la exhibe y la
ret coloca en el registro AL
Lectura Carácter
Mov AH,01 El carácter a escribir debe
Int 21 estar en DL
ret
Empaquetamiento 2 números
push cx
lee (al)
ascii-hex(al)
Mov cl,04
Shl al,cl
Mov ch,al
lee (al)
ascii-hex(al)
Add al,ch
Pop cx
ret
Desempaquetamiento 2 números
(para escribir en pantalla)
Suponiendo que el dato lo recibe en dl
push cx
Mov dh,dl
Mov cl,04
Shr dl,cl
Hex-ascii (dl)
Escribir(dl)
Mov dl,dh
And dl,0f
Hex-ascii (dl)
Escribir(dl)
Pop cx
ret
Uso del segmento de datos
Buscar una Letra
DS:1526 IP:400
-500 ‘no se encontro’ 0d 0a ‘$’
-E:400 -600 ‘si se encontro’ 0d 0a ‘$’
HEX CAR
46 F
45 E
44 D
43 C
42 B
41 A
F
Llamada a
una subrutina
Terminación de un
programa (dos)
Fin de una
subrutina
retorno el
control a la
siguiente
instrucción de
donde se
llamo
A B C D E F
Ejemplo de uso DS
Mostrar los datos del DS
$
Introducción a masm
Comments
1. ;This entire line is a comment
2. ADD AX,BX ;comment on same line as instruction
Coding Format
The en general format an Assembler instruction is the is the following
[name] operation operand(s)
Ejem:
Name Oper’s Operand
COUNTER DB 1 ;Name, operation, one operand
MOV AX,0 ;Operation, two operands
Name
A name in Assembler lenguage can use the following characters:
Usando Turbo Assembler
Compilador modo dos usando
masm y link
Ejemplo
Compilación modo usando ml.exe
dos con errores
Compilando usando
AssemblerEditor, ml y link