ورود

View Full Version : ماکرو های اماده



babol-hacker
دوشنبه 21 دی 1388, 18:53 عصر
سلام به همه دوستان یک سری ماکرو نوشته بودم که گفتم اینجا بذارم

1.چاپ رشته که یک ورودی میگیره




PRINT MACRO STRING
;;PRINT STRING
MOV AH,09H ;;PRINT STRING
LEA DX,STRING ;;MOV OFFSET STRING
INT 21H

ENDM

2.پاک کردن کل صفحه نمایش



CLRSCR MACRO

MOV AH,06H ;;SERVIC NUMBER
MOV AL,0
MOV CX,0
MOV DH,24
MOV DL,79
MOV BH,00001001B ;;COLOR ATTRIBUTE
INT 10H

ENDM




3.تنظیم مانیتور



SET_MONITOR MACRO

MOV AH,00H ;;SERVIC NUMBER
MOV AL,03H ;;MODE NUMBER
INT 10H

ENDM


4.چاپ یک کاراکتر با تعدادی مشخص



09-10H MACRO CHR,G

MOV AH,09H ;;SERVIC NUMBER
MOV AL,CHR ;;ASCI NUMBER
MOV BH,00H ;;PAGE NUMBER
MOV CX,G
MOV BL,00001001B ;;COLOR ATTRIBUTE
INT 10H

ENDM


5.معکوس رشته با کمک پوش و پاپ ورودی یک رشته



REV MACRO REVSTR

MOV BX,0
L1:
CMP REVSTR[BX],'$'
JE L2
MOV AL,REVSTR[BX]
PUSH AX
INC BX
JMP L1
L2:
MOV CX,BX
XOR BX,BX
L3:
POP AX
MOV REVSTR[BX],AL
INC BX
LOOP L3

MOV REVSTR[BX],'$'

ENDM


6.انتقال مکان نما

GOTOXY R,C

R=ROW
C=COLUMN


GOTOXY MACRO R,C

MOV AH,02H
MOV DH,R
MOV DL,C
MOV BH,00H
INT 10H

ENDM


7.پاک کردن صفحه با پارامترهای مشخص


RCCLRSCR MACRO R1,C1,R2,C2,RANG

MOV AH,06H ;;SERVIC NUMBER
MOV AL,0
MOV CH,R1
MOV CL,C1
MOV DH,R2
MOV DL,C2
MOV BH,RANG ;;COLOR ATTRIBUTE
INT 10H

ENDM


8.خواندن حرف و رنگ مربوط در مکان نمای فعلی



READCHR MACRO
MOV AH,08H
MOV BH,00H ;;PAGE NUMBER
INT 10H
;; MOV AL,ASCII AND MOV AH,COLOR

ENDM


9.کاراکتر میاد تبدیل به کاراکار بزرگ میشه


TOBIG MACRO CHR_2

MOV AL,CHR_2
SUB AL,32

ENDM


10.کاراکتر میاد تبدیل به کوچیک میشه




TOLOW MACRO CHR_3

MOV AL,CHR_3
ADD AL,32

ENDM


البته من قبله استفاده ازین ماکروها نیازم و رفع میکنم بعد نسبت به شرایط ماکر و فراخونی میکنم مثلا قبلش تشخیص میدم کاراکتر کوچیک یا بزرگ

11.بررسی موقعیت و اندازه مکان نما



RC? MACRO

MOV AH,03H
MOV BH,00H
INT 10H

;;--- ROW MOV TO DH
;;COLUMN MOV TO DL
ENDM


12.رفتن به خط بعدی



ENDL MACRO

MOV AH,02H
MOV DL,0AH
INT 21H

MOV AH,02H
MOV DL,0DH
INT 21H

ENDM


13.بیپ به مقدار مشخص



BEEP MACRO T

CMP T,0
JE L2
DEC T
MOV CX,T
L1:
MOV AH,02H
MOV DL,07H
INT 21H
LOOP L1
L2:
MOV AH,02H
MOV DL,07H
INT 21H

ENDM


14.طول رشته



STRLEN MACRO LENSTR

MOV BX,0
L1:
CMP STR[BX],'$'
JE END
INC BX
INC LEN
JMP L1
END:
MOV LEN,LEN


ENDM


15.دریافت کاراکتر با نمایش آن بر روی مانیتور



GETCHE MACRO

MOV AH,01H
INT 21H
;; MOV ASCII TO AL

ENDM


16.چاپ کاراکتر



PRNCHR MACRO PRNCHR

MOV AH,02H
MOV DL,PRNCHR
INT 21H

ENDM


17.خواندن از فایل



READ MACRO
MOV AH,3FH
MOV BX,H
MOV CX,255
LEA DX,TXT
INT 21H
ENDM


18.نوشتن در فایل



WRITE MACRO

MOV BX,0
WL1:
MOV AH,01H
INT 21H
CMP AL,13
JE WL2
MOV TXT[BX],AL
INC BX
JMP WL1
WL2:

MOV AH,40H
MOV BX,H
MOV CX,BX
LEA DX,TXT
INT 21H
ENDM


19.بستن فایل



CLOSEF MACRO

MOV AH,3EH
MOV BX,H
INT 21H

ENDM


20.باز کردن فایل



OFILE MACRO


MOV AH,3DH
MOV AL,0
LEA DX,DIR
INT 21H
MOV H,AX


ENDM


21.ساخت فایل یا ساخت با اسم خاص


CFILE MACRO

;ENDL

;RCCLRSCR 0,0,24,79,00001111B

;PRINT STR7 ;;PRINT STRING

;MOV BX,0
;
;L1:
;MOV AH,01H
;
;INT 21H
;
;CMP AL,13
;JE L2
;MOV DIR[BX],AL
;INC BX
;JMP L1
;L2:
;MOV DIR[BX],00h
;
;CLRSCR
;
;---

MOV CX,00H
MOV AH,3CH
LEA DX,DIR
INT 21H

JC EXIT
MOV H,AX
RCCLRSCR 0,0,24,79,00001010B
GOTOXY 1,1
PRINT STR8
ENDL
PRINT STR9

MOV AH,00H
INT 16H

CLRSCR
GOTOXY 0,0
JMP MENU


ENDM


22.گرفتن پسورد ولی نشان دادن کاراکتری خاص به جای آن وچک کردن صحت


PASSCHECK MACRO

RCCLRSCR 0,0,24,79,00001100B

GOTOXY 12,26


MOV BX,0

MOV CX,7
L1:
MOV AH,00H
INT 16H

MOV PASS[BX],AL
PRNCHR 0CH
INC BX
LOOP L1

MOV SPASS[BX],'$'


CLD

MOV CX,7

LEA SI,PASSWORD
LEA DI,PASS

REP CMPSB
CMP CX,0
JE MENU
PRINT ER
JMP EXIT

ENDM





اگه یک کوچولو هم خوشت اومد تشکر یادت نره

tdkhakpur
دوشنبه 21 دی 1388, 19:18 عصر
سورس ماکروهای آماده برای اسمبلی (http://barnamenevis.org/forum/showthread.php?t=159994&highlight=%D9%85%D8%A7%DA%A9%D8%B1%D9%88%D9%87%D8% A7%DB%8C+%D8%A2%D9%85%D8%A7%D8%AF%D9%87+%D8%A7%D8% B3%D9%85%D8%A8%D9%84%DB%8C)

mr2017
دوشنبه 01 آذر 1389, 23:10 عصر
دستتون درد نکنه خیلی عالی بود
میشه خواهش کنم برنامه جدول ضرب با استفاده از ماکرو هم بزاری
ممنون میشم .

hamzeh1989
دوشنبه 08 آذر 1389, 10:25 صبح
آقا خیلی خیلی خیلی خیلی خیلی خیلی خیلی خیلی خیلی خیلی خیلی خیلی خیلی خیلی خیلی خیلی خیلی خیلی ......... دمت گرم

lucky.luke.iroooni
جمعه 10 دی 1389, 21:37 عصر
دمت گولی داداش

abu110
دوشنبه 13 دی 1389, 17:18 عصر
با تشکر از زحمات شما

smartie7
جمعه 06 خرداد 1390, 09:40 صبح
آقا دستت مرسییییییییییییییی :قلب: