Tag

لغة الاسمبلي وتطبيقها Archives – IT Solutions

emu8086 مجموعة اكواد أساسية وشرحها في لغة الاسمبلي وتطبيقها بإستخدام المحرر

هذه مجموعة من كودات البرمجة الاساسية المستخدمة في لغة أسمبلي و بالرغم من أن الجميع يعتقد أن لغة الأسمبيلي هي لغة قديمة و لا إحتياج لها يدرك جميع المحترفين و الخبراء في علم الحاسوب و البرمجة و الألة بأن هذه اللغة هي الأساس و القلب النابض لما يعرف بالحاسوب حيث أنها تعتبر اللغة الاقرب للغة الألة و هي اللغة التي تبنى عليها المترجمات الخاصة بلغات البرمجة الاخرى .

 

جدول  ASCII



 : كود مرحبا بالعالم


.model tiny
.code
org 100h

main proc near

mov ah,09h
mov dx,offset message
int 21h

mov ah,4ch
mov al,00
int 21h

endp
message db “Hello World $”

end mai



كود اعادة طباعة حرف مدخل


.data

.code

mov ah, 1h
int 21h

mov dl, al
mov ah, 2h
int 21h

end



كود عرض رقم 2 عن طريق اضافة ما يقابله من جدول  ASCII

حيث ان الرمز المقابل ل 50 هو رقم 2


.model small

.data

.code

main proc

mov dl, 50

mov ah, 2h

int 21h

endp

end main



كود جمع رقمين فى  Hex و عرض الرمز المقابل له


.model small
.data
.code
main proc
mov dl, 2h
add dl, 30h
mov ah, 2h

int 21h

endp

end main



كود عرض ناتج جمع رقمين


.model small

.data

.code

main proc

mov dl, 2

mov dl ,2

add dl, 48

mov ah, 2h

int 21h

endp

end main



كود عرض ناتج عمليى طرح


.model small

.data

.code

main proc

mov dl, 2

sub dl ,1

add dl, 48

mov ah, 2h

int 21h

endp

end main



تعريف متغير و اعطاءه قيمة


.model small

.data

count1 db 2 ; المتغير
.code

main proc

mov dl, count1

add dl, 48

mov ah, 2h

int 21h

endp

end main



كيفية تخزين قسمة اقل الى مسجل ذو قيمة اكبر


.model small

.data

var1 db 1 ;
.code

main proc

mov ax, 0

add al, var1

endp

end main



زيادة تلقائية بمعدل 1


.model small
.data
.code
main proc
mov dl, 3

inc dl ; الزيادة

add dl, 48
mov ah, 2h

int 21h

endp

end main

انقاص تلقئى للقيمة بمعدل 1


.model small
.data
.code
main proc
mov dl, 3

dec dl ; الانقاص يحدث هنا

add dl, 48
mov ah, 2h

int 21h

endp

end main



مثال على القفز الى نقطة


.model small
.data
.code
main proc

top: ;نقطة العودة
mov dl, 5 ; ادخل الى المسجل

add dl, 48 ; اضافة الى المسجل

mov ah, 2h ; طباعة على اشاشة

int 21h ;

jmp top ; التوجيه الى نقطة العودة

endp

end main



كود جملة دوارة مع التحكم فى عدد المرات


.model small
.data
.code
main proc

mov cx, 5 ; عدد المرات الذى سيفذها الدوران هى خمس مرات

top:
mov dl, 6

add dl, 48

mov ah, 2h

int 21h

loop top ; الدوران و العودة الى top

endp



مثال على الجمل الدوارة المركبة


.model small
.data

.code

main proc

mov cx, 5 ; تحديد عدد مرات الدوران

lop1: ; نقطة بدء الدوران الاول
mov dl, 6

add dl, 48

mov ah, 2h

int 21h

lop2: ; نقطة بدء الدوران الثانى

mov dl, 7

add dl, 48

mov ah, 2h

int 21h

loop lop2 ; الذهاب الى الدوران الثانى

mov cx, 5 ; اعادة تحديد عدد الدوران

loop lop1 ; الذهاب الى الدوران الاول

endp

end main



مثال على Push & pop وظيفة Pop هى الحصول على اخر قيمة تم ادخالها بطريق Push


.model small
.data
.code
main proc

mov ax, 1
push ax

pop cx

mov ah, 2h

int 21h

endp

end main



مثال على popf & pushf


.model small
.data

Veribl dw “Hello”
.code
main proc

pushf

pop Veribl
push Veribl
popf

mov ah, 2h

int 21h

endp

end main


انشاء اجراء و استدعاؤه


.model small
.data

.code

main proc

call myproc

endp

myproc proc
mov dl, 5

add dl, 48

mov ah, 2h
int 21h

ret

myproc endp

end main



مثال على And


.model small
.data

.code

main proc

mov ah, 00000101b
mov bh, 00000001b

and ah, bh

endp

end main


مثال على Or


.model small
.data

.code

main proc

mov ah, 00000100b
mov bh, 00000011b

or ah, bh

endp

end main


مثال على Xor


.model small
.data

.code

main proc

mov ah, 11111111b
mov bh, 11111110b

xor ah, bh

endp

end main


مثال على not


.model small
.data

.code

main proc

mov ah, 01111110b
not ah

endp

end main

مثال على test


.model small
.data

.code

main proc

mov ah, 01111110b
test ah, 01111110b

endp

end main


مثال على المقارنة بين قيمتن ايهما اكبر و معرفة النتيجة من خلال Flag ZF , CF


.model small
.data

.code
main proc
mov ax, 5
cmp ax, 5
Endp


القفز المشروط

المعنى

الكلمة المختزلة

القفز إذا كان CF = 1

JC

القفز إذا كان CF = 0

JNC

القفز إذا كان OF = 1

JO

القفز إذا كان OF = 0

JNO

القفز إذا كان SF = 1

JS

القفز إذا كان SF = 0

JNS

القفز إذا كان CX = 0000

JCXZ

القفز في حالة التساوي/أو إذا كان الناتج يساوي الصفر

JE/JZ

القفز إذا كان أكبر أو يساوي/القفز إذا لم يكن أصغر

JGE/JNL

القفز إذا كان فوق/القفز إذا لم يكن تحت أو يساوي

JA/JNBE

القفز إذا كان فوق أو يساوي/القفز إذا لم يكن تحت

JAE/JNB

القفز إذا كان تحت/القفز إذا لم يكن فوق أو يساوي

JB/JNAE

القفز إذا كان تحت أو يساوي/القفز إذا لم يكن فوق

JBE/JNA

القفز إذا كان أكبر/القفز إذا لم يكن أصغر أو يساوي

JG/JNLE

القفز إذا كان أصغر أو يساوي/القفز إذا لم يكن أكبر

JLE/JNG

القفز إذا لم يكن يساوي/القفز إذا كان الناتج يساوي قيمة غير صفرية

JNE/JNZ

القفز إذا كانت خانة Parity غير موجودة/القفز إذا كان PF = 0

JNB/JBO

القفز في حالة وجود خانة Parity/القفز إذا كان PF = 1

JP/JPE

 


مثال على القفز فى حالة اذا كان Flag = fz عند المقارنة


.model small
.data

.code

main proc

mov ax, 5

cmp ax, 5

jz lp1

mov bx, 1

lp1:

mov bx, 6

Endp

end main



مثال على القفز فى حالة التساوى Je


.model small
.data

.code

main proc

mov ax, 100

cmp ax, 100

je lp1

mov bx, 1

lp1:

mov bx, 6

Endp

end main



مثال على القفز jcxz


.model small
.data

.code

main proc

mov cx, 1
mov ax, 1

sub cx, ax

jcxz lp1

mov bx, 1

lp1:

mov bx, 6

Endp

end main



مثال على القفز Ja


.model small
.data

.code

main proc

mov ax, 11
mov bx, 12

cmp bx, ax

ja lp1

mov bx, 1

lp1:

mov bx, 6

Endp

end main



LOOPZ / LOOPE القفز إلى الحجرة المعرَّفة بواسطة اللافتة القصيرة إذا كان  CX لا يساوى الصفر


مثال

.model small
.data

.code

main proc

mov cx, 5
mov bx, 5

lop:

mov dl, 6
add dl, 48

mov ah, 2h

int 21h

cmp bx, 5
loopz lop

Endp

end main


SAL/SHL : إزاحة رياضية/إزاحة منطقية و كلاهما نحو اليسار


 

مثال

 

.model small

.data 

 

 

 

.code 

 

 

  main proc

         

   mov ax, 1

   shl ax, 1

  

   

 

   

  Endp

 

  end main



SAR/SHR : إزاحة رياضية/إزاحة منطقية و كلاهما نحو اليمين


مثال

.model small
.data

.code

main proc

mov ax, 1
shr ax, 2

Endp

end main



MUL : ضرب بدن إشارة , DIV : تقسيم بدون إشارة


.model small
.data

.code
main proc
mov al, 5h
mov bl, 2h
mul bl
Endp

end main



مثال على Div


.model small

.data

.code

main proc

mov ax, 0080h
mov bl, 2

div bl

Endp

end main



مثال بسيط على الرسم


name “vga”

; this program draws a tiny rectangle in vga mode.

org 100h

jmp code

; dimensions of the rectangle:
; width: 10 pixels
; height: 5 pixels

w equ 10
h equ 5

; set video mode 13h – 320×200

code: mov ah, 0
mov al, 13h
int 10h

; draw upper line:

mov cx, 100+w ; column
mov dx, 20 ; row
mov al, 15 ; white
u1: mov ah, 0ch ; put pixel
int 10h

dec cx
cmp cx, 100
jae u1

; draw bottom line:

mov cx, 100+w ; column
mov dx, 20+h ; row
mov al, 15 ; white
u2: mov ah, 0ch ; put pixel
int 10h

dec cx
cmp cx, 100
ja u2

; draw left line:

mov cx, 100 ; column
mov dx, 20+h ; row
mov al, 15 ; white
u3: mov ah, 0ch ; put pixel
int 10h

dec dx
cmp dx, 20
ja u3

; draw right line:

mov cx, 100+w ; column
mov dx, 20+h ; row
mov al, 15 ; white
u4: mov ah, 0ch ; put pixel
int 10h

dec dx
cmp dx, 20
ja u4

; pause the screen for dos compatibility:

;wait for keypress
mov ah,00
int 16h

; return to text mode:
mov ah,00
mov al,03 ;text mode 3
int 10h

ret


مرحبا بالعالم بكود اصغر


org 100h

 

jmp start

 

msg:    db      “Hello, World!”, 0Dh,0Ah, 24h

 

start:  mov     dx, msg

        mov     ah, 09h

        int     21h

       

        mov     ah, 0

        int     16h

ret


I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

WANNACRY RANSOMWARE الوقاية من فايروسات الفدية
SSD & HDD مقارنة عملية
اخطاء نرتكبها يوميا تدمر الحاسوب
أكثر تطبيقات الأندرويد إستهلاكاً للبطارية
كلمة غير محدود في عالم التكنولوجيا و الخدمات
(poc) أول خطوة ف كتابة ال
iPhone XS و iPhone XS Max ميزات
أهم الأسئلة التي يجب أن تعرف إجابتها عن حماية المعلومات
في مشواري لتعلم البرمجة
لماذا لا يتم التواصل معك بعد إرسالك لسيرتك الذاتية ؟
فايروس الفدية وماذا افعل إذا أصاب جهازي
VPN الفرق بين البروكسي و
(ذاكرة الوصول العشوائي – Random Access Memory) RAM أنواع