En este post veremos una serie de instrucciones útiles que podemos usar en Assembler
Image tomada de http://profile.ak.fbcdn.net |
Modo Video
Para tener un modo video en ASM debemos utilizar la interrupción 10h que nos dará un tamaño de 320x200 = 13h
mov ax,0013h int 10h
Para salir del modo dos
mov ax,4c00h int 21h
Leer Teclado
Instrucción que sirve para leer una tecla presionada y después de soltar la tecla el caracter se escribe en pantallamov ah,01h int 21hEl valor (caracter) lo guarda en el registro al
La siguiente instrucción es útilizada para leer una tecla presionada pero no escribe nada en pantalla
mov ah,07h int 21hEl valor (caracter) lo guarda en el registro al
Esta instrucción verifica si se presiona una tecla o no, solo sirve para eso XD y guarda el valor en el registro al
mov ah,0bh int 21h
Para comprobar que si se presionó uno tecla se verifica con cmp y el número 255
cmp al,255
Escribir en pantalla
Para escribir un texto en pantallamov ah,02 ;Sirve para posicionarse mov bh,00 mov dh,05h ;Posicion en y mov dl,05h ;Posicion en x int 10h mov ah,09 mov dx,texto ;Escribe el texto int 21hDonde texto es una variable de la siguiente manera:
texto db “Mugre practica XD$”El $ siempre se tiene que colocar al final, ¿por qué?, eso si no se XD.
Para escribir un caracter, solo se tiene que colocar el código ascii en este caso el 55 el cual es el número 7
mov dl,55 mov ah,02h int 21hPintar en pantalla un pixel
mov ah,0ch ;Escribir en pantalla mov al,02 ;Color 0-15 mov bh,0 ;Pagina (0 por default en esta aplicación) mov cx,15 ;Posicion X mov dx,16 ;Posicion Y int 10h
Los macros son parecidos a los métodos
Ejemplo sintaxis:
macro <nombre> <parametro>,<parametro>,....<parametro> { ;<codigo> ;. . . ;. . . ;<codigo> }
Macros
Si se quiere tener etiquetas dentro de los macros se debe declara de la siguiente manera dentro del macro:local <nombre_etiqueta>
Si esto no se hace y si se llama dos veces al mismo macro entonces lanza un error en el cual indicará que la etiqueta esta repetida.
Ejemplo de macro
macro imprime_caracter { local et xor si,si ;limpia el registro si et: mov dx,si add dx,48 mov ah,02h int 21h inc si cmp si,10 jne et ;si no es igual a 10 entonces regresa al ciclo }Para llamar un macro solo se coloca
imprime_caracterY si el macro tiene parametros:
imprime_caracter val,val2Se puede pasar por parámetro variables como
texto db “parametro $”También literales como 19, 20, 05h, a2h e incluso registros bx,dx,ax etc.
Colocó dos ejemplos uno sin macros y el otro con macros:
Sin Macros:
Con Macros:
Resultado del ejemplo -Compilado con FASM-
Espero que te sea útil :D. Dios te bendiga.
0 comentarios:
Publicar un comentario