PDA

View Full Version : برنامه ای که اسم و فامیل را در 2 خط و 2 رنگ چاپ کند



k.tavakol
جمعه 20 آذر 1388, 00:12 صبح
سلام برنامه ای نوشتم که اسم و فامیل را در 2 خط و 2 رنگ چاپ کند ولی مشکلی وجود داره در برنامه 1 رنگ سطر دوم تغییر نمیکنه و در برنامه 2 هردو سطر رنگ مشابه دارند.لطفا راهنمایی کنیید.
برنامه 1:

.model small
.STACK 64
.data
m db 'kioumars','$'
n db 'tavakol','$'
.code
main proc near
mov ah,02
mov dh,01
mov dl,40
mov bh,0
int 10h
mov AH,6H
mov bh,1h
mov bl,6h
int 10h
mov ax,@data
mov ds,ax
mov ah,9
mov dx,offset m
int 21h
mov ah,02
mov dh,02
mov dl,40
mov bh,0
int 10h
mov AH,9H
mov bh,ah
mov bl,6H
int 10h
mov ax,@data
mov ds,ax
mov ah,9
mov dx,offset n
int 21h

برنامه 2:

.model small
.STACK 64
.data
m db 'kioumars','$'
n db 'tavakol','$'
.code
main proc near
mov ax,0600h
mov bh,01h
mov cx,0000
mov dx,184fh
int 10h
mov ah,02
mov dh,01
mov dl,40
mov bh,0
int 10h
mov ax,@data
mov ds,ax
mov ah,9
mov dx,offset m
int 21h
mov bh,07h
mov cx,0000
mov dx,184fh
int 10h
mov ah,02
mov dh,02
mov dl,40
mov bh,0
int 10h
mov ax,@data
mov ds,ax
mov ah,9
mov dx,offset n
int 21h
mov ah,8
int 21h
mov ah,4ch
int 21h
main endp
end

tdkhakpur
جمعه 20 آذر 1388, 00:31 صبح
خب داس برای اعمال رنگ برای کاراکتر تابعی ندارد شما باید از int 10h با نوشتن یک پروسه برای چاپ رشته این کار را انجام بدید.

k.tavakol
جمعه 20 آذر 1388, 11:15 صبح
خب داس برای اعمال رنگ برای کاراکتر تابعی ندارد شما باید از int 10h با نوشتن یک پروسه برای چاپ رشته این کار را انجام بدید.
رشته چاپ می شود ولی رنگ 2 رشته یکسان هست و تغییر نمی کنه.

tdkhakpur
جمعه 20 آذر 1388, 12:23 عصر
من که خدمتتان عرض کردم شما از int 21h برای چاپ رشته استفاده می کنید که هیچ پارامتری برای اعمال رنگ به رشته را ندارد بلکه از رنگ پیشفرض شده استفاده میکند.
از ماکروی زیر برای چاپ یک کاراکتر در محل x, y میتوانید استفاده کنید با این کار نیازی به ست کردن کرسر با وقفه ندارید در ضمن میتوانید از این برای ساخت تابعی برای چاپ رشته هم استفاده کنید.


PUTCHAR MACRO X, Y, CHAR, COLOR, BKCOLOR
LOCAL LABEL_ , WRD
JMP LABEL_
WRD DW ?
LABEL_:
PUSH AX
PUSH BX
PUSH DX
PUSH ES
MOV AX, X
MOV BX, 2
MUL BX
MOV WORD PTR WRD ,AX
MOV AX, Y
MOV BX, 160
MUL BX
ADD WORD PTR WRD ,AX
MOV BX, 0b800h
PUSH BX
POP ES
MOV BX, WRD
MOV DL, CHAR
MOV DH, COLOR
OR DH, BKCOLOR
MOV WORD PTR ES:[BX] ,DX
POP ES
POP DX
POP BX
POP AX
ENDM
;---------------------------------------------------------------------------;

مثال


x dw 40
x dw 10
chr db 'd'
PUTCHAR x, y, chr, 12, 14