Código
span style="color: #000000; font-weight: bold;"> MODEL SMALL STACK 256 MOSTRAR MACRO M mov dx,OFFSET &M call Imprimir ENDM TERMINAR MACRO mov ax,4C00h int 21h ENDM DETENER MACRO mov ah,01h int 21h ENDM LINEA MACRO mov dl,0Ah mov ah,02h int 21h ENDM minX EQU 20 minY EQU 40 maxX EQU 500 maxY EQU 280 DATASEG ;-------------------------------------------------------------- Color DB 1 DUP(0) B_Enc DB ' Especie de Paint v.1.0asm$' B_Pos DB 'Comenzar$' B_Com DB 'Limpiar Tabla$' B_Col DB ' Color del Trazado:$' B_Sal DB 'Salir$' ;-------------------------------------------------------------- CODESEG Inicio: mov ax,@data mov ds,ax mov es,ax mov ah,0Fh int 10h push ax call MGrafico call Encabezado call Boton_Pos call Boton_Com call Boton_Sal call MMouse call Lee_Mouse call OMouse pop ax mov ah,00h int 10h TERMINAR MGrafico PROC NEAR mov ax,0012h int 10h mov ah,0Bh mov bx,0000h int 10h ret MGrafico ENDP Imprimir PROC NEAR push ax mov ah,09h int 21h pop ax ret Imprimir ENDP Cursor PROC NEAR mov ah,02h mov bh,00h int 10h ret Cursor ENDP Limpiar PROC NEAR mov ax,0600h mov bx,7100h mov cx,00h mov dx,174fh int 10h ret Limpiar ENDP MMouse PROC NEAR mov ax,0001h int 33h ret MMouse ENDP OMouse PROC NEAR mov ax,0002h int 33h ret OMouse ENDP Boton_Pos PROC NEAR mov dx,82 mov cx,520 Inicio_Aqui: mov ah,0Ch mov al,0Eh mov bh,00h int 10h cmp cx,530 je inc_dx inc cx jmp Inicio_Aqui inc_dx: mov cx,520 cmp dx,91 je Continua_Aqui inc dx jmp Inicio_Aqui Continua_Aqui: mov cx,000Ah Escribe: mov dx,0543h call Cursor MOSTRAR B_Pos ret Boton_Pos ENDP Boton_Com PROC NEAR mov dx,130 mov cx,520 Inicio_Aqui1: mov ah,0Ch mov al,0Ah mov bh,00h int 10h cmp cx,530 je inc_dx1 inc cx jmp Inicio_Aqui1 inc_dx1: mov cx,520 cmp dx,139 je Continua_Aqui1 inc dx jmp Inicio_Aqui1 Continua_Aqui1: mov cx,000Ah Escribe1: mov dx,0843h call Cursor MOSTRAR B_Com ret Boton_Com ENDP Boton_Sal PROC NEAR mov dx,178 mov cx,520 Inicio_Aqui3: mov ah,0Ch mov al,06h mov bh,00h int 10h cmp cx,530 je inc_dx3 inc cx jmp Inicio_Aqui3 inc_dx3: mov cx,520 cmp dx,187 je Continua_Aqui3 inc dx jmp Inicio_Aqui3 Continua_Aqui3: mov cx,000Ah Escribe3: mov dx,0B43h call Cursor MOSTRAR B_Sal ret Boton_Sal ENDP Encabezado PROC NEAR mov dx,0000h call Cursor MOSTRAR B_Enc ret Encabezado ENDP Colorcitos PROC NEAR mov dx,1500h call Cursor MOSTRAR B_Col ret Colorcitos ENDP Terreno PROC NEAR mov cx,minX mov dx,minY Inicio_Aqui4: mov ah,0Ch mov al,0Fh mov bh,00h int 10h cmp cx,maxX je inc_dx4 inc cx jmp Inicio_Aqui4 inc_dx4: mov cx,minX cmp dx,maxY je Continua_Aqui4 inc dx jmp Inicio_Aqui4 Continua_Aqui4: ret Terreno ENDP Lee_Mouse PROC NEAR Clic_Izq: mov ax,0003h int 33h and bx,0001h cmp bx,0001h je Verificar1 jmp Clic_Izq Verificar1: cmp cx,520 jae La_Otra1 jmp Clic_Izq La_Otra1: cmp cx,530 jbe Ahora_dx1 jmp Clic_Izq Ahora_dx1: cmp dx,82 jae Otro_Punto1 jmp Ahora_dx2 Otro_Punto1: cmp dx,91 jbe Colocar jmp Ahora_dx2 Ahora_dx2: cmp dx,178 jae Otro_Punto2 jmp Clic_Izq Otro_Punto2: cmp dx,187 jbe Sales jmp Clic_Izq Colocar: call Terreno call Colorcitos call Dib_Cuadros call Dibujar jmp Sales Sales: ret Lee_Mouse ENDP Dibujar PROC NEAR Clicito: mov ax,0003h int 33h and bx,0001h cmp bx,0001h je Verificar2 jmp Clicito Verificar2: cmp cx,20 jae Otra2 jmp Verificar3 Otra2: cmp cx,500 jbe Now_dx1 jmp Verificar3 Now_dx1: cmp dx,40 jae Punto1 jmp Verificar3 Punto1: cmp dx,280 jbe Dibujito jmp Verificar3 Dibujito: sub dx,01h mov ah,0Ch mov al,Color[0] mov bh,00h int 10h jmp Clicito Verificar3: cmp cx,520 jae Otra3 jmp Verificar4 Otra3: cmp cx,530 jbe Ah_dx2 jmp Verificar4 Ah_dx2: cmp dx,130 jae Punto2 jmp Ah_dx3 Punto2: cmp dx,139 jbe Otro_Terreno jmp Ah_dx3 Otro_Terreno: call Terreno jmp Clicito Ah_dx3: cmp dx,178 jae Punto3 jmp Verificar4 Punto3: cmp dx,187 jbe Sales1 jmp Verificar4 Sales1: jmp Sales11 Verificar4: cmp dx,338 jae Otra4 jmp Clicito Otra4: cmp dx,347 jbe Ah_cx1 jmp Clicito Ah_cx1: cmp cx,180 jae Puntocx1 jmp Ah_cx2 Puntocx1: cmp cx,189 jbe Cambia_Color1 jmp Ah_cx2 Cambia_Color1: mov Color[0],01h jmp Clicito Ah_cx2: cmp cx,200 jae Puntocx2 jmp Ah_cx3 Puntocx2: cmp cx,209 jbe Cambia_Color2 jmp Ah_cx3 Cambia_Color2: mov Color[0],02h jmp Clicito Ah_cx3: cmp cx,220 jae Puntocx3 jmp Ah_cx4 Puntocx3: cmp cx,229 jbe Cambia_Color3 jmp Ah_cx4 Cambia_Color3: mov Color[0],03h jmp Clicito Ah_cx4: cmp cx,240 jae Puntocx4 jmp Ah_cx5 Puntocx4: cmp cx,249 jbe Cambia_Color4 jmp Ah_cx5 Cambia_Color4: mov Color[0],04h jmp Clicito Ah_cx5: cmp cx,260 jae Puntocx5 jmp Ah_cx6 Puntocx5: cmp cx,269 jbe Cambia_Color5 jmp Ah_cx6 Cambia_Color5: mov Color[0],05h jmp Clicito Ah_cx6: cmp cx,280 jae Puntocx6 jmp Ah_cx7 Puntocx6: cmp cx,289 jbe Cambia_Color6 jmp Ah_cx7 Cambia_Color6: mov Color[0],06h jmp Clicito Ah_cx7: cmp cx,300 jae Puntocx7 jmp Ah_cx8 Puntocx7: cmp cx,309 jbe Cambia_Color7 jmp Ah_cx8 Cambia_Color7: mov Color[0],07h jmp Clicito Ah_cx8: cmp cx,320 jae Puntocx8 jmp Ah_cx9 Puntocx8: cmp cx,329 jbe Cambia_Color8 jmp Ah_cx9 Cambia_Color8: mov Color[0],08h jmp Clicito Ah_cx9: cmp cx,340 jae Puntocx9 jmp Ah_cx10 Puntocx9: cmp cx,349 jbe Cambia_Color9 jmp Ah_cx10 Cambia_Color9: mov Color[0],09h jmp Clicito Ah_cx10: cmp cx,360 jae Puntocx10 jmp Ah_cx11 Puntocx10: cmp cx,369 jbe Cambia_Color10 jmp Ah_cx11 Cambia_Color10: mov Color[0],0Ah jmp Clicito Ah_cx11: cmp cx,380 jae Puntocx11 jmp Ah_cx12 Puntocx11: cmp cx,389 jbe Cambia_Color11 jmp Ah_cx12 Cambia_Color11: mov Color[0],0Bh jmp Clicito Ah_cx12: cmp cx,400 jae Puntocx12 jmp Clicito Puntocx12: cmp cx,409 jbe Cambia_Color12 jmp Clicito Cambia_Color12: mov Color[0],0Ch jmp Clicito Sales11: ret Dibujar ENDP Dib_Cuadros PROC NEAR mov dx,338 mov cx,180 @Aqui1: mov ah,0Ch mov al,01h mov bh,00h int 10h cmp cx,189 je @dx1 inc cx jmp @Aqui1 @dx1: mov cx,180 cmp dx,347 je Color2 inc dx jmp @Aqui1 Color2: mov dx,338 mov cx,200 @Aqui2: mov ah,0Ch mov al,02h mov bh,00h int 10h cmp cx,209 je @dx2 inc cx jmp @Aqui2 @dx2: mov cx,200 cmp dx,347 je Color3 inc dx jmp @Aqui2 Color3: mov dx,338 mov cx,220 @Aqui3: mov ah,0Ch mov al,03h mov bh,00h int 10h cmp cx,229 je @dx3 inc cx jmp @Aqui3 @dx3: mov cx,220 cmp dx,347 je Color4 inc dx jmp @Aqui3 Color4: mov dx,338 mov cx,240 @Aqui4: mov ah,0Ch mov al,04h mov bh,00h int 10h cmp cx,249 je @dx4 inc cx jmp @Aqui4 @dx4: mov cx,240 cmp dx,347 je Color5 inc dx jmp @Aqui4 Color5: mov dx,338 mov cx,260 @Aqui5: mov ah,0Ch mov al,05h mov bh,00h int 10h cmp cx,269 je @dx5 inc cx jmp @Aqui5 @dx5: mov cx,260 cmp dx,347 je Color6 inc dx jmp @Aqui5 Color6: mov dx,338 mov cx,280 @Aqui6: mov ah,0Ch mov al,06h mov bh,00h int 10h cmp cx,289 je @dx6 inc cx jmp @Aqui6 @dx6: mov cx,280 cmp dx,347 je Color7 inc dx jmp @Aqui6 Color7: mov dx,338 mov cx,300 @Aqui7: mov ah,0Ch mov al,07h mov bh,00h int 10h cmp cx,309 je @dx7 inc cx jmp @Aqui7 @dx7: mov cx,300 cmp dx,347 je Color8 inc dx jmp @Aqui7 Color8: mov dx,338 mov cx,320 @Aqui8: mov ah,0Ch mov al,08h mov bh,00h int 10h cmp cx,329 je @dx8 inc cx jmp @Aqui8 @dx8: mov cx,320 cmp dx,347 je Color9 inc dx jmp @Aqui8 Color9: mov dx,338 mov cx,340 @Aqui9: mov ah,0Ch mov al,09h mov bh,00h int 10h cmp cx,349 je @dx9 inc cx jmp @Aqui9 @dx9: mov cx,340 cmp dx,347 je Color10 inc dx jmp @Aqui9 Color10: mov dx,338 mov cx,360 @Aqui10: mov ah,0Ch mov al,0Ah mov bh,00h int 10h cmp cx,369 je @dx10 inc cx jmp @Aqui10 @dx10: mov cx,360 cmp dx,347 je Color11 inc dx jmp @Aqui10 Color11: mov dx,338 mov cx,380 @Aqui11: mov ah,0Ch mov al,0Bh mov bh,00h int 10h cmp cx,389 je @dx11 inc cx jmp @Aqui11 @dx11: mov cx,380 cmp dx,347 je Color12 inc dx jmp @Aqui11 Color12: mov dx,338 mov cx,400 @Aqui12: mov ah,0Ch mov al,0Ch mov bh,00h int 10h cmp cx,409 je @dx12 inc cx jmp @Aqui12 @dx12: mov cx,400 cmp dx,347 je Salll inc dx jmp @Aqui12 Salll: ret Dib_Cuadros ENDP END Inicio
Aqui les dejo el ejecutable para que vean el resultado: http://www.megaupload.com/?d=L1KFHMYD
Code 2: Conversor de Decimal a Hexadecimal (Medio Arcaico la manera en que lo trabaje), pero lo hice sin usar variables, a punta de registros.
Código
span style="color: #000000; font-weight: bold;"> MODEL SMALL STACK 256 MOSTRAR MACRO M mov dx,OFFSET &M call Imprimir ENDM TERMINAR MACRO mov ax,4C00h int 21h ENDM DETENER MACRO mov ah,01h int 21h ENDM LINEA MACRO mov dl,0Ah mov ah,02h int 21h ENDM PRINTLETTER MACRO mov bx,OFFSET VALORES xlat mov dx,ax mov ah,02h int 21h ENDM PRINTBYTE MACRO mov bx,OFFSET VALORES xlat mov dx,ax mov ah,02h int 21h mov ax,di xlat mov dx,ax mov ah,02h int 21h ENDM PRINT3DIGIT MACRO mov bx,OFFSET VALORES xlat mov dx,ax mov ah,02h int 21h mov ax,si xlat mov dx,ax mov ah,02h int 21h mov ax,di xlat mov dx,ax mov ah,02h int 21h ENDM PRINTWORD MACRO mov bx,OFFSET VALORES xlat mov dx,ax mov ah,02h int 21h mov ax,cx xlat mov dx,ax mov ah,02h int 21h mov ax,si xlat mov dx,ax mov ah,02h int 21h mov ax,di xlat mov dx,ax mov ah,02h int 21h ENDM Tamaño EQU 4 DATASEG Mensaje DB 'Ingrese un Numero de Maximo 4 Digitos y Presione [Enter]: $' Msm_Salir DB 'A ingresado un Caracter no Valido. Presione cualquier tecla para Salir del Programa$' Msm_Exc DB 'Solo se Permite un Maximo de 4 Digitos. Intentelo de Nuevo$' Msm_Result DB 'El codigo Hexadecimal del Numero introducido es: $' VALORES DB '0123456789ABCDEF$' CODESEG Inicio: mov ax,@data mov ds,ax MOSTRAR Mensaje call Ascii_Hex DETENER Terminado: TERMINAR Ascii_Hex PROC NEAR jmp Comenzar Arriba: LINEA MOSTRAR Msm_Result jmp Multi Numero_DeMas: cmp al,0Dh je Arriba LINEA MOSTRAR Msm_Exc LINEA LINEA jmp Inicio Comenzar: xor al,al mov si,5 mov bx,0 mov cx,0 Escribir: dec si mov ah,01h int 21h cmp si,0 je Numero_DeMas cmp al,0Dh je Arriba cmp al,1Bh je Salir2 cmp al,30h jb Salir cmp al,39h ja Salir and al,0Fh cmp si,4 je @@3 cmp si,3 je @@2 cmp si,2 je @@1 cmp si,1 je @@0 @@3: mov bl,al jmp Escribir @@2: mov cl,bl mov bl,al jmp Escribir @@1: mov ch,cl mov cl,bl mov bl,al jmp Escribir @@0: mov bh,ch mov ch,cl mov cl,bl mov bl,al jmp Escribir Salir: mov dl,0Ah mov ah,02h int 21h MOSTRAR Msm_Salir jmp Terminado1 Salir2: jmp Terminado Multi: mov al,bh mov dx,1000 mov ah,0 mul dx mov si,ax mov al,bl mov dx,1 mov ah,0 mul dx mov di,ax add si,di mov al,ch mov dx,100 mov ah,0 mul dx mov di,ax mov al,cl mov dx,10 mov ah,0 mul dx mov bx,ax add bx,di add bx,si mov ax,bx mov dx,0 mov bx,16 Dividir: cmp ax,bx jb Otro_Lugar0 div bx mov di,dx mov dx,0 cmp ax,bx jb Otro_Lugar1 div bx mov si,dx mov dx,0 cmp ax,bx jb Otro_Lugar2 div bx mov cx,dx cmp ax,bx jb Otro_Lugar3 Otro_Lugar0: PRINTLETTER jmp Terminado1 Otro_Lugar1: PRINTBYTE jmp Terminado1 Otro_Lugar2: PRINT3DIGIT jmp Terminado1 Otro_Lugar3: PRINTWORD jmp Terminado1 ret Ascii_Hex ENDP Imprimir PROC NEAR push ax mov ah,09h int 21h pop ax Terminado1: ret Imprimir ENDP END Inicio
Aqui dejo el ejecutable para que lo prueben: http://www.megaupload.com/?d=1273QRVX