RE:Check Box en ensamblador
No se si te pueda ayudar esto
.model small
.stack 64
;-----------------------------------------------------------------------------------------------------------------------------------------------------------
.data
CR equ 13
LF equ 10
row db 00
col db 00
char db ?
menu db 0c9h, 21 dup (0cdh),0bbh,CR,LF
db 0bah,'*********************',0bah,CR,LF
db 0bah,'* Selecciona: *',0bah,CR,LF
db 0bah,'*********************',0bah,CR,LF
db 0bah,'[ ] Opcion 1 ',0bah,CR,LF
db 0bah,'[ ] Opcion 2 ',0bah,CR,LF
db 0bah,'[ ] Opcion 3 ',0bah,CR,LF
db 0bah,'[ ] Opcion 4 ',0bah,CR,LF
db 0bah,'[ ] Opcion 5 ',0bah,CR,LF
db 0c8h, 21 dup(0cdh),0bch,'$'
prompt db 'Selec= Ins./ Desel = Del. / Enter=OK /ESC=Salir','$'
respon db 'Seleccionaste las opciones: ',CR,LF,'$'
optio db 5 dup (' '),'$'
cont db 00 ;contador de opciones
;-----------------------------------------------------------------------------------------------------------------------------------------------------------
.code
inicio: mov ax,@data
mov ds,ax
push ds
pop es
call clean
call poscur
lea dx,menu
call messa
mov row,24
mov col,15
call poscur
lea dx,prompt
call messa
;------inicia el control-------------------------------------------------------------------------------
mov row,04
mov col,02
call poscur
keys:
mov ah,10h
int 16h
cmp ah,01h ;ESC?
je salir ;salimos
cmp ah,52h ;Insert?
je select ;selecciona opcion
cmp ah,53h ;Delete?
je deselect ;deselecciona
cmp ah,48h ;flecha arriba?
je upers
cmp ah,50h ;flecha abajo?
je downpers
cmp ah,1ch ;enter?
je opciones ;muestra opciones seleccionadas
jmp keys
upers:
dec row
call poscur
jmp keys
downpers:
inc row
call poscur
jmp keys
select:
call printx
jmp keys
deselect:
call prints
jmp keys
opciones:
call options
mov ah,08h
int 21h
salir:
call clean
mov row,00
mov col,00
call poscur
mov ax,4c00h
int 21h
;......................................
clean proc
mov ax,0600h
mov bh,71h
mov cx,0000h
mov dx,314fh
int 10h
ret
clean endp
;......................................
poscur proc
mov ah,02h
mov bh,0
mov dh,row
mov dl,col
int 10h
ret
poscur endp
;......................................
messa proc
mov ah,09h
int 21h
ret
messa endp
;......................................
printx proc
mov ah,09h
mov al,'X'
mov bh,0
mov bl,71h
mov cx,01
int 10h
ret
printx endp
;......................................
prints proc
mov ah,09h
mov al,' '
mov bh,0
mov bl,71h
mov cx,01
int 10h
ret
prints endp
;......................................
printc proc
mov ah,09h
mov al,char
mov bh,0
mov bl,71h
mov cx,01
int 10h
ret
printc endp
;......................................
scancar proc
mov ah,08h
mov bh,00
int 10h
ret
scancar endp
;......................................
options proc
lea si,optio
mov row,04
mov col,02
uno:
call poscur
call scancar
cmp al,'X'
je opa1
dos:
inc row
call poscur
call scancar
cmp al,'X'
je opa2
tres:
inc row
call poscur
call scancar
cmp al,'X'
je opa3
cuatro:
inc row
call poscur
call scancar
cmp al,'X'
je opa4
cinco:
inc row
call poscur
call scancar
cmp al,'X'
je opa5
jmp nosele
opa1:
mov al,'1'
mov [si],al
inc si
inc cont
jmp dos
opa2:
mov al,'2'
mov [si],al
inc si
inc cont
jmp tres
opa3:
mov al,'3'
mov [si],al
inc si
jmp cuatro
opa4:
mov al,'4'
mov [si],al
inc si
inc cont
jmp cinco
opa5:
mov al,'5'
mov [si],al
inc cont
jmp siga
nosele:
cmp cont,00
je Nohay
jmp siga
Nohay:
mov al,'N'
mov [si],al
siga:
mov row,12
mov col,00
call poscur
lea dx,respon
call messa
lea dx,optio
call messa
lea dx,prompt+38
call messa
ret
options endp
end inicio