Sep
25

Mas de ensamblador

Hace casi dos semanas que comencé a programar en ensamblador y apenas comienzo a comprender cosas que antes ni con frijolitos entendía,… Aunque aún no se decir cuales jeje… Solo se que todo me confunde!! :-(

Después de casi un mes de estar ensamblando código asm, hoy toca el turno al maestro de ensamblarnos a todos con su examen, y quien sabe que tan difícil valla a estar… Ya me tiemblan las patas de miedo, y encima de todo, estoy esperando los ataques de nervios que llegan cuando estoy en el examen… y cuando sucede, se me olvida todo y no me acuerdo ni de mi nombre!

Antes de morir en el examen dejaré mis últimos programas horriblemente desarrollados por mi ^^

Aplicación que muestra la tabla de multiplicar de un número dado

asm:
.model small
.stack
.data
        N db ?
.code
.startup
       
        ;cls
                mov ah,00h
                mov al,03h
                int 10h

        ;Tabla
                mov ah,01h            ;Input
                int 21h   ;Interrupcion de DOS
                sub al,30h            ;Ajustamos para realizar operaciones internas
                mov N,al                ;Tabla a visualizar
                mov cl,00h            ;Contador auxiliar
               

        operaciones:
                mov al,N                ;AL = N
                mul cl      ;AL = AL * CL
                aam                    ;Ajuste en ASCII para separa Acarreo
                mov bx,ax              ;AX lo almacenamos en BX

                mov ah,02h            ;Standar output
                mov dl,' '            ;Separador
                int 21h   ;Interrupción de DOS

                mov ah,02h            ;Standar output
                mov dl,bh              ;PARTE ALTA
                add dl,30h            ;Ajuste para darle salida en pantalla
                int 21h   ;Interrupción de DOS

                mov ah,02h            ;Standar output
                mov dl,bl              ;PARTE BAJA
                add dl,30h            ;Ajuste para salida en pantalla
                int 21h   ;Interrupción de DOS

                inc cl      ;CL = CL + 1
                cmp cl,10              ;IF CL = 10
                        je salir                ;[salir]
                                                ;else
                        jne operaciones ;[Operaciones]
        salir:
       
.exit
end

Programa que desplaza una palabra hacia arriba y abajo con las teclas 1 y 2 respectivamente

asm:
.model small
.stack
.data
       
        msg db 'mis-algoritmos.com$'
        fle db ?
       
.code
.startup
       
        ;cls
                mov ah,00h                  ;Set video mode
                mov al,03h                  ;mode
                int 10h    ;Interrupcion de video

        ;posición
                mov ah,02h                  ;Salida
                mov dh,08                     ;row
                mov dl,02                     ;columna
                int 10h    ;interrupcion de video

        ;mensaje
                mov ah,09h                  ;Print string
                lea dx,msg                  ;
                int 21h    ;Interrupcion de DOS

        movimiento:     ;Determina movimiento a realizar
                mov ah,07h                  ;Direct STDIN input, no echo
                int 21h    ;interrupcion de DOS
                jmp compara               ;VERIFICAMOS EL CARACTER INTRODUCIDO

        subir:
                mov ah,06h                  ;Scroll page up
                mov al,1                        ;Number of lines to scroll window (0=blank whole window)
                mov bh,01h                  ;Attibutes to be used on blanked lines
                mov cx,0001h        ;Ch=00H Cl=01h --> fila, colum -> of upper left corner of window to scroll
                mov dx,184fh        ;Dh=18H Dl=4f --> fila, colum -> of lower right corner of window
                int 10h    ;Interrupción de video
                jmp movimiento

        bajar:
                mov ah,07h                  ;Scroll page down
                mov al,1                        ;numer of lines to scroll window (0 = blank whole window)
                mov bh,02h                  ;attributes to be used on blanked lines
                mov cx,02h                  ;CH=00 CL=02H --> fila, colum -> of upper left corner of window to scroll
                mov dx,184fh        ;DH=18H DL=4F --> fila, colum -> of lower right corner of window
                int 10h    ;Interrupción de video
                jmp movimiento    ;

        compara:
                cmp al,13                     ;tecla Enter
                        je salir                ;
                cmp al,49                     ;tecla 1
                        je bajar                ;
                cmp al,50                     ;tecla 2
                        je subir                ;

        salir:
.exit
end

10 Comments

Make A Comment

Comments RSS Feed   TrackBack URL

Leave a comment

top