|
Mostrar Mensajes
|
Páginas: 1 2 [3]
|
22
|
Programación / ASM / Re: ¿como aprender ensamblador?
|
en: 11 Julio 2018, 12:49 pm
|
Como bien dice el compa de arriba , es recomendable que empieces con un lenguaje de alto nivel , una vez hecho eso te resultará mucho más sencillo entender y aprender como dios manda un lenguaje asm , el lenguaje , pues tienes para elegir de sobra , son bastantes similares y una vez domines uno , entenderas sin lugar a dudas el 90% de la sintaxis de otros , ya que es bastante similar
|
|
|
23
|
Programación / Programación General / Re: 3 en raya .asm 6809
|
en: 18 Mayo 2015, 19:22 pm
|
Nadie sabe nada al respecto? ya consigo imprimir el primer movimiento , pero no consigo que me lea un bra programa para que lea e imprima los siguientes el codigo sin adjuntar subrutinas etc de momento va asi: ; definimos una constante
fin .equ 0xFF01 pantalla .equ 0xFF00 teclado .equ 0xFF02
tabla: .ascii " "
; definimos una constante pantalla .equ 0xFF00 ldx #tabla programa: lda teclado cmpa #'1 beq uno bne compara2 compara2: cmpa #'2 beq dos bne compara3 compara3: cmpa #'3 beq tres bne compara4 compara4: cmpa #'4 beq cuatro bne compara5 compara5: cmpa #'5 beq cinco bne compara6 compara6: cmpa #'6 beq seis bne compara7 compara7: cmpa #'7 beq siete bne compara8 compara8: cmpa #'8 beq ocho bne compara9 compara9: cmpa #'9 beq nueve
uno: lda #'\n sta pantalla ldy #tabla lda #'X sta ,x bra imprime_cadena dos: lda #'\n sta pantalla ldy #tabla lda #'X sta 1,x bra imprime_cadena tres: lda #'\n sta pantalla ldy #tabla lda #'X sta 2,x bra imprime_cadena cuatro: lda #'\n sta pantalla ldy #tabla lda #'X sta 3,x bra imprime_cadena
cinco: lda #'\n sta pantalla ldy #tabla lda #'X sta 4,x bra imprime_cadena seis: lda #'\n sta pantalla ldy #tabla lda #'X sta 5,x bra imprime_cadena
siete: lda #'\n sta pantalla ldy #tabla lda #'X sta 6,x bra imprime_cadena
ocho: lda #'\n sta pantalla ldy #tabla lda #'X sta 7,x bra imprime_cadena
nueve: lda #'\n sta pantalla ldy #tabla lda #'X sta 8,x bra imprime_cadena
imprime_cadena: pshs a ldb #9 imprime_cadena_inicio: lda #'| sta pantalla lda ,x+ sta pantalla beq reset_cadena decb cmpb #6 beq imprime_espacio cmpb #3 beq imprime_espacio cmpb #0 beq imprime_espacio
beq imprime_espacio
bra imprime_cadena_inicio reset_cadena: puls a rts jmp programa
imprime_espacio: lda #'\n sta pantalla bra imprime_cadena_inicio
acabar: ; el programa acaba clra sta fin
.area flag (ABS) .org 0xFFFE ; vector de RESET .word programa
|
|
|
24
|
Programación / Programación General / 3 en raya .asm 6809
|
en: 12 Mayo 2015, 16:23 pm
|
Hola chicos , estoy tratando de simular en el 6809 el típico juego de 'el gato' o más conocido como 3 en raya. Bien , el problema me surge a la hora de que en la práctica se me especifica que debo de crear el tablero y que este se autorefresque es decir , no lo puedo imprimir una y otra vez con los nuevos movimientos , el tablero se me ha ocurrido recrearlo imprimiendo direcciones de memoria seguidas , ya que me facilitaria el imprimirlas con su valor en ascii , es decir , cuando del teclado lee un 1 , hace un salto a esta subrutina y en ella con un ld , almacena el valor 88 , (en ascii una X) a la vez que en la direccion siguiente almacena un 48 (un 0 en ascii) obviamente no voy a copiar todo el codigo porque seria muy extenso por aqui dejo el modulo jugador vs maquina , esperando que me den alguna idea para refrescar el tablero. OJO no pido código. jugador_maquina:
lda teclado cmpa #1 bne compara2 jsr siesuno bra jugador_maquina
compara2:
cmpa #2 bne compara3 jsr siesdos bra jugador_maquina
compara3: cmpa #3 bne compara4 jsr siestres bra jugador_maquina
compara4: cmpa #4 bne compara5 jsr siescuatro bra jugador_maquina
compara5: cmpa #5 bne compara6 jsr siescinco bra jugador_maquina
compara6: cmpa #6 bne compara7 jsr siesseis bra jugador_maquina
compara7: cmpa #7 bne compara8 jsr siessiete bra jugador_maquina
compara8: cmpa #8 bne compara9 jsr siesocho bra jugador_maquina
compara9: cmpa #9 bne Valorerroneo jsr siesnueve bra jugador_maquina
valorerroneo: jsr imprime valor_erroneo
|
|
|
26
|
Programación / Programación General / Ayuda con modulo verilog
|
en: 12 Enero 2015, 17:12 pm
|
Verán ,ando trabajando en un contador con biestables que realiza una cuenta, el problema es que como resultado tengo 2 bucles de 0->8 y otro de 7->15 , el tema es por si alguien puede echarme un cable y decirme como puedo iniciar el contador en un número que no esté en bucle , el 2 por ejemplo , por aqui dejo el codigo fuente del programa que tengo hecho hasta ahora.. Mencionar que no pido ningún codigo solo el como hacerlo. *Edit : Todo resuelto , despues de investigar un buen rato alcance la solucion //Modulo del biestable JK module JKdown(output reg Q, output wire QN, input wire J, input wire K, input wire C); not(NQ,Q);
initial begin Q=0; end
always @(posedge C) case ({J,K}) 2'b10: Q=1; 2'b01: Q=0; 2'b11: Q=~Q; endcase endmodule
//Módulo que contiene el contador y la circuitería auxiliar. module contador (output wire[3:0] Q, input wire C); //Cables correspondientes a las salidas negadas de los biestables. wire [3:0] nQ; wire rand; // J2, K2 and (rand, Q[0], nQ[3]); JKdown jk0 (Q[0], nQ[0], Q[1], Q[1], C); JKdown jk1 (Q[1], nQ[1], Q[0], Q[0], C); JKdown jk2 (Q[2], nQ[2], rand, rand, C); JKdown jk3 (Q[3], Q[3], 1'b1, 1'b1, C);
endmodule
//Módulo para probar el circuito. module test; reg C; wire [3:0] Q; contador counter (Q,C);
always begin #9 C=~C; end
initial begin $monitor($time, "Q[3:0]=%b", Q[3:0]); //Iniciar cuenta en 2 counter.jk3.Q=0; counter.jk2.Q=0; counter.jk1.Q=1; counter.jk0.Q=0;
C=0; #300 $finish; end endmodule [MOD]: Utiliza las etiquetas para insertar código.
|
|
|
|
|
|
|