• Miércoles 15 de Abril de 2026, 01:22

Mostrar Mensajes

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
ASM (Ensamblador) / Re: PROBLEMA ENSAMBLADOR 8086
« en: Martes 1 de Febrero de 2011, 19:28 »
ESTO ES LO QUE TENGO ECHO PARA PASAR DE BINARIO A DECIMAL, HABER QUE TAL:
Código: Text
  1.  
  2. .MODEL small
  3.  
  4. .stack 100h
  5.  
  6. .DATA
  7.  
  8.   cadleer db 9
  9.   long db ?
  10.   cadescr db 9 DUP (?),'$'
  11.   msj db 'Introduzca valor binario ... $'
  12.   msj2 db 'Valor en decimal ... $'
  13.  
  14. .CODE
  15.  
  16. ; ------------------ MACROS -------------
  17.  
  18.   posicionar MACRO fila,colum    ; posiciona el cursor en fila, colum
  19.  
  20.    PUSH AX
  21.    PUSH BX
  22.    PUSH DX
  23.  
  24.    mov ah,2 ;código de función
  25.     mov bh,0 ;página de video
  26.     mov dh,fila ;fila
  27.     mov dl,colum ;columna
  28.     int 10h
  29.  
  30.    POP DX
  31.    POP BX
  32.    POP AX
  33.  
  34.  
  35.   ENDM
  36.  
  37.   borrar MACRO                   ; macro borrar pantalla
  38.  
  39.    ;borrar pantalla
  40.    PUSH AX
  41.    PUSH BX
  42.    PUSH CX
  43.    PUSH DX
  44.     mov ah,6 ;código de la función
  45.     mov al,0 ;borrar pantalla
  46.     mov bh,07h ;atributo para borrado
  47.     mov cx,0 ;esquina superior izquierda (0,0)
  48.     mov dx, 24*256 +79 ;esquina inferior derecha (24,79)
  49.     int 10h
  50.    POP DX
  51.    POP CX
  52.    POP BX
  53.    POP AX
  54.  
  55.    ENDM
  56.  
  57.   leer MACRO FRASE               ; lee frase del teclado
  58.  
  59.     PUSH AX
  60.     PUSH DX
  61.     ; leer cadena
  62.     MOV DX,OFFSET FRASE
  63.     MOV AH,0Ah
  64.     INT 21h
  65.     POP DX
  66.     POP AX
  67.  
  68.   ENDM
  69.  
  70.   escribir MACRO FRASE           ; muestra frase por pantalla
  71.  
  72.     PUSH AX
  73.     PUSH DX
  74.     ; escribir cadena
  75.     MOV DX,OFFSET FRASE
  76.     MOV AH,9
  77.     INT 21h
  78.     POP DX
  79.     POP AX
  80.  
  81.   ENDM
  82.  
  83.   escribe_car MACRO char
  84.  
  85.     ; metemos en la pila
  86.     PUSH AX
  87.     PUSH DX
  88.     ; escribir cadena
  89.     MOV AH,6
  90.     MOV DL,char
  91.     ADD DL,48         ; sumamos para el codigo ASCII
  92.     INT 21h
  93.     ; recuperamos pila
  94.     POP DX
  95.     POP AX
  96.  
  97.   ENDM
  98.  
  99. ; -------- PROGRAMA PRINCIPAL ----------
  100.  
  101.   ; iniciando...
  102.   MOV AX,@DATA
  103.   MOV DS,AX
  104.  
  105.   ; cuerpo
  106.   borrar
  107.   posicionar 20,20
  108.   escribir msj
  109.  
  110.   leer cadleer
  111.  
  112.   ; lo metemos en la pila
  113.   ; para dar la vuelta a los datos
  114.  
  115.   MOV SI,0
  116.   BUCLE:
  117.     MOV AL, cadescr[SI]
  118.     MOV AH,0
  119.     PUSH AX
  120.     ADD SI,1
  121.     MOV BL,long
  122.     MOV BH,0
  123.     CMP SI,BX
  124.     JAE FINBUCLE               ; si SI > long sale del bucle
  125.     JMP BUCLE
  126.  
  127.   FINBUCLE:
  128.  
  129.   ; recogemos los datos de la pila
  130.   ; y vamos calculando
  131.  
  132.   ; en DL tendremos el resultado calculado
  133.   MOV DL,0           ; lo ponemos a 0
  134.  
  135.   ; recogemos el primer digito
  136.   POP CX
  137.   CMP CL,48       ; lo comparamos con '0' -> 48
  138.   JE CONT
  139.   MOV DL,1
  140.  
  141.   CONT:          ; calculamos demas digitos
  142.  
  143.   MOV SI,1
  144.   BUCL2:
  145.     MOV BL,long
  146.     MOV BH,0
  147.     CMP SI,BX
  148.     JAE FINBUCL2               ; si SI <= long sale del bucle
  149.  
  150.     POP CX
  151.     CMP CL,48        ; comparamos si el digito es '0' -> 48
  152.     JE CONTINUA     ; si es 0 saltamos todo.
  153.  
  154.     ; si no es 0 suponemos que es 1, aunque sea cualquier digito
  155.     MOV DI,0        ; iniciamos el indice
  156.     MOV AL,1
  157.     POTENCIA:       ; calculamos potencia en AL
  158.       CMP DI,SI
  159.       JAE FINPOT
  160.       MOV BL,2
  161.       MUL BL
  162.       INC DI
  163.     JMP POTENCIA
  164.  
  165.     FINPOT:
  166.       ADD DL,AL                  ; EL RESULTADO LO GUARDAREMOS EN DL
  167.  
  168.     CONTINUA:
  169.  
  170.     ADD SI,1
  171.     JMP BUCL2
  172.  
  173.   FINBUCL2:
  174.  
  175.   posicionar 21,20
  176.   escribir msj2
  177.   MOV CL,DL
  178.   MOV CH,0
  179.   CALL Visualiza_Numero
  180.  
  181.   ; cerrando...
  182.   MOV AH,4ch
  183.   INT 21h
  184.  
  185.   Visualiza_Numero PROC
  186.  
  187.     MOV CH,CL
  188.  
  189.     CMP CH,100        ; comprobamos si tiene 3 digitos
  190.     JB DOSDIG
  191.  
  192.     ; Tres digitos
  193.     MOV AH,0
  194.     MOV AL,CH
  195.     MOV BL,100
  196.     DIV BL
  197.     MOV CX,AX
  198.     escribe_car CL
  199.  
  200.     DOSDIG:
  201.     CMP CH,10
  202.     JB UNDIG
  203.  
  204.     ; Dos digitos
  205.     MOV AH,0
  206.     MOV AL,CH
  207.     MOV BL,10
  208.     DIV BL
  209.     MOV CX,AX
  210.     escribe_car CL
  211.  
  212.     UNDIG:
  213.     escribe_car CH
  214.  
  215.     RET
  216.  
  217.   ENDP
  218.  
  219. END
  220.  
  221.  

2
ASM (Ensamblador) / PROBLEMA ENSAMBLADOR 8086
« 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
ASM (Ensamblador) / Re: respuesta a la siguiente pregunta de ensamblador???
« en: Martes 8 de Junio de 2010, 20:48 »
muxas gracias!!!

4
ASM (Ensamblador) / respuesta a la siguiente pregunta de ensamblador???
« 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
ASM (Ensamblador) / lenguaje ensamblador 8086 !!!
« 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:
Código: ASM
  1.  
  2. .MODEL SMALL
  3.  
  4. .STACK 100h
  5.  
  6. .DATA
  7. pixfila_a dw 80
  8. pixcol_a dw 140
  9.  
  10. .CODE
  11.  
  12. macro_letra_a MACRO pixf,pixc
  13. local pinta1a,pinta2a,pinta3a,pinta4a
  14. MOV DL, 0
  15. MOV DH,0
  16. MOV ax,pixf
  17. MOV bx,320
  18. MUL bx
  19. ADD ax,pixc
  20. MOV DI,ax
  21. MOV AL,15
  22.  
  23. MOV cx, DI
  24. ADD cx, 30
  25.                ; 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).
  26. pinta1h:
  27. MOV ES:[DI], AL
  28. ADD DI, 320
  29. INC DL
  30. CMP DL, 30
  31. jbe pinta1h
  32.  
  33. MOV ax,320
  34. MOV bx,10
  35. MUL bx
  36. SUB DI,ax
  37.  
  38. MOV AL,15
  39.  
  40. pinta2h:
  41. MOV ES:[DI], AL
  42. INC DI
  43. INC DH
  44. CMP DH, 30
  45. jbe pinta2h
  46.  
  47. MOV DL, 0
  48. MOV DI,cx
  49.  
  50. pinta3h:
  51. MOV ES:[DI], AL
  52. ADD DI, 320
  53. INC DL
  54. CMP DL, 30
  55. jbe pinta3h
  56.  
  57. MOV DL, 0
  58. MOV DI,cx
  59.  
  60. pinta4h:
  61. MOV ES:[DI], AL
  62. INC DI
  63. INC DH
  64. CMP DH, 30
  65. jbe pinta4h
  66.  
  67.  
  68. ENDM
  69.  
  70. MOV AX,@DATA
  71. MOV DS,AX
  72.  
  73. MOV ah,0
  74. MOV al,13h
  75. int 10h
  76.  
  77. MOV AX, 0A000h
  78. MOV ES, AX
  79.  
  80. macro_letra_a pixfila_a,pixcol_a
  81.  
  82. MOV AH,0
  83. INT 16h
  84.  
  85. CMP AX, 011Bh
  86. JE SALIR
  87.  
  88. SALIR:
  89.  
  90. MOV AH,4ch
  91. INT 21h
  92.  
  93. END
  94.  
  95.  

Páginas: [1]