|
|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - benedyt
Páginas: [1]
1
« en: Martes 1 de Febrero de 2011, 19:28 »
ESTO ES LO QUE TENGO ECHO PARA PASAR DE BINARIO A DECIMAL, HABER QUE TAL: .MODEL small .stack 100h .DATA cadleer db 9 long db ? cadescr db 9 DUP (?),'$' msj db 'Introduzca valor binario ... $' msj2 db 'Valor en decimal ... $' .CODE ; ------------------ MACROS ------------- posicionar MACRO fila,colum ; posiciona el cursor en fila, colum PUSH AX PUSH BX PUSH DX mov ah,2 ;código de función mov bh,0 ;página de video mov dh,fila ;fila mov dl,colum ;columna int 10h POP DX POP BX POP AX ENDM borrar MACRO ; macro borrar pantalla ;borrar pantalla PUSH AX PUSH BX PUSH CX PUSH DX mov ah,6 ;código de la función mov al,0 ;borrar pantalla mov bh,07h ;atributo para borrado mov cx,0 ;esquina superior izquierda (0,0) mov dx, 24*256 +79 ;esquina inferior derecha (24,79) int 10h POP DX POP CX POP BX POP AX ENDM leer MACRO FRASE ; lee frase del teclado PUSH AX PUSH DX ; leer cadena MOV DX,OFFSET FRASE MOV AH,0Ah INT 21h POP DX POP AX ENDM escribir MACRO FRASE ; muestra frase por pantalla PUSH AX PUSH DX ; escribir cadena MOV DX,OFFSET FRASE MOV AH,9 INT 21h POP DX POP AX ENDM escribe_car MACRO char ; metemos en la pila PUSH AX PUSH DX ; escribir cadena MOV AH,6 MOV DL,char ADD DL,48 ; sumamos para el codigo ASCII INT 21h ; recuperamos pila POP DX POP AX ENDM ; -------- PROGRAMA PRINCIPAL ---------- ; iniciando... MOV AX,@DATA MOV DS,AX ; cuerpo borrar posicionar 20,20 escribir msj leer cadleer ; lo metemos en la pila ; para dar la vuelta a los datos MOV SI,0 BUCLE: MOV AL, cadescr[SI] MOV AH,0 PUSH AX ADD SI,1 MOV BL,long MOV BH,0 CMP SI,BX JAE FINBUCLE ; si SI > long sale del bucle JMP BUCLE FINBUCLE: ; recogemos los datos de la pila ; y vamos calculando ; en DL tendremos el resultado calculado MOV DL,0 ; lo ponemos a 0 ; recogemos el primer digito POP CX CMP CL,48 ; lo comparamos con '0' -> 48 JE CONT MOV DL,1 CONT: ; calculamos demas digitos MOV SI,1 BUCL2: MOV BL,long MOV BH,0 CMP SI,BX JAE FINBUCL2 ; si SI <= long sale del bucle POP CX CMP CL,48 ; comparamos si el digito es '0' -> 48 JE CONTINUA ; si es 0 saltamos todo. ; si no es 0 suponemos que es 1, aunque sea cualquier digito MOV DI,0 ; iniciamos el indice MOV AL,1 POTENCIA: ; calculamos potencia en AL CMP DI,SI JAE FINPOT MOV BL,2 MUL BL INC DI JMP POTENCIA FINPOT: ADD DL,AL ; EL RESULTADO LO GUARDAREMOS EN DL CONTINUA: ADD SI,1 JMP BUCL2 FINBUCL2: posicionar 21,20 escribir msj2 MOV CL,DL MOV CH,0 CALL Visualiza_Numero ; cerrando... MOV AH,4ch INT 21h Visualiza_Numero PROC MOV CH,CL CMP CH,100 ; comprobamos si tiene 3 digitos JB DOSDIG ; Tres digitos MOV AH,0 MOV AL,CH MOV BL,100 DIV BL MOV CX,AX escribe_car CL DOSDIG: CMP CH,10 JB UNDIG ; Dos digitos MOV AH,0 MOV AL,CH MOV BL,10 DIV BL MOV CX,AX escribe_car CL UNDIG: escribe_car CH RET ENDP END
2
« en: Lunes 31 de Enero de 2011, 20:23 »
Desarrollar un programa en ensamblador del 8086 en entorno MS-DOS que muestre en pantalla un mensaje en el que se solicite una cadena binaria de 8 dígitos. A continuación, el programa se encargará de calcular el valor equivalente de dicha representación binaria según los siguientes sistemas de representación: - Binario natural sin signo. - Binario natural con signo. - Complemento a 1. - Complemento a 2. - Decimal Codificado en Binario BCD. - Hexadecimal. QUE ALGUIEN ME AYUDE, POR FAVOR!!
3
« en: Martes 8 de Junio de 2010, 20:48 »
muxas gracias!!!
4
« en: Martes 8 de Junio de 2010, 19:27 »
¿como se accede a memoria de video en modo texto? alguien que tenga idea que me responda!!!!!!!!
5
« en: Domingo 30 de Mayo de 2010, 22:44 »
tengo un problea cn el 8086, intento hacer que en modo grafico me aparezca la letra 'A', pero me sale la 'H'. alguna ayuda!!!! aqui os dejo lo que tengo hecho: .MODEL SMALL .STACK 100h .DATA pixfila_a dw 80 pixcol_a dw 140 .CODE macro_letra_a MACRO pixf,pixc local pinta1a,pinta2a,pinta3a,pinta4a MOV DL, 0 MOV DH,0 MOV ax,pixf MOV bx,320 MUL bx ADD ax,pixc MOV DI,ax MOV AL,15 MOV cx, DI ADD cx, 30 ; A partir de aki se empieza a escribir las lineas de la 'a', 2 horizontales y 2 verticales ( pinta1h, pinta2h,pinta3h,pinta4h ), pero solo me salen las 2 verticales y una horizontal (la de abajo). pinta1h: MOV ES:[DI], AL ADD DI, 320 INC DL CMP DL, 30 jbe pinta1h MOV ax,320 MOV bx,10 MUL bx SUB DI,ax MOV AL,15 pinta2h: MOV ES:[DI], AL INC DI INC DH CMP DH, 30 jbe pinta2h MOV DL, 0 MOV DI,cx pinta3h: MOV ES:[DI], AL ADD DI, 320 INC DL CMP DL, 30 jbe pinta3h MOV DL, 0 MOV DI,cx pinta4h: MOV ES:[DI], AL INC DI INC DH CMP DH, 30 jbe pinta4h ENDM MOV AX,@DATA MOV DS,AX MOV ah,0 MOV al,13h int 10h MOV AX, 0A000h MOV ES, AX macro_letra_a pixfila_a,pixcol_a MOV AH,0 INT 16h CMP AX, 011Bh JE SALIR SALIR: MOV AH,4ch INT 21h END
Páginas: [1]
|
|
|