ensamblador 8086

adonis aviles
11 de Mayo del 2010
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

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

Arcturus
13 de Mayo del 2010
tu codigo es muy extenso, si lo unico que quieres es mostrar una letra en modo grafico. yo hice un programa que muestra un pentagono en modo grafico e inclui un letrero en el mismo modo, esta es una parte del codigo:

.data
msg db 'para salir presiona enter ',13,10,'$'
.code
inicio:
mov ax, @data
mov ds, ax
mov si, offset msg

mov ah, 00
mov al, 13h
int 10h

write:
mov ah, 0eh
mov al, [si] ;esta linea se encarga del caracter a mostrar, de manera que si quieres mostrar la 'H' basta cambiar si por el ascii de la h

mov bh, 00
mov bl, 02
int 10h
inc si
cmp si, '$'
jne write

adonis
18 de Mayo del 2010
hola Arcturus, he probado lo que me pusiste y funciona bien, pero no se si podrias o sabrias hacerlo con el codigo que yo he puesto, por que quedaria "muy descarado", si lo presento de tu forma y ami solo me lo explican de la otra manera, no se si me explico...:):)

SALUDOS.

Arcturus
20 de Mayo del 2010
ok, si te ayudo, solo dime en que parte de tu codigo estas mandando la H para saber mas o menos donde esta el error, y de pasada, si puedes explicarme que hace la macro macro_letra_a exactamente

adonis aviles
22 de Mayo del 2010
OK, pues empieza aki:

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 )

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