Lenguaje ensamblador

Solo disponible en BuenasTareas
  • Páginas : 53 (13050 palabras )
  • Descarga(s) : 0
  • Publicado : 25 de enero de 2011
Leer documento completo
Vista previa del texto
Listado de Programas Autor: Nery Guzmán No estan en orden de dificultad pero con las descripciones mas que todo servirá como referencia a algunas interrupciones clásicas en un curso de assembler. 1.

2.

3.

4.

5.

6.

7.

8.

9.

10. ; editor de texto mas avanzado con teclas y funciones especiales. 11.

; Nery Guzman ;2007 Universidad del Valle de Guatemala;http://docs.huihoo.com/help-pc/ pagina de referencia donde estan las interrupciones ;EXCEPCION AH07 de la int 21 h ;programa que lee una tecla del buffer sin repeticion en pantalla( sin eco) ; luego se manda con la excepcion ah07 dentro de al y se compara ; siendo 00 tecla de funcion .MODEL SMALL .STACK 64 .DATA .CODE

JUAN PROC FAR

MOV AH, 07H INT 21H CMP AL, 00 JNZ SALIDA

; Petición de ; ; en AL ; ;si NO

la función lee la tecla, no hace eco retorna carácter leído. Es 00 (tecla de función)? es 00, termina. Ya está carácter en AL

SALIDA: MOV AH,4CH INT 21H JUAN ENDP END JUAN

title lee los sectores de disco .model small .stack 64 ;-------------------------------------------------------------------.data row db 00 col db 00 xlatab db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h db41h,42h,43h,44h,45h,46h readmsg db '*** read error ***', 0dh, 0ah rdblock rdhead rdcylr rdsect rdnosec rdbuffr ; estructura del bloque ; cabeza lectura/escritura ; cilindro ; sector inicial ; numero de sectores ; desplazamiento de buffer de entrada, ; proporciona un sector de datos dw seg _data ; operador seg identifica direccion del ; segmento de datos iobuffr db 5120 dup (' ') mensaje db ('ingrese el sectorabs '), '$' entrada db 20 dup (‘ ‘) ; área de entrada db dw dw dw dw dw 0 0 0 4 10 iobuffr

buffer db 0 , '$' blur dw 0 arreglo db 80 dup (?),'$' ;área de caracteres a copiar pagina db 0 cursor db 0 x dw 4 y db 0 residuo db ? ;-------------------------------------------------------------------.code sectorA proc near xor ax, ax mov al, buffer mov bl, 80 div bl mov rdcylr, ax mov residuo, ah xormov mov div mov ax, ax al, residuo bl, 18 bl rdsect, ax

; inicializar ax ; cargo lo quiero dividir en ax ; cargo el divisor a bl ; se divide ; se mueve el coiente a cilindro ; se mueve el ah a resudio ; inicializar ax

; muevo el ah a sectores

sectorA endp conversion1 proc far mil: mov x,4 mov bx,0 mov al, [es:di] mov al,arreglo[bx] sub x,bx multi2: add buffer, al add buffer, al addbuffer, al add buffer, al add buffer, al add buffer, al add buffer, al add buffer, al add buffer, al add buffer, al dec x cmp x,0 jne multi2 cien: mov mov mov sub multi3: add add add add add add add x,4 bx, 1 al,arreglo[bx] x,bx buffer, buffer, buffer, buffer, buffer, buffer, buffer, al al al al al al al

add add add dec cmp jne diez: mov x, mov mov sub multi: add add add add add add add add add adddec cmp jne uni:

buffer, al buffer, al buffer, al x x,0 multi3 4 bx, 2 al,arreglo[bx] x,bx buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, x x,0 multi al al al al al al al al al al

mov al, arreglo[3] add buffer, al mov ah, 09h lea dx, buffer int 21h

conversion1 endp getcursor proc near mov mov int mov mov ret ah, 03h bh, 0h 10h ax, dx cursor, dh ;llama agetpagina para posicionarse en ;pagina actual

getcursor endp pedir proc far mov ah, 09h lea dx, mensaje int 21h ciclus: mov int mov cmp ah, 07h 21h buffer, al al, 0dh

mov bx,blur

mov mov mov inc

al, [es:di] al, buffer arreglo[bx], al blur

mov ah, 0ah ;se llama al modo ingresar caracter mov al, buffer mov bh, 0h;se pone la pagina actual mov cx, 01 ;se dice cuantas veces se va aimprimir en la pocision del cursor esa letra int 10h ;interrupcion call getcursor ;se llaman las coordenadas del cursor para avanzar add dl, 01h ;se avanza un espacio el cursor mov ah, 02h ;petición mov bh, 0h ;se pone la pagina int 10h cmp blur, 4 jne ciclus ret pedir endp main proc far mov ax, @data mov ds, ax mov es, ax call pedir call conversion1 call limpia_pantalla call pos_cursor call...
tracking img