Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
; reloj25.asm: Reloj Gigante, apacheco@ieee.org, Nov'99. main mov int push call call call pop mov mov mov call mov int mov mov int mov mov int mov mov int ret ah, 0fh 10h ax video loc_rom_chr paint ax modo, al pag, 0 cursor, 0607h video ax, 4c00h 21h ; get video mode ; ; ; ; ; ; ; ; al=current video mode video en pag #1 sin cursor apuntador a bitmap de digitos 0-9 dibuja reloj hasta pulsar tecla 'esc' restablece modo video restablece pag #0 restablece cursor .. en rutina video
; fin: regresa a DOS ; set video mode ; modo=80x25x16 p/reloj ; select page ; no. pag. ; set cursor type (Jump-274) ; ch=inicio, cl=final
video
ah, 00h al, [offset(modo)] 10h ah, 05h al, [offset(pag)] 10h ah, 01h cx, [offset(cursor)] 10h
loc_rom_chr bitmap mov mov mov int ret paint cld add mov @again call call call call jnz ret prtdig mov mov @30 mov mov bytes/chr) mul mov add dec
; out: cx=bytes/chr, dl=rows/chr, es:bp=inicioah, 11h al, 30h bh, 3 10h ; (Brey-721) ; bitmap 8x8 / chr
; auto-incremento(si) bp, 180h ; start='0'=es:bp+(48*8=180h) digitos, bp ; graba loc. inicio bitmap-digitos delay ; retardo < 1 seg gettime ; lee reloj del sistema prtdig ; imprime digitos del reloj getch @again count, 0 lim_x, pos_x si, [offset(count)] al, 8 ; Imprime reloj gigante (99:99:99) ; pos-x inicial ; digito a imprimir en BCD ; factor multiplicativo (8
byte [si+offset(hr)] ; ax=[hr+count]*8 si, [offset(digitos)] ; apunta a inicio de bitmap si, ax ; si=digitos+dig*8 si ; ajuste(-1): extra-renglon-0
mov call inc cmp jb ret @40 pr1dig sub mov mov add es: lodsb mov call mov and ror mov jnz mov push call inc call pop call dec inc mov cmp jb add cmp jb ret mov mov mov mov int ret mov mov mov mov int ret mov int cmp jnz mov int
ycoord, pos_y-2 pr1dig count count, no_digitos @30 lim_x, 8 al, [offset(lim_x)] xcoord, al lim_x, 8 pels, al gotoxy al, [offset(pels)] al, pos pos, 1 al, pixel @60 al, 32 ax putch ycoord gotoxy ax putch ycoord xcoord dl, lim_x xcoord, dl @50 ycoord, 2 ycoord, pos_y+16 @40 ah, 02h bh, [offset(pag)] dl, xcoord dh, ycoord 10h ah, bl, bh, cx, 10h 09h color [offset(pag)] 1
; ; ; ;
ajuste para obtener min-x imprime un digito a la vez xcoord = min-x max-x = min-x + 8
@50
; al=bitmap(es:si++) ; pels = 8 pixeles ; posiciona cursor ; recarga bitmap ; z=0 si bit(pos)=1 en al ; prepara siguiente bit ; si bit=1 imprime ascii(178) ; bit=1? ; si bit=o imprime espacio ; imprime pixel-gigante ; inicia: renglon-doble
@60
; termina: renglon-doble ; sig. columna ; ultima columna? ; sig. renglon ; ultimo renglon?
gotoxy
putch
getch
cmp @nokey ret delay @70 @80 mov push loop pop loop ret
al, escape cx, 1fffh cx @80 cx @70 ah, 2ch 21h al, ch
gettime mov int dl=1/100seg mov aam mov mov mov aam mov mov mov aam mov mov ret escape pixel pixel=1 color pos_x pos_y no_digitos '99:99:99' modo db cursor dw pag db digitos count pels pos dw dw db db equ equ equ equ equ equ
; get hr ; a BCD (ah=centenas, al=decenas) [offset(hr)+0], ah ; set hr [offset(hr)+1], al al, cl ; get min ; a BCD [offset(min)+0], ah ; set min [offset(min)+1], al al, dh ; get seg ; a BCD [offset(seg)+0], ah ; set seg [offset(seg)+1], al 27 178 00011110b 7 5 8 ; tecla 'esc' para finalizar programa ; 15,178,224 caracter ascii a imprimir si ; ; ; ; color: fondo=azul, letra=amarilla columna inicial renglon inicial numero de digitos gigantes del reloj
3 ffffh 1 ? ? ? 10000000b
; Texto: 80x25x16 ; cursor-off ; pagina #1 ; ; ; ; offset del apuntador a bitmap contador de digitos del reloj mapa de 8 bits (un renglon de mascara para sensar un bit en del 0-9 en ROM-BIOS impresos un caracter) una posicion dada
; posicion x-inicial y x-final del cursor ; posicion-x actual del cursor ; posicion-y actual del cursor ; ; ; ; ; Horas (BCD) ':' = BCD a ASCII = 10+48 = 58 Minutos (BCD) ':' Segundos (BCD)
Bibliografa: http://www.depi.itch.edu.mx/apacheco/asm/reloj25.asm
Cajero
Cobrar
<<include>> Validar
Entregar ticket
Cliente
Pagar
Recibir cambio
Cobrar
Dar cambio
Cajero
Pagar
Cancelar
Administrador
<<include>> Validar
Existencias
<<include>>
Actualizar producto
ADMINISTRA R LA CAJA
CAJERO
ASEGURA LA CAJA
DUEO DE TIENDA
CUENTA EL DINERO
ADMINISTRADOR
PROVEEDOR
Ventas
INGRESAR CODIGO DE BARRAS
AGREGAR PRODUCTO
EFECTIVO
VALES
TARJETA
PRODUCTOS
CONCRETAR VENTA
PROVEEDORES
PROVEEDORES
AGREGAR
SELECCIONAR PROVEEDOR
MODIFICAR
ELIMINAR
ELIMINAR ?
NO
SI
GUARDAR EN BD
PROVEEDORES
CLIENTES
CLIENTES
AGREGAR
SELECCIONAR CLIENTES
ELIMINAR ?
NO
SI
GUARDAR EN BD
CLIENTES
CORTE DE CAJA
SELECCIONAR CAJERO
FECHA
GENERAR CORTE