Advertisement
Geovanny

ProyectoArquitectura2, macros.asm

Dec 31st, 2012
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .model tiny
  2.  
  3. .data  
  4.     separador db "----------------------------------------",13,10,"$"
  5.     saltov db " ",13,10,"$"
  6.     about db " ABOUT",13,10,"$"  
  7.     video db " VIDEO",13,10,"$"
  8.     os db " SISTEMA OPERATIVO",13,10,"$"
  9.     procesador db " PROCESADOR",13,10,"$"
  10.     memoria db " MEMORIA",13,10,"$"
  11.     hd db " DISCO DURO",13,10,"$"
  12.     salirtxt db " SALIR",13,10,"$"  
  13.     nada db "",13,10,"$"  
  14.     hora db "00:00:00",13,10,"$"
  15.     pres1 db "I","B","M ", "Gossip, el 'detective' de tu computador",13,10,"$"
  16.     pres2 db "Arquitectura de Computadores, 2012",13,10,"$"
  17.     pres3 db "Geovanny Mendez Marin, Ingeniería en Computación",13,10,"$"
  18.     vid1 db "Informacion del Video",13,10,"$"
  19.     os1 db "Informacion del Sistema Operativo",13,10,"$"
  20.     procesador1 db "Informacion del procesador",13,10,"$"
  21.     memoria1 db "Informacion de la memoria del sistema",13,10,"$"
  22.     hd1 db "Informacion del Disco Duro",13,10,"$"
  23.     fecha db "00/00/0000",13,10,"$"
  24.     ruta_directorio db "C:\GeoASM",0 ; Rutas asi son, con cero al final
  25.     msjcarpeta1 db "SE CREO LA CARPETA C:\GeoASM",13,10,"$"
  26.     msjcarpeta2 db "Si esta usando emulador DOSBOX, busque en",13,10,"$"    
  27.     msjcarpeta3 db "RUTACOMPILACION\...\",13,10,"$"    
  28.     msjcarpeta4 db "Si ya fue creada el emu8086 enviara un mensaje",13,10,"$"    
  29.     msj1 db "UNIDAD DE DISCO POR OMISION: ",13,10,"$"
  30.     unidad db "0",13,10,"$"
  31. ;    msj2 db "Version del DOS: ",13,10,"$"
  32. ;    dos db "0",13,10,"$"
  33.     msj2 db "Numero de sectores por grupo: ",13,10,"$"
  34.     msj3 db "Numero de grupos disponibles: ",13,10,"$"
  35.     msj4 db "Numero de bytes por sector: ",13,10,"$"
  36.     msj5 db "Numero de grupo en el disco: ",13,10,"$"
  37.     dato_espacio_libre dw ?
  38.     resultado_espacio_libre db "0000000000000000",13,10,"$"    
  39.     msj6 db "ESPACIO DISPONIBLE EN EL DISCO: ",13,10,"$"
  40.     msj7 db "MODO DE VIDEO: ",13,10,"$"
  41.     modo_video db "0",13,10,"$"
  42.     msj8 db "VERSION DOS ",13,10,"$"
  43.     version_dos db "0.00",13,10,"$"  
  44.     msj9 db "COUNTRY CODE:",13,10,"$"      
  45.     dato_country_code dw ?
  46.     resultado_country_code dw "0000000000000000",13,10,"$"
  47.     msj10 db "TAMANO DE LA MEMORIA BASE:",13,10,"$"      
  48.     dato_tamano_memoria dw ?
  49.     resultado_tamano_memoria dw "0000000000000000 kilobytes",13,10,"$"
  50.     msj11 db "EXPANSION DE MEMORIA:",13,10,"$"      
  51.     dato_expansion_memoria dw ?
  52.     resultado_expansion_memoria dw "0000000000000000 kilobytes",13,10,"$"
  53.     msj12 db "VERIFICACION DE COPROCESADOR MATEMATICO:",13,10,"$"  
  54.     msj13 db "Coprocesador matematico verificado",13,10,"$"
  55.     msj14 db "Coprocesador matematico ausente",13,10,"$"
  56.    
  57.    
  58.          
  59. ;print macro parametro  
  60.   ;  mov dx, offset parametro
  61.    ; mov ah,9
  62.   ;  int 21h  
  63. ;endm      
  64.        
  65. MOVER equ mov      
  66.        
  67. clear macro
  68.     xor dx,dx
  69.     xor dh,dh
  70.     xor dl,dl
  71. endm    
  72.      
  73. print macro parametro  
  74.     clear        
  75.     MOVER ah,9  
  76.     lea dx,parametro          
  77.     int 21h  
  78. endm  
  79.  
  80. beep macro
  81.  
  82.     MOV     AH,02h
  83.     MOV     DL,07h
  84.     INT     21h
  85.    
  86. endm
  87.  
  88.  
  89. print_location macro texto,x,y
  90.     clear  
  91.     mov ah,02h
  92.     mov bh,00d
  93.     mov dh,x
  94.     mov dl,y
  95.     int 10h
  96.          
  97.     MOVER ah,9  
  98.     lea dx,texto          
  99.     int 21h  
  100. endm  
  101.  
  102. print_step macro parametro
  103.              
  104.    mov dl, parametro
  105.  
  106.    lea si, greeting
  107.  
  108.    mov dl, [si]
  109.    inc si
  110.        
  111.    ; Sección del Color  
  112.    ; mov bx, 011b ; Color. (table below).
  113.    ; mov cx, 50d
  114.     ;int 10h
  115.        
  116.     endm
  117.    
  118. salto macro    
  119.     clear
  120.     MOVER ah,9
  121.     lea dx,saltov
  122.     int 21h  
  123. endm      
  124.    
  125. espera macro
  126.     MOVER ax,0C07h
  127.     int 21h        
  128. endm
  129.      
  130. print_digito macro parametro
  131.     MOVER dl,parametro+48  
  132.     MOVER ah,02h       
  133.     int   21h          
  134. endm              
  135.                
  136. dibujar_bandera macro
  137.          
  138.         ; Primera Franja (Azul)
  139.         mov ax,0600h
  140.         mov bh,97h
  141.         mov cx,0000h
  142.         mov dx, 034fh
  143.         int 10h      
  144.            
  145.         ; Segunda Franja (Blanca)
  146.         mov ax,0600h
  147.         mov bh,70h
  148.         mov cx,0400h
  149.         mov dx, 074fh
  150.         int 10h      
  151.                
  152.         ; Tercera Franja (Roja)
  153.         mov ax,0600h
  154.         mov bh,47h
  155.         mov cx,0800h
  156.         mov dx, 0B4fh
  157.         int 10h      
  158.            
  159.         ; Cuarta Franja (Roja)
  160.         mov ax,0600h
  161.         mov bh,47h
  162.         mov cx,0C00h
  163.         mov dx, 104fh
  164.         int 10h          
  165.                
  166.         ; Quinta Franja (Blanca)
  167.         mov ax,0600h
  168.         mov bh,70h
  169.         mov cx,1100h
  170.         mov dx, 144fh
  171.         int 10h          
  172.        
  173.         ; Sexta Franja (Azul)
  174.         mov ax,0600h
  175.         mov bh,97h
  176.         mov cx,1500h
  177.         mov dx, 184fh
  178.         int 10h
  179.        
  180.         tocar_patriotica
  181.        
  182.         espera
  183.    
  184. endm              
  185.  
  186. limpiar_pantalla macro  
  187.     mov ax,0600h
  188.     mov bh,07h
  189.     mov cx,0000h
  190.     mov dx, 204fh
  191.     int 10h  
  192. endm
  193.  
  194.  
  195. pintar_interfaz macro
  196.  
  197.     ; Primera Columna (Opciones)
  198.    
  199.     ; Columna ------------------------------------------
  200.     mov ax,0600h
  201.     mov bh,47h
  202.     mov cl,0d ; Columna Inicial
  203.     mov ch,0d ; Fila Inicial
  204.     mov dl,19d ; Ultima columna
  205.     mov dh,24h ; Ultima fila
  206.     int 10h                                            
  207.        
  208.     salto
  209.     salto
  210.     print_location about,1,0
  211.     salto    
  212.     print_location video 3,0
  213.     salto
  214.     print_location os 5,0
  215.     salto    
  216.     print_location procesador 7,0
  217.     salto
  218.     print_location memoria 9,0    
  219.     salto    
  220.     print_location hd 11,0
  221.     salto
  222.     print_location salirtxt 13,0
  223.     ;obtener_hora
  224.     ;print_location hora 20,6  
  225.  
  226.     obtener_fecha
  227.     print_location fecha 19,5    
  228.          
  229. endm      
  230.  
  231. pintar_about macro  
  232.    
  233.     limpiar_panel
  234.     print_location pres1 0,21
  235.     print_location pres2 1,21
  236.     print_location pres3 2,21    
  237. endm
  238.  
  239. pintar_panel_video:
  240.     limpiar_panel
  241.     print_location vid1 0,21
  242.    
  243.     obtener_modo_video
  244.     print_location msj7 2,21
  245.     print_location modo_video 3,21  
  246.    
  247.     jmp bucle
  248.  
  249. pintar_panel_about:
  250.     limpiar_panel
  251.     print_location pres1 0,21
  252.     print_location pres2 1,21
  253.     print_location pres3 2,21
  254.     jmp bucle    
  255.  
  256.  
  257. pintar_panel_os:
  258.     limpiar_panel
  259.     print_location os1 0,21  
  260.    
  261. ;    print_location msj2 2,21
  262.    
  263. ;    determinar_version_dos
  264. ;    print_location dos 3,21  
  265.  
  266.     obtener_version_dos
  267.     print_location msj8 2,21
  268.     print_location version_dos 3,21
  269.      
  270.    
  271.     print_location msj9 5,21    
  272.     obtener_country_code
  273.     mostrar_registro_16_bits dato_country_code, resultado_country_code
  274.     print_location resultado_country_code 6,21
  275.  
  276.    
  277.      
  278.     jmp bucle    
  279.  
  280.  
  281. pintar_panel_procesador:
  282.     limpiar_panel
  283.     print_location procesador1 0,21
  284.    
  285.     print_location msj12 2,21
  286.     hallar_coprocesador_matematico 3
  287.    
  288.     jmp bucle    
  289.  
  290.  
  291. pintar_panel_memoria:
  292.     limpiar_panel
  293.     print_location memoria1 0,21
  294.  
  295.     print_location msj10 2,21    
  296.     obtener_tamano_memoria
  297.     mostrar_registro_16_bits dato_tamano_memoria, resultado_tamano_memoria
  298.     print_location resultado_tamano_memoria 3,21
  299.  
  300.     print_location msj11 5,21    
  301.     obtener_tamano_expansion_memoria
  302.     mostrar_registro_16_bits dato_expansion_memoria, resultado_expansion_memoria
  303.     print_location resultado_expansion_memoria 6,21
  304.  
  305.     jmp bucle    
  306.  
  307.  
  308. pintar_panel_hd:
  309.     limpiar_panel
  310.     print_location hd1 0,21  
  311.     crear_carpeta ruta
  312.     print_location msjcarpeta1, 2, 21
  313.     print_location msjcarpeta2, 3, 21
  314.     print_location msjcarpeta3, 4, 21
  315.     print_location msjcarpeta4, 5, 21
  316.     print_location msj1, 7, 21  
  317.      
  318.     determinar_unidad_por_omision
  319.     print_location unidad, 8, 21
  320.  
  321.     print_location msj6, 10, 21
  322.    
  323.     print_location msj2, 11, 21    
  324.     obtener_espacio_libre 0,ax  ; 0, unidad por omision
  325.     mostrar_registro_16_bits dato_espacio_libre, resultado_espacio_libre
  326.     print_location resultado_espacio_libre 12,21
  327.  
  328.     print_location msj3, 13, 21    
  329.     obtener_espacio_libre 0,bx  ; 0, unidad por omision
  330.     mostrar_registro_16_bits dato_espacio_libre, resultado_espacio_libre
  331.     print_location resultado_espacio_libre 14,21
  332.  
  333.     print_location msj4, 15, 21    
  334.     obtener_espacio_libre 0,cx  ; 0, unidad por omision
  335.     mostrar_registro_16_bits dato_espacio_libre, resultado_espacio_libre
  336.     print_location resultado_espacio_libre 16,21
  337.  
  338.     print_location msj5, 17, 21    
  339.     obtener_espacio_libre 0,dx  ; 0, unidad por omision
  340.     mostrar_registro_16_bits dato_espacio_libre, resultado_espacio_libre
  341.     print_location resultado_espacio_libre 18,21
  342.          
  343.     jmp bucle    
  344.  
  345. limpiar_panel macro
  346.     ; Columna ------------------------------------------    
  347.     beep
  348.     mov ax,0600h
  349.     mov bh,07h
  350.     mov cl,20d ; Columna Inicial
  351.     mov ch,0d ; Fila Inicial
  352.     mov dl,79d ; Ultima columna
  353.     mov dh,24h ; Ultima fila
  354.     int 10h    
  355. endm
  356.  
  357. inicializar_mouse macro
  358.     mov ax,00h ;Habilita el Mouse
  359.     int 33h
  360.    
  361.     cmp al,00h ; Si no se encontró el driver, al debería estar en 0
  362.     je salir ; Si eso es así, se debe salir del programa
  363.    
  364.     mov ax,01h ; Funcion 01h en ax para int 33h, muestra el puntero
  365.     int 33h  
  366. endm
  367.  
  368.  
  369. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  370. ; FUNCIONES DEL SISTEMA;
  371. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  372.  
  373. ; OBTENIENDO LA HORA
  374.  
  375. macro hora_a_ascii registro
  376.    
  377.     mov al, registro  
  378.    
  379.     push dx                  
  380.  
  381.     mov ah, 0                  
  382.     mov dl, 10                  
  383.     div dl                      
  384.     or ax, 3030h                
  385.  
  386.     pop dx                        
  387.  
  388. endm
  389.  
  390. macro obtener_hora
  391.  
  392.     lea bx, hora    
  393.  
  394.     push ax                      
  395.     push cx                
  396.  
  397.     mov ah, 2ch                  
  398.     int 21h                      
  399.  
  400.     hora_a_ascii ch
  401.     mov [bx], ax                
  402.                                  
  403.     hora_a_ascii cl
  404.     mov [bx+3], ax                
  405.                                
  406.     hora_a_ascii dh                                          
  407.     mov [bx+6], ax                
  408.                                                                                
  409.     pop cx                      
  410.     pop ax                      
  411.  
  412. endm
  413.  
  414. ; OBTENIENDO LA FECHA  
  415.  
  416. macro obtener_fecha
  417.  
  418.     lea bx, fecha    
  419.  
  420.     push ax                      
  421.     push cx                
  422.  
  423.     mov ah, 2ah                  
  424.     int 21h                      
  425.  
  426.     hora_a_ascii dl
  427.     mov [bx], ax                
  428.                                  
  429.     hora_a_ascii dh
  430.     mov [bx+3], ax
  431.    
  432.     push bx  ; /////////
  433.  
  434.     sub dx,dx
  435.    
  436.     mov bx,0  
  437.     mov ax,cx
  438.     mov bx,100
  439.     div bx ; se guarda el resultado en
  440.    
  441.     hora_a_ascii al ; Es redundante, pero ni modo estas cosas pasan :p              
  442.    
  443.     pop bx
  444.     MOV [BX+6], AX            
  445.  
  446.     hora_a_ascii dl
  447.     MOV [BX+8], AX              
  448.                                                                                
  449.     pop cx                      
  450.     pop ax                      
  451.  
  452. endm  
  453.  
  454. ; CREAR DIRECTORIO
  455.  
  456. macro crear_carpeta ruta  
  457.     ; Si se corre desde el emulador, entonces
  458.     ; c:\emu8086\vdrive\C\ruta
  459.  
  460.     mov dx, offset ruta_directorio
  461.     mov ah, 39h
  462.     int 21h
  463.    
  464. endm  
  465.  
  466.  
  467.  
  468. ; IMPRIMIR LA UNIDAD DE DISCO POR OMISIÓN
  469. ; 0->A, 1->B, 2->C, 3->D, ... , n->HexChar
  470.  
  471. macro determinar_unidad_por_omision
  472.     lea bx, unidad  
  473.    
  474.     mov ah,19h  ; Unidad de Disco por Omision
  475.     int 21h    
  476.    
  477.     or al,30h
  478.  
  479.     mov [bx],al
  480. endm
  481.  
  482. ;; DETERMINAR LA VERSIÓN DEL DOS  
  483.  
  484. ;macro determinar_version_dos
  485. ;    sub dx,dx
  486.    
  487. ;    lea bx,dos
  488.  
  489. ;    mov al,30h  ; Unidad de Disco por Omision
  490. ;    int 21h       
  491.    
  492. ;    or al,30h
  493.  
  494. ;    mov [bx],al
  495.    
  496. ;endm
  497.  
  498. nota macro tono,duracion,bucle1,bucle2
  499.          
  500.         mov al, 10110110b   ; canal 2
  501.         out 43h, al         ; operación y modo 3
  502.  
  503.         mov ax, tono        ; frecuencia en ax: 1.193.180 / 400
  504.         out 42h, al         ; enviar byte bajo primero
  505.        
  506.         mov al, ah          ; colocar byte alto en al
  507.         out 42h, al     ; y enviarlo
  508.  
  509.         or      al, 00000011b   ; bit 0 y bit 1 activos
  510.         out     61h, al         ; y excitar el parlante con el PPI
  511.  
  512.         mov     bx, duracion
  513. bucle1:
  514.         mov     cx, 60535
  515. bucle2:
  516.         dec     cx
  517.         jne     bucle2
  518.         dec     bx
  519.         jne     bucle1       ; si no es igual, seguir esperando
  520.  
  521. endm
  522.  
  523. macro tocar_patriotica
  524.  
  525.     cli
  526.  
  527.     in  al, 61h     ;  Salvar el byte de información en el
  528.     push    ax      ; puerto 61h.
  529.     cli
  530.  
  531.     mov cx, 100h
  532.    
  533.     nota 3000,8,001,a001   ; SOL
  534.  
  535.     nota 3100,3,002,a002   ; FA
  536.  
  537.     nota 2650,5,003,a003   ; LA
  538.  
  539.     nota 3000,7,004,a004   ; SOL
  540.  
  541.     nota 3000,4,005,a005   ; SOL
  542.    
  543.     nota 2200,6,006,a006   ; DO(A)             
  544.  
  545.     nota 2300,6,007,a007   ; SI
  546.    
  547.     nota 2650,4,008,a008   ; LA  
  548.  
  549.     nota 2300,5,009,a009   ; SI
  550.    
  551.     nota 2650,10,010,a010  ; LA
  552.  
  553.     nota 2300,8,011,a011   ; SI
  554.  
  555.     nota 2200,3,012,a012   ; DO
  556.  
  557.     nota 1950,5,013,a013   ; RE
  558.  
  559.     nota 2300,7,014,a014   ; SI
  560.  
  561.     nota 3000,4,015,a015   ; SOL
  562.    
  563.     nota 2650,6,016,a016   ; LA            
  564.  
  565.     nota 3000,6,017,a017   ; SOL
  566.    
  567.     nota 3100,4,018,a018   ; FA  
  568.  
  569.     nota 2650,5,019,a019   ; LA
  570.    
  571.     nota 3000,10,020,a020  ; SOL
  572.  
  573.  
  574.     in al, 61h         ; Desactivar el parlante  
  575.     and al, 11111100b   ; 0FCh desactiva el parlante
  576.     out 61h, al         ; enviarlo al puerto
  577.  
  578.     pop ax      ;  Restablecer el byte de información
  579.     out 61h, al     ; original que estaba en el puerto 61h.
  580.     sti
  581.  
  582. endm
  583.  
  584.  
  585.  
  586. obtener_espacio_libre macro unidad,funcion
  587.  
  588.     mov ah,36h ;rutina para solicitar espacio libre en el disco
  589.     mov dl,unidad
  590.     int 21h
  591.    
  592.     mov dato_espacio_libre,funcion    
  593.     ; ax=numero de sectores por grupo
  594.     ; bx=Numero de grupos disponibles
  595.     ; cx=Numero de bytes por seccion (Por lo general 512)
  596.     ; dx=Numero de grupo en el disco
  597.  
  598. endm
  599.  
  600. macro iteracion_push
  601.     sub dx,dx
  602.     div bx
  603.     or dx,3030h
  604.     push dx    
  605. endm
  606.  
  607. iteracion_pop macro incremento
  608.  
  609.     pop dx
  610.     ;mov ah,02h
  611.     ;int 21h  
  612.     mov [bx+incremento],dx
  613. endm
  614.  
  615. iteracion_pop_low macro incremento ; para obtener el último digito
  616.     ; pues me estaba dando problemas con el residuo y el dividendo
  617.     ; con un cero adicional
  618.  
  619.     pop dx
  620.     ;mov ah,02h
  621.     ;int 21h
  622.     ;mov dh,0  
  623.     mov [bx+incremento],dl
  624.  
  625. endm
  626.  
  627. mostrar_registro_16_bits macro elemento, resultado
  628.    
  629.     sub ax,ax
  630.     sub bx,bx
  631.    
  632.     mov ax,elemento  ; Division entre 10, dividendo es dato del sistema
  633.     mov bx,10    ; Que divida entre 10, divisior es 10
  634.     ; el resultado se guarda en ax
  635.     ; el residuo se guarda en dx
  636.    
  637.     iteracion_push   ; Iteración 1
  638.     iteracion_push ; Iteración 2
  639.     iteracion_push  ; Iteración 3
  640.     iteracion_push  ; Iteración 4                    
  641.     iteracion_push ; Iteración 5
  642.     iteracion_push  ; Iteración 6
  643.     iteracion_push  ; Iteración 7
  644.     iteracion_push  ; Iteración 8
  645.     iteracion_push  ; Iteración 9
  646.     iteracion_push  ; Iteración 10
  647.     iteracion_push  ; Iteración 11
  648.     iteracion_push  ; Iteración 12
  649.     iteracion_push  ; Iteración 13
  650.     iteracion_push  ; Iteración 14
  651.     iteracion_push   ; Iteración 15
  652.    
  653.     lea bx,resultado
  654.     or ax,3030h  
  655.     push ax
  656.      
  657.     iteracion_pop   ; Iteración 1
  658.     iteracion_pop 1 ; Iteración 2
  659.     iteracion_pop 2  ; Iteración 3
  660.     iteracion_pop 3  ; Iteración 4                    
  661.     iteracion_pop 4 ; Iteración 5
  662.     iteracion_pop 5  ; Iteración 6
  663.     iteracion_pop 6  ; Iteración 7
  664.     iteracion_pop 7  ; Iteración 8
  665.     iteracion_pop 8  ; Iteración 9
  666.     iteracion_pop 9  ; Iteración 10
  667.     iteracion_pop 10  ; Iteración 11
  668.     iteracion_pop 11  ; Iteración 12
  669.     iteracion_pop 12  ; Iteración 13
  670.     iteracion_pop 13  ; Iteración 14
  671.     iteracion_pop 14   ; Iteración 15
  672.     iteracion_pop_low 15   ; Iteración 16
  673.  
  674. endm  
  675.  
  676. macro obtener_modo_video
  677.  
  678.     lea bx, modo_video  
  679.     push bx
  680.     mov ah,0Fh  ; Obtener modo de video  
  681.     int 10h  
  682.    
  683.     or al,30h
  684.     mov dl,al
  685.    
  686.     pop bx
  687.     mov [bx],al
  688.    
  689.  
  690.    
  691. endm
  692.  
  693. macro obtener_version_dos
  694.     lea bx, version_dos  
  695.    
  696.     ; Parte entera (Numero primario de version)
  697.     push bx  ; Guardar en la pila 1
  698.    
  699.     mov ax,3306h  ; Obtiene la versión del DOS
  700.     int 21h    
  701.        
  702.     mov ax,bx
  703.    
  704.     or ax,3030h ; Lo pasa a formato ASCII
  705.        
  706.     pop bx  ; Liberar la pila 1
  707.     mov [bx],al
  708.     mov [bx+2],ah
  709.    
  710. endm
  711.  
  712. macro obtener_country_code
  713.  
  714.     mov al,255d
  715.     mov bx,0
  716.    
  717.     mov ah,38h ;rutina para solicitar country code
  718.     int 21h
  719.    
  720.     mov bx,dx
  721.     mov dato_country_code , dx    
  722.     ; bx = COUNTRY CODE  
  723.  
  724.  
  725. endm
  726.  
  727. macro obtener_tamano_memoria
  728.  
  729.     int 12h  ; Área de datos del tamaño de la memoria                               ;
  730.     mov dato_tamano_memoria , ax    
  731.  
  732. endm
  733.  
  734. macro obtener_tamano_expansion_memoria
  735.  
  736.     int 15h  ; Área de datos del tamaño de la memoria
  737.     mov ah,88h                               ;
  738.     mov dato_expansion_memoria , ax    
  739.  
  740. endm
  741.  
  742. hallar_coprocesador_matematico macro renglon
  743.  
  744.     push ax
  745.     push dx
  746.     int 11h                  ; call interrupt 11h  (Equipment check)
  747.     and ax,2                 ; single out bit 1  Coprocessor bit
  748.     cmp ax,2                 ; 2=installed  0=none
  749.     jz hay             ; if installed, jump to end
  750.     print_location msj14, renglon,21
  751.    
  752.     hay:
  753.  
  754.         print_location msj13, renglon,21                  
  755.                                            
  756. endm
  757.  
  758.  
  759. salir:
  760.     mov ax,02h ;Oculta el apuntador del ratón
  761.     int 33h  
  762.        
  763.     ; Devuelve la consola a su estado normal          
  764.     mov ah,00h ; Establece el modo de texto
  765.     mov al,03h
  766.     int 10h
  767.    
  768.     .exit ; El conjunto de instrucciones para salir, incluidas en salir
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement