elebda3.net 7893

170
ا   ح ا   ا  ا و  م  ن ا د ا   م ا   ب ا    ة ا ت ا  و  ا ةغ Assembly Language Programming and Microprocessors دا إ:   ا     

Upload: mgheryani

Post on 07-Jan-2016

56 views

Category:

Documents


0 download

DESCRIPTION

Assembly Language Programming and Microprocessors

TRANSCRIPT

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 1/169

ا

 حا

 ا

 

او م نادا 

ام

 

 اب

 

اة

 ات

 و

 ا

 غة

Assembly Language Programming and Microprocessors

  ا: إاد

 

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 2/169

اس

 

: 1ا اول

 ا ا:ا حا مظو تا 4

تا ئIntel 4

  اا ا8 

ااة   08

 16خ إ غة ا:ا اث 

 او ما ا 01

 ا تا 0

 ا اوا ض 32

  ما ا 3

 اا جذ 3

واا   28ت ادل 

 23ا او 

 ر

 2

 اا ا:را  41

 40ار 

 ا 42

 ا ثو  44

  ناو ةرشإ نو نار 4

 ار

 

 ات

 أ

 4 Debug 4

 ر 3

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 3/169

 

ا ا:اا ض تو 53

 4اع او 

 او ق عاو واع ون إشرة   اع شرة 

CMP 1ا 

 اع اغ و 

 ا  

 ا

IF…….Then …….End_If  

 اIf….Then……Else……End_If  

Case رة 

 ا عا 18

  رااFOR  13

While 12اار رة 

 رة

 اار

Repeat 14    14

ر 1

 71اوا ا:ا ادس

ا اوا 0

 اTEST 2

ازا

 او

4وا اوران

ئا مرا ا ة     إا

ئا مرا     8إا

 اا مرا ا ة     0إا

 اا مرا     3إا

ر 3

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 4/169

 ا ا:ا اجاو  85اكس 

 ا   و 

 ا    1

 ا

 اا

Procedures 

 ا اا  لا 

 ا اا  

 اCALLوRET 

 ر 0

94وا اب وا:ا ان 

 ا

 ت

 4

 ا ت 

 ا ةرشإ  

ا مرا ا ة     إا

 إا مرا     083ا

 084ان

ر

 08 ا ا:ا ط و تفا 108

ااا   ا تاذ ت 08

 ؤاDUP 08

 ا  ا 08

 ا ط08

 ا

 

 008 008ا اظ 

 008ا اش 

  ا ش غا ما 008

 002ا وا اط 

 اPTR زاوLABEL 00

 ا غ 00

 ا  00

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 5/169

 ا وذ فا 038

 ا يا ا  033

 اXLAT 032

 ر

 03

شا ا:ا  ا او128

 ا ق 03

  خ 03

 ئداREP 03

   028

 

 

 023

   ا 022

 ا ر 02

 ر 02

  يدحا ا: ت 140

  048إارة اظم:ولا ا 

 اا

 

:را

 

 040 اا :ا  042

 ااا :را غ 044

 اا :غا 041

 04ر  اغت:ا ادس 

 

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 6/169

صػل

مؼمة

م

لاؿكعم

ماى

مسممطظمؿدمؿ مضظمى

معمؿدممػم

مجمظكم

Personal Computersم دامذ

مى

مػطIntelاى

عمصؿ

.مج

مؿسمتمظم

مػم مظمج

معمسفبمغؿدممض

مػمطؿم

 Assembly Language Programming and Organization of The IBM PCادد

Aطجم

امػم

ماػم ؿطممدد Aم مظCم?فظمتتماظماخماج

ماسماظ Cمصا م

مؼغممق

ة ؾطةػؾBackground

امظلدام ظـماظماظ ماؿك

مضظمغمعمعؿظم م جم

م

كؿامعامامرامم

م اليمظمعمعؿظمج Cمساضظمالضم

غم ممؿك

.

حامظام

Cم ام

Aحمظمظمظمسمضمؼم

Cطظممظؿمسم

ظم لؿمام

Structured Programming Languageاظمالظمادؾظما عـ

ظمظمعم م

مفبمعظمصمظل مخمظ.ػمظمعم

م مظؼم معمظم

Aطؿ م مظعمعمخمدؿمظمظؿفمؼم

ؿك

.

م

او ؾد

ؾح

م ؾظمع معمسمظ Cمص م

مػمكؿد مؼؿظمؿد.اظمؿاؼ

مؼ مؼرمساةةماظCمصا ماحظمقظمؿسدمض مسؾدAمحم

ممغؼمطمعحام

معظم ؿ مظظمصمؼمسمسد

.عاظمؿادمؿاؼ

لظ مديمؾذمكؿد مظمؿؼمؿدمد م مسؾدA.

ظامعؿقاطمؼؿمسمسمعمخ

Cامػام اصم

مؼا ماصمعمسمؾؿ

مظمؼغممظ.

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 7/169

ااوت

محمعلؿممدمظم ظ م ـمصمطم

ظمعمسم

مل مت

ظم لظمظمسمسمؿؼمصمطممح.سم جمؼم مظمؽدمط

صمطمؼغممعظمعمسم ؿطمرمؿدمطمصمطمؼغم

.ماظما ـؿ

:

نالصػل:طاذماد مافؿ

ماى

ماعسما مضظمى

مؿؼ

Intel

مخمةمؼؿمظطمظخمظم

8088ركؿظمؼرم مؿك

مفل

طظمع.

لالصػل:ظ

C م صم ظـمؿ

مؼ مفؿظمظممعظمظمظمؼ

م

?اغمكؿادمعاغظمظمظمسمؿظمددمعمعمسمسمؿظ

م مظمر

خمخ.ؿ وممع م ؿطمؿؼمظمؼغم.

لصػل

:اؾظمفالعماسماؿظمصمؿؼ

Flag Register اظ م

اؾظمةا

مسم م مثهمضمظمؿك

مظمحم مؿك

.

ماصػل:معAم مصمؿؼاؼهماطماسماؿظمؿاؼمػا ماؿك

مؿظ

لؿمظظم

ممعظمعمظمعظ

High Level Languageاؼهمظمؿؼ

فؿظمظم

Cكؿم

مؿظمؿظمع

A.ؾالغمؾاظمعاظماح

Aامظام اؿمطؿ ام

Cعحمظؿ مظغع مطمهمظغعم

الصػل:فل

معمعؿظممعكؿدمؼرمؿك

م

مليمع Aمؿؼ

ظمحمعAمظمؿؼ.اسظم?اجماعماسما ؿطمؿ مظمؼغم

سمدلظم ظـمعظممضم ؿطم

.

الصػل:

مسمؿظ مؼيمؿؼ

Stackؿاؼماظما معمعؿظمط

طؿ مظعمظسسمرؼظؿم

مالصػل

:اؼرماسماسظمعاظمكؿادمالظمظمع

Aؼؿمصمظؿمسم

ؿمعممؿ ؿط.سصمعا ما ؿطمؿؼ ا

ماحظماعمؼاسماض Aم?ا ما ما

ذظممؿسؾر.

داتلصػل

:ؿاؼماطمافؿظماظممعكؿل

مؿك

مغظم

Aؼؿمصمظؿمسم

ؿك

مص

معمعؿظمؼرمسمؿظ.

ذاعلصػل:

عمظؿعمعم

A

ظمددميؼؿمصمظؿمسم

Strings.

م

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 8/169

م

ام

مجمظم ؿعمعمعغمظامعام

معظم م ؿظمغمحمعم طـم

مؼمظظمضم مسمطامظؿعامعادمػAجمؿمسمغؿ?معم

مظضمعؾذمعصمعمؼ

ؿل

ممغافظ

Low-Levelؾاؼاسماض

ؾم عغمهمصمAم غعمطؿم طؿ م عم ؿعمعمظممAم مطم

فؿظ

.ظم معمدظمػجمظظمؾؼ

Systems Programming.

م

 

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 9/169

نالصػل

صشلداظ ـ ااع

مؼمة

:

ؿصمعمغم

مجمؿ

IBM

مسمعمى

مس

Intel.سمسمؿدمظمػم

م

مسمعمىظ

8086

مسمؿظمؿؼمحمم

?ىم

8086فل

م مع

كؿممدؿكعمط

سضمظCمطظمل مسم مؿؼمةمفلعم

Segments.

م

ااعةؾاسIntel 8086

ؿصمعم

مكظمؾديمؿ

IBMظمعمى

مس

Intelى

م مػ

8086

8088802868038680486ا

ماخ AمPentiumمكؿادمؿاؼماحاغم?اؾظما

ام

مكؿادماحممطمممدح

8088اظماعماديم

?اؾظ

IBM PC

م

مكؿد80286ل

مديم ?ؾظXT ( eXtended Technology )ظم? متمط

 AT (

 Advanced Technology )

مزمع

80386.

ؿغمظم مةاغAمازمافظماصعماؿ ةمغممػمف

ISA (Industry Standard

 Arch.)

EISA ( Extended ISA )ى

مؿل مغ

Aػم

80386

80486.لم

مؼىم

مزمع

PentiumغAمصمظسمسدممؼجمغمجيمز

ظضمام

Local Bus Systemsاغما عـ

PCIاغ

VESAاغعماعمؿادظماظ

ظمؼى.

ىمعمسم

م

Aممطم

Intelؿدمؿؼممى

م ممصؿظمسمصح

ىمىؼ

ممظمى

معمؿظمؿ ؿطممظمعظم اعماػمطاعما م

ؼلم ؿصمظعم

Software Compatibilityعظا مزؿحمتمحمؿظممؾطمعمػ

عغم مظعمىؼممعغمىؼمظمم معجمم

Cم ؼمعم

Aظمم

ظمى

.مؿدمؼمصاعظم

مؿ مظمؿظمعم

? مؿك

مى

ظمعمحمرمظم

Word Lengthمظع

مؾظمص مطظمضمض A.

م

م

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 10/169

اع06اع0

ضعمذطم

Intelسم

1978

م

8086ا ماطمعمعؿؼمعمػ

16-

bits(ؼؿمظؿع

16-bit

حظم

م

.)دممظم

1979

مرمت

8088ػ

عامغحامظطامظاخمظامؿامساممظؿعامظا8086ع مظم

جم مرم

معؿظمصمؿؼمحمج

8-bitsا

ماعؿؼما

8086

ؾغمكؿداصم?Aمصمظؿظ مؼدم(اظماؼما ماؾظمسادماؼ

ام ؿقؼامظام

مسادماؼ مؿاؼماماع Aمؿظمظمعظمغمظؿظ

فػ م

مظمحم م مؼمظمض

MHz.)

ضعمذطم

IBM

مؿخ

8088

اديم

?ؾظاكظ

IBM PC

ظالظماظ

ممظمظضم ا?ميدام

معمطمحمؿظمخمظ Cمص معمعؿظ

م

مس

8086مظ

16-bitسالعماح ماغم?ا ما ما مؾال مظ

ؿعمعمطم م

16-bit.مظمظع

ىم

معؿؼ

80868088اعمAا مظمؼؾظمغمـمػمؿظم

ىمىؼمظمؼؿمدؿممAجميدمظكم ظؿاظمصامظاعم

ىم

مسم مظ

8086

8088

عمػمؼىمى

ممظميمظع

عظممصؿظ مA.

م

اعا8018680188

ىم

مؿؼ

80186

80188ىظمؼ

8086

8088اطما ماؼرمسمظ

كؿم ظؿعم

ممعم مظ Cمص مظمى

ممعكؿلعمغطمظمؿظ

لسم

محظم مع

Support Chips.

صم مع

C

ىؼامػامعاطظمم

لم م

Extended Instruction.ؾاطما مجممى

مؿدمؿؼماظمعس

امىؼام

مازم Cمصا م ادماسمؾاطماصمجمظمؾلغمظ

80286

د.

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 11/169

اع80286:-

م

مرمت

80286دم

1982ػم مطمعمعؿؼمع

16 BitsادAماظ

م

معم ـ

8086ظCمؿسدم مح

12.5 MHZاعمغعمظ

10 MHZاظ

8086.

ممظط

80286ظؿظمؼ

:-

1-طيلء

Two Modes Of Operations

م

80286ػمممظميمظ

Real Modeامظ

Protected Mode.

م

مؼميمظم

80286ظمعمط

8086ظمعظمصمظؿظ

مطؿ ؿمظم

8086.ممػمظم مAم ؼ

عمم ااغ مااعماا طـ

Aمؼااؿم اام

Aعااممظااماامصغااماام

Aااحمااض

Multi_Taskingخمؼم

 @  ظؿظمؼمؼمطم غعمعمظؿؼم دم غعم

مظطممغمظضمظم ؿكمعممعمظطمظم غعمسمحم

خمعغظممظمطظمرعمعمعؿظمعمعغظمع.

2-كك

:-

ظ

80286ظCم مطمعمركؿظ

16 MByteامظممظ

( ع

1 MBYTEظ

8086.)3-

لتعامملكفة

:-

حمؼؿمظممظممظم حمظمظمظؿعمعمحمظؿكؼم

جمظؿم عمطؾم مظام

1 GBYTE(ػمطظمضمض

Aحم

16

MBYTEص)ؿظمغمعممؿظ مؼظمػمسمثقؿظمؿد.

اع80386:-

سم

1985

مطمعمعؿؼمعم

Aغؿم

Cتم

32 BITS

ا

ماػ

80386

ػام

م

معم ـ مد A80286سمرمظم

مظ(ع

16_BITC32_BIT)ؾالغ

مظم مCظم

م معؿؼمظمؾظمسلظ

40 MHZؾاطماسماؿ مؼمغص

م

مضؿلؼمظمؾظمسمعمض

Aعمعممسم

80286.

م

مؿلؼ

80386ظاظؿعمعامظاميامظامامحامؼاممم

م

طمي

80386

طممظم

80286.اؼجماماظCمصا مظ

ؼلم ظمصمظم

8086ػممعمى(VIRTUAL 8086 MODE)م

م

مع معمعغ معم طـ

A8086ممظطممضمحم

.

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 12/169

م

مؿلؼ

80386عمعمطمؼامحفامCظاظؿم

4 Gbytesاصماط

ؼمحفمCم

64 T BYTES.

م لام

معمخمكلغمظطمج

80386SXػامهؿامسامغامظام

ظخمظم

80386ظمخجم ؿعمعم

16 BITS.

م

اع80486:-

مسم

1989

مز

80486ا

ماعمؼادمكالغمسمؾسم

80386حام

ام

مؼعمطمسمؿ

80386معامعام اـظما مؾاظمسالظمصا

لاسم

ما

ماسماؿحمظاطمصمحمؾغمم ـ معكؿل

80387ؿاك

سمحمح

Aمضؿاظميل مظمهؿمسم

ؿال ماظمػمغطم

م

معمؼر

80386

مجم م

80387ؼظمسل

م

ملؼمظ

Math. Co_Processor ا

ماعما

ماػمعمتمض80386اطماظCمصا

م لم ظام

Cache Memory(ممعممطمػعكؿدمؿؼمجم

ضظم

مؼظمطظم مغؾظمؾؿظمدط)فح

8 Kbytes.

م

مؿؼ

80486

معمد

A80386ظمؼمسامغامظاماظمةاث

ع

.

م

Aظم

Cػم صم

80486 مسمؼ

(سد

) مجمظسظ

C100 M Hz.

م

مع A80486SX

طمص80486ماغAماسماصمخاظمظمحمعمع

خمؼمعمسمؿ.

معم Cمسمزمض80486ج ممظ

ػطظملؿؼممػمم مؾطمؼػجمصؿخ.

م

اع

Pentium

م

PentiumطذمCمخ @ مػIntel

ا ماطمعمعؿؼمعمAمػ64

Bits

مغعم مؼمظمجمظظمسلظمظ

Cصم

80486ظ

Cػم صم

ؼمحفمظطمظخم

Cache Memory.

مؿامظام

Cضمزم

Pentiumاصمص

Cامام

مسادما

م عـمصمظCمصCمغعCMMXؿ

مدظمعمعؿظمع Aم م مؿمظ.

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 13/169

اعؿؾلؾخلكل0اع06

كؿام

مفال

مسمؿظمؼرمسمظمظمخظمطظمسمؿظمؿدم

?ىمػم

ؿاؼماظماؿك

ماعماضعماظؿظم ?اجممؿادمفالعماطمازما

مخمج

معمعؿظممعكؿد

.فدمؼىمى

ممسمزيمتمظمعظمصؿظمؾلغ

محؿمظا ؼـيمى

معمعكؿدممؿظمػم APentium.

لفم

مم

مخمغؾظمؼمؿؼل مؿؼفل

C:

انا م

:

م ليمظم

Cمؼكؿظمحمعمغؾظمعمعؿظمصمؿؼ

.وا سـم

:ؿك

مؼظمؼمصمؿؼ

.

ام:مػؿظحمسمعAم م م

.

مسمسم

مؿ14فلعمطمزم?Aمؿ مظؿظم?ىممدمفلع.

انابلمDX,CX,BX,AX

مممظاعمظؿعام

مخمغؾظمعمعؿظمم مفل

مػمكؿدمؿؼ

لفعؾذمعمػ

م

.

Cمؼؿعمعم غاممظاطم

Aمؼلؿم

م

A ظشمعم

معمظؿعمعمظاطم ـ مدAمؼمفل

معمعؿظ(اؾظماعماضماسماعؼ)

لفم

معمعؿظممغمظؿظ ؿسلظ

ممفل

مسمؼمؾدمػ

ؼـي.

لفمسم

مػمعمطمعمعؿظم

Aفمحمحمغ

16-BITS احمسم

A

طمحم لم

8-BITSظمػحC

HIGHك

مغ ظـم

LOWعمعؿظمم عـ

لفم

 AXفمفلعمغمس

16-BITSاظمظمعمعؿظمA(HIGH) AH

اس

غفلع

8-BITSكا

مفال

م

 AL (LOW)اس

Aفالعماغ

.8-BITSاعما ـ

لفم

D,C,Bؼظمؾؼمظؿظ م

8اظمعمفلع

8-BITSاعمفالعما

A

ظم

16-BITS.

لفم ممدؿكعمسعم

م

Aظشم

GENERAL PURPOSE REGISTERS

عكؿدممماظؿغماخمعكؿادمفالعماظمAمCمعسمعكؿدمAمم

ظؿظم

:

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 14/169

1-

(Accumulator) AX

لفم

مؿؼ

 AXاغمما

مماليماسممكؿادظما

مفل

مػ

خممخمغعممطظمعمعؿظممغؾظ

.عمضامدؿكعمؼظ

عغظم?طمعمؼؼ.اصمضظمحAممضممسمم عـممح

مظمظمؼؿم

?ضمؿ مةمصممخم

?عمظ

Cخجم

مظممع

مصممخم?عمعمخC.فل

معمعؿظمؿؼمعس

 AXسAػAمغ

ممج

مفل

.

2-(Base Register) BX

لفم

مكؿلؼ

BXطاظماعمعؿظمظم مؿ محمطظمغسم

دمطمطظمعمم

?ىملعمسم

?جمذ

مضم مؿؼممذب

مص.

3-(Count Register) CX

ؿااؼفاال

مكؿااد

CXااعماامااسماا مااعماا مقؿااظمااط

ؿظ.

معممظمفلعممسم ممعكؿدمؿؼمظط.

4-

(Data Register )DX

اغمخام

ماذطمعكؿادمؿاؼمظطملظمظمسممعكؿدمؿؼ

سمخخمخمسمكؿد.

م

راؼمCS, DS, SS, ES

طظمممسمؼقؿظمفل

مػمكؿدمؿؼ.ؼؾظمممفل

مػمزمؿظ

ظطمرؼم م

م Aمغ8088عمعؿؼ20ؼسمذC(ؼظمضغ

 Address Busسمؿ20ذC)

Cم مطمؾرممظؿظ

220 = 1,048,576A1 Mbytes.

:خغممظطمػ5نمAمسؼمAم

  00000 h = 0000 0000 0000 0000 000000001 h = 0000 0000 0000 0000 000100002 h = 0000 0000 0000 0000 001000003 h = 0000 0000 0000 0000 001100004 h = 0000 0000 0000 0000 0100 

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 15/169

م مرؼمجامصامدامظؿعامعامظاؼم ؿ ؿاممظام ظـمظممؼظم

ظلدمسم ظؿظمؼمسمAمخغممظطمػم

00000hػمغخمخ @ مس

FFFFFh.

مظمؼؿمعم

Aمدؾمؼؿم

20اعمارمم

مخمج

مفل

مطم مغخ

16اصماحمفالعمكؿاد مقؿلعمطمطظمؾرمممصمغخ

(فال

م

Aحام

ظحم دؿسؿمرؾمطم مCظم

64 Kbytesص)ظمفؿغطاظمل متم

مػ

رم

معمسمظ CSegmentsل معمط

64 K Bytes.طمدممى?مظؿظ

م

كلراؼم

معؿم م

?جمػمطظمع

216 = 64 Kbytesلؼممض مؼهمؿؼمطظممعمط

م

مض

Segment Number Aؾؼمضمػضظ

0000hضظ مؿؼ

FFFFh.

حمم

Cمؼؿمهؼمظم دم

مخ

Offsetاماض

ممسمؾسمحمػ

مػمضم م

مؼ مع

16 Bytesضظم مؿضم مA0000h

FFFFh.

مطظمممسمؼقؿظمظؿظ ظم ؿطمؿ مظؿظ محم

معمطمضم

ظمس:

  Segment : Offset 

م

مظ ملؼمعمػ

Logical Addressظم ـص

 AABB:5566حمؼ5566خ

م

 AABB.

ممظض

مضممؿؼمؼظمظمسمقظ16(اغخما AمابمالظماؿحC

سمددمحمغخمAمة)اؼظماظمصمظؿظ مظCمحمضمصCمظم مؿؼ

زمظم

 AABB:5566:ػ

م

مم

م

م

ظ

س

غ

 

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 16/169

م

ظ

ص

ؼ

ؼ

م

 

ر

م

م

خ

غ

م

<ظؿظمؼؾمظمظؼم

مض×16+حمض<B0116

راؼم

LOCATIONS OF SEGMENTS

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 17/169

مممظطمؼؾAم ظم

م Aمؾدممؿؼ

0000:0000A00000

مخمسمخ @ 

ػمظم

0000:FFFFغممظمؼؾA0FFFFAمظم ظـم

0001:0000ظمA

00010ظ مؿؼ

0001:FFFFظم

A1000F.معامظؿاخمطمغمص اـطم

اػم

طظمخمر

(1)خ مؿك

مر

مؼسمطظمؼ

:

م

طظمؼؿظ

451001F 

ؼغضم

2

م

…….. 

451000F 

ضم

مؼغ1

م

…….. 

350FFFF 

ضم

مؼغ0

م

…….. 

م

2900020 

ضم

مؼ2

م

7600010 

ضم

مؼ1

م

5400000 

ضم

مؼ0

ؽشل(1)

ظم(1)طم مAؾؼم

م Aمؿؼ

16طظممغ.طمل مظمس

16طاظمماغخ

اام

Paragraph.ااظمااسماالظ مااؾ مااظمؼااظ مااعم

Aؼلاام

10hااظماا

Paragraph Boundaries.

امعام طـماؼرماسم

Aمعمرؼام طـ مؿؼمضمؼظمظمؼهمصمظممخ مظػم

حمسم

مسمم

.ظم مظؿظم عـ

:

م

ام:-ظمؼقؿظم

محمضمؼقؿ مض

1256Aمظ:

A-ظ

1256ظ-م

1240

:

ظم

مؿدمؿؼ:ظ<

>16+ح

م

A-مضم

A صم

مح

X

Aظمنم

ممؼؿظ

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 18/169

X+10h>1256<1256A

X+12560=1256A

<000A

م ظؿظمصمظمػمم

1256:000A

م

م

 –  لظم?ىممػؾ مظمؼظمغمؾ

م

محمضم Aمص

XAمنمظ

ممؼؿظ

X+10h>1240<1256A

X+12400=1256A

<016A

م ظؿظمصمظمػمم

1240:016A

طظممظمغمظCمؼمغظمAمA  1256A = 1256:000A = 1240:016A

 

م ـ

ممطمحمضمؼظمظمصبم

مضمصعمؼ

معظؿظ

:

ام

مظؿقؼمظم

مسمػمع

80FD2hل محمغطمC8FD2h

ظم

مؿد

<

>16+Aممنم

ح

80FD2h<م

مفلعمض>10h+BFD2h

م

مفلعمض

<7500h

م

ؿمر

مطظمل مسم ماحم

اؿك

مرا

مفالعماسماذمم

اؿمػام اصمCظاميجام

ماعماسماظ Cمصا معمعمسمعمعغظمؿؼ

دؿكمعمظؾغم

Stackحمسمعكؿدمؼرمدمظ

.ؼؿممظغعممعمظغعم

Code Segmentغؾظمعممغؾظم

Data Segment

ام

ماعماظماحما

مظاط

Stack Segmentامؼلام ظاا

Cظاؼمعام

Extra

Segment.

م

مانلطؼممCode Segment Register (CS)

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 19/169

لفمسمسمعمظغعم

مػمؿ

Code Segment Addressؼاحامؼاؿمه

عمممظطمؼؿممظغعمصم مظمؼم ؼمظامظامظامحام

مممعلفمخمؼلمبلفم

مػمسمؼهممظظم

;عغظم مؿد

عمظؾغم

Code Segment Register (CS)فالعمكؿاد محمضمؼهمؿؼ

ذعؿظ

Instruction Pointer حمسمثقؿظمؿدمظ.

انابلطؼممData segment Register (DS)

لفمسمسمعمظؾغام

مػمؿ

Data Segment Addressاؼ مؿاؼماح

ظؾغمظمؼؿعمعمظغعممعممعمظطم

(عمل اغؾظم

)ؿاؼ

لفم

ممم

مػمسمؼه

DS.اعماعؿظمطاظماؾرماماظما

محمضمهمخ

Aكؿم دؿكمعلفم

مؿ

.

ؽطؼممStack Segment Register (SS)

طمعمعؿظمطظمعم?جمؼهمؿؼؼ م

مؼمحم

(Last In First Out

م

(LIFO)دمطمسصمعظم

?ظمسمػ

Aحؼؿمدؿظممسمعمظم

م

مذعمػ Aمعمحمضمقؿظمفل

مسمؿدمؿؼ

Stack Pointer

(SP).اطؼمent Register (ES)Extra Segm

محم مم محمسمرؾم Cمعمؾرمؼقؿظمفل

مػمكؿدمؿؼ

معمعممضمحم طـA(ماخ @ م

ممعمعمطظممغؾظمعمطمغم عـ

لفم

مؿمظمصمغؾظمفلعمؼممظؿظ م معاخم

مؼقؿظم

C

م

مؿدمؿص(ES).

م

ةدػلذؤمIndex and Pointer Registers (SP, BP, SI, DI)

مظل مظؿكرامعامساؼم

?ىممسمةهمظمر

مفلعمعمفل

مػمكؿدمؿؼ

فلعمسمطظممفل

مػمسم

مليمسم ?جCممر

.

ؽذؤمStack Pointer (SP)

عظمظمم

مسمؿظ مثقؿظمؿدم

معمعمفل

مػمكؿدمؿؼ.

ساؼلذؤم

Base Pointer (BP)

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 20/169

لفمAددمظؿكرمعامظؾم

مػمكؿدمؿؼاذعماسماظما

مماج

ماغ

معمشمخ Aمرعممطظمؾرك

معكؿدممحم

.

صةدفمSource Index (SI)

ظام ؼام

Cلفممرؾمظطممعامظؾغامحامؼام ذام

مػمكؿلؼ

(

A

ؼغ)معممعؿاؼماعماطممفل

مػمضمؿ م ;عمعؿظمعمطظ

طظمعم

مػمطمعمعؿظ

.

تةدفمDestination Index (DI)

م

مدصمفلعم عـمكؿلؼمفل

مػSIظمطظمسمظ Cمفل

مػمؼمح

مدؿمؼمظؾغمصم

مكؿد مسمظمؿؼ

ESاعماعمسم

ػ

لؿمؼاؿمهؼاػممػاؼم

مسم

مسم

Aظم ؿعمعمظمظم م

فل

.

ماؿؾعتلذؤمInstruction Pointer (IP)

مؿؼممؿحمسمةهمظمفل

مطماغك

ماغؾظماؾرممعكؿاد

طظ.ا ما م

معغظممع AمAمسمصعم

مؼمعغظمؾرك

عغظم ممؿلؼمظؿظمعمسمؼقؿ م

مؼمظ.

م ممعذمظؿم

معظمحمؼمؿؼعم

AInstruction Pointer

(IP)عغظمعممظمؿؼمح

Code Segmentا

ماعمسمصمظؿظ

مػم

CS:IP.ؿاؼماCمعاغظماخمعمذؾعمؿظمذعمؾرمم

امؼاؿمامضامضؿم ؼمشمعؾذمعـمحمظؿمCظمسممح

ؿظمسمثحمظحممظمؿظمذعممظمظ.

ابلم

Flags Register 

لفمسمسمعمظؾم

مػمؿ(س)سغمػ:قؿظم مظيم.

سمطم م م

مظحم مصمظيم ؾظمؾلظاحمافؿظماظحماؿظم

مCمطم مظمضمتمصمص(مسمرؼمػمظؾمعصمظؿفم عـAماظ

داؾ)غؿفم @ خمسم لمم

ماظمامؾاد

م ؾظمؾؿخممظؿظ م.

ام

مخمؿدمؿصمقؿظم

مع

Aا مكؿادمام اـعمام

?ا ماظ

رم

Interrupt Flagمؼؿفػ

معمغمغصمظؿظ مصممظم

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 21/169

م

م عـم

محظمعمظ Cمظمر

(

محظمعمخعمؾؿدمؿؼمم A)ؿد

.ظؿمحظؿقثمسمػمظؾم

صشلداكلظ ـMemory Organization

م

معؿؼ8088 مطمع

1Mbyte.اؿ ؿطمؿاؼماظمعظممطظمطمكؿدمم

ممعامظاطم ام

?ىمؼظم ـصممشمفمطظممرعم

ػمظ

1KByte

ر

م ?غمؼظمف

Interrupt Vector Tableاظمعاظمام?اجAماػمظاط

ددمظخمخم

BIOSخمؼمؿؼمم

;ىممخممخم مؼمظ

مصام

?ضمط

ROM (READ ONLY MEMORY)م امى

?اؾ ماؼماظماػاح

مما

.

ظمحظممطظممعمج مظطذظ(VIDEO DISPLAY MEMORY.)

خاخئنمI/O PORTS

ام

ماعؿؼ8088اع

64KBصام?اجماعماعؿظماظماخماخمؼاسماع

ج

.اسعممؼمظؿكر

مايما مم

Cعمعغمخمخمعؾذام

ظم لؾمحؿم مظؼمم مجمؼمAمؼؿمظؿعمعمجمسامرؼامغا?م

م مػمظمؿظمظ

.

وا

1-

م م ظمػمع80286

8088=

2-مػمع

=ضمممظطم

مفلم م

3-غؾظمفلعمزمط

DX,CX,BX,AX.

4-ظ ممضظمؼظمظمػمع

0A51:CD90=

5-غسمطظممضع

4A37Bحل

:

A-ػمظمسمطمCمح

40FF.

-ضمغطمCمظمسح

123B.

6-=عمػمحمظممظطم  

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 22/169

لالصػل

ؿتلةغللخم

م

م مظطمظخمظم

8088اػممؿادما ماج

ماؿكمفل

مسمؿظ

Aمغؿام غاعمظاظمطمطؿ موم م غعمظامظؿفام ؼامظامدلاؿم

فؿظمؼ Bمؿ مغممو.

فؿظمظممجمل ممػمعظمعظمظمؿ م

Aؾدمظمط

.اؼرمادمػ

لؾظم ليمظمعAمغؾظمغمعAم مؿلغمػ معغظمخمؿ

مؼ.

مظؼمدلؿمظمظمظغعمظمدؿحم

Aخمغةم

?جمع مخم

?جمعمؿؼمغ

مخمخ Aم?جمغؾظاؿ ماظماؿظماظمالؾظم?اظم مكؿدمؿد

خمخمس.

عغ مؼهمطم مؿدمؼظمظم ممعغظم مظمظمCمفؿظمظ.

ةغلاؿؾعؿتل:-

ؼؿمهؼم غعمظامظؿفامظامظام دام غاعمؼلام

 Assembler ا ؿطمامظاؿظ

ظؿم ممحؿمؼؿمسمظام

 Assembler 

مدؿمظمظ

?ىمػمصم

عظم

عكؿل

.

ؼؿمظغعمعمسمعمظؿمAمعممؿمطمدامسامAعامحامصامطامAم

ؿظمعمسغمظػ

.

عامAمظؿام

Instructionsظامؼامظاا

 Assembler اؼماظماظماظ Cماؼقؿ

 Assembler-Directivesؼػ

Cمظا

 Assembler اما عـممظمؾ مظ

سصمعغ مظ ممؿ

مطظمعم ?ج.

طمعممظمظؿفم خمظم

NAME OPERATION OPERAND(S) COMMENT  

ظمؿعمد ميم مظمؿؼ

TABل

م

A(SPACE)ػمؼم

Aاسماحم

 اصم

ظؿظميمحمطم مض.

دمكؿدمؿؼ

NAMEعممؼ مسمثحمظحم

(مظلمعمظغع

)عم

?جم

ؿخمحمػمعغظمع.

ي

Operation م

معمسمؿ

.

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 23/169

ي

Operation(s)

مسمؿاؿؼماماعمد مػ م

مع

م Aم

عمغمس(م.يمػمجمؿ ممعم مػمAمح.)

اظمزق

مح

Commentsؼلؿكمسمظؿمسمعميظمػمؼلؿكمظؿةمظغع

.

اؿؾعتؾلاؿك

Srart: MOV CX , 5 ; initialize counter

ػمعممسم

Startكؿل

مع

MOVػمع

CXضظ5عضظممػمظ5

لفم

م

CXؼمح

مح

A5ظمؿ مظمػ

.

ؼظم عـ:

Main Proc

دا(?Cج)ػمؼمؼم ؿؼم غعمصسم

Main.ماسمثقؿادماؼماصةػؾتؼ

صػتلا

:

عـلؼحName Field

ؼؿمدؿكمػميمس?مسمعممAمس?مدمظغعمصسمطظمسمAا?م

طظممؼسمظ

Cمؼؿمهؼمػميم

ؿ

.

حمشمعلمجمعلصم خميمطاظ31مAمؼمػميم محؿ

م اضممؼاؿمظؿؼام اميامظاؾ“.”مؼلؿكميم

Aاؾؼممادماؼ مم

C

صمظ

.ظؾعم

?م عـ

A:

  start – counter - @character – sum_of_digits - $1000 – done? -.test

شم

?م عـ

Aمعؾظ

:

  two words شصمسمؿ 

2abc ض م

Aؾؼ

 

a45.ab اف   ي).(   

ةؿؾعتلؼح(م)Operation Field

ؿمػميمسمعم

OpCodeاحCما مAمامالظماػممػ م

صمظغعمظامدام

مؿظااظماػمعاغظماىبم

 Assembler ادماح

مظظمظؿم ـطمظمظمظ Cمؼقؿ

Sub

 Add

Movؿادمصعم مط

حمؿظ مسمؼي

.

ؼم

C

مطغم

C

عم

APseudo-Op

صمؼؿمهؼمظمظامظامخامظاا

 Assembler 

ظم  عـمم

?

Procسصمعغ مؼؿظمكؿل

Procedure

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 24/169

ماعؼحOperand Field

عمعمعلفمعؿمة مظمدؿم معامياظم

مسميمػمؿ

(سم عـمىمسم عـ)AماحماضمAمؿاضمسمؿمAميمم

ظم مظؿظم عـمكؿل

معمغملحمظم

رمسمضم

Aؿمسم

مماع

NOPععمج م

INC CXفل

مػمحمععمجؼ

CX

 ADD Word1 , 2ؿ

مػمععمجؼ

Word1ضظ2

مؼمع

مميمظحمالؼماصمافؿظمؼامؿادماظماػمماع

لؿم

destination Operandطظمممضعم

Aلفم

مح

Aعم

Cػمؼم

اA)م معمم م ؿكؼمظؿفمAم

مسمؿقصمغ ظـمع

مع ASource

Operandضم مؿؼممسظيمعم م مؿ

.

ؼمسمصCمععمسمسمع

مؿقصمؼظمؾلظ مع A.

اظحاؼؾعتلؼح

Comment Field

عم مسمعميظمػمسمعمؼم ؿم

معمحعمسميمػمؿ

Cمععم

Aمعمزاصممسال معغظم

Aؼمضمكذممعم مضمص

.

رم

مظ ميمػم ? مؿؼ";"سمػومؿؼمر

مظمػم م مؾسم A

حعمغ

A.

شمAمػميمخؿمظممظمظؿفمهؿمظؿمصمظؾمظامصغامعام

مؿمظؿلمسمعامؼاؿمام ام

Aعمشمم

Aمؼؿمم مسم

Aصم

د

مؿظممطمسمعظمبم

ملؿطمؿؼمعغظمد Aمعمدمطمس.

دعمشمظؿظمؿظم ـص

:

MOV CX , 0 ; move 0 to CX

م

Aؼؿمطؿ مظؿمظؿظطمعمصم

:

MOV CX , 0 ; CX counts terms, initialized to 0 

ام ـ

مماطماماصمذمظحممظم مغ

Aحغمدؿكمدمطعمسم

Aطمؼؿم

ظؿظ

:

  ;; Initialize Registers

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 25/169

  MOV CX,0MOV BX, 0 

Program Dataناملباناتمةل

ضمةمم عمظمظؿفامؼاؿمظؿعامعام

Aؼمظغعم ظؿعمعمظؾغممم

حمممؿحمAمؼظمAمسمدلظمAم ظـمظممض.

سNumbers

مم ظـمضم ؿطمؿؼ

01يمؿ

B

Abاةمضاظم

Aظظمسم

Binary

م عـ

01010111B

A11100011b

اؿ مAماماطمؼظممحم مؿ

مظممؿ ؿطمؿؼمؼظمض

يم

D

يم

Ad

ؼسمغ

Aظمسم

Decimal

عـ

1234

1345d

 –234D.

مسمدلظمضي مؿ مض مAؾ مAHيمAh

اغAمسمظظ

ددمسم

Hexadecimal عـ

0abh

A56H(م

.ؿادممؾالظ

0ما ـ

م

مػمظضمظلدمسم

م Aمؿظ

abل

مؿ

مظ

ab.)

لتالو عمؾة

ضظزقع

10011 

س 10011b 

ة

6455 

س

-456h 

سمدد

FFFFh 

(مؼؾAم ض)خم1,234

 

(ؿمسمحمشمض)خم0ab

 

خم

(ي مؿؼم

h

AH)

Characters

م عـمؿظمعسمخمىميممؿؼ

„A‟A„SUDAN‟

اؼهماخمؿاؼ

زممطامظاايم

مضمظ

C ASCIIدامظاا

 Assembler ماؼمظاؿظ

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 26/169

سمطظايم مصمجؼممظ

„A‟ضاظ

41h(اقظمزا

مضاظماػ

 A

ى)طظممؼكؿظمحغمعمAمعغظمخمظ.

غتVARIABLES

ؿ

مظاظمؿال

مماظ معاظمماؾ مظمظمغمفؿظماظمم

High Level Programming Languagesدؾظمظم عـلظ.ؼهممظمس

لؿكعممظغعمغمطمعؿمحمدؿمحفمعممظطمظمعؿم

مؿ

م

?

A

ؿؼم ؿ

مؼ مفبمظمؿ

مغمعمد.اؼؿظمظاؿظماىمكؿدمؿؼ

ؼ

Cؿممظمظؿفمحمؼمطم

ؼ م

مؿ

مظ

.

اعو ـع

DB (Define Byte) 

طظممحمغخمؼمحمؿعمؼؿظ

DW (Define Word ) طظممؿظؿؿعمؿغخمؼمطمؿعمؼؿظ

DD (Define Double Word) 

طظممظؿؿعمغخم Aمؼمؿعمؼؿظ

DQ (Define Quad Word) 

طظممظؿؿعمغخممؼمؿعمؼؿظ

DT (Define Ten Bytes) 

خمسمؼمؿعمؼؿظطظممظؿؿعم

ؿمعمظم

معمعؿظ مدم ?ىمػم

DB

DW.

ةفغتByte Variables:

ظؿظمظ مصيمؿ

مؼم مؿؼ:  Name DB Initial_Value

عـ

  Alpha DB 4

مػمؼم ؿؼمعاؿمؼامخغام ؼامطاظمماح

 Alphaاضمامؿاؼ

ؿامعػم

4ؿ

مػم

..محظمسمجمضم ؿمظؿاا(=)ؼؿمدؿمسعمدؿم

عـ

?DBByte

ؿم م م

مػممؼممظمااظ0255اظماضمظحماؼمؿاؼ

ذ

Unsigned Numbers م

128-

127+اؼماااؿؼماظماضماظحم

ذم

Signed Numbers.

 

ؿغتم

Word Variables

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 27/169

ؿمسمAغمعمظم

مؼ مؿؼ

Wordطظمعمؿغخممؼمؿؼ

Two Bytes

ظم دؿكمظم

  name DW initial_value 

ظؿظمؼؿظمـع

WRD DW -2

ؼؿمصم ؼمعؿم دم

WRDؿ مضم(ضظ – 2)ص

ؿظمؿ مضمجمسمظحمم=معظممؿؼمصيمؿ

مظحممط.

مظؿمعمظام

wordا ما ماضAمؼا065535(216  –1)اظحم

جؾمص(ضم مCذم

)Unsigned Numbers

 – 32768(-215ماؼمضامعاممحظامضا32767(215 - 1)حؿا)م

ذم

جؾمظلظؾ(م

)Signed Numbers.

افػصArrays

صمسم

معمعؿغمفؿظمظمطظمم

مظم AميمعمسمغA

ظؿؿعمؼسم.ايمظمعمضAمةةمسمؿهمصعمؼؿظم ـص

3Bytesا

ؿم

10h

20h

30hسمظ مؼؿمدؿكمظؿؼمظؿظ

:B_ARRAY DB 10h, 20h, 30h

دم

B_ARRAYCمؼ

مممظمظ

)اظ

10h)اد

B_ARRAY + 1

غمدم ظـمظمظCمؼ

B_ARRAY + 2ظ ظـمظمظCمؼ.متمCم ـص

سمحم

0200hؿظ

B_ARRAYؼمطمطظمذمؼ

:

ؿظد(عظSymbol)

10h

200h0B_ARRAY

20h0201hB_ARRAY + 130h0202hB_ARRAY + 2

م

ؼؿظم ـصمطمعمعمعمؼ مؿؼمؼظم

  W_ARRAY DW 1000h, 2000h, 3000h 

ؼم ؿؼمعمؿمسمةةمسم م ؿم

1000h

2000h

3000hا ظمس

.

ظمؼمؿؼ

( 1000h )ظم

W_ARRAYاظمماغ ظـماظ

W_ARRAY +2

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 28/169

ممظم ظـ ظـمظ

W_ARRAY + 4ػ.اظمعم? مطظمم

مؼمتمظم ـص

300hؼمطمطظمذمؼ:

م

ؿظد

(عظ

Symbol)1000h 0300hW_ARRAY 

2000h 0302h W_ARRAY + 2 

3000h 

0304h 

W_ARRAY + 4 

م

غاممظام

مؼامؿاؼماحمؿغخممطظممؼمؿؼمظمػمعمؿظم

Aحم

ضم

Low Byteطمظممغ

مظمغ

م

High Byteاذؾعمظؿظمظم. اـص

ؼؿظمؼظمطم

C:Word1 DW 1234hؼؿمؼمظضم

34h(ضمظممغ

م ـمظ)ظم

word1ضظ

12h(ا ـماظ

طمظممغ

)ظم

word1 + 1.

ص لـادلCharacter Strings

غمدلمعمي

Aؼؿمؼمظمسم

Aمؼؿممظم ؿممامحام

زمظقممجميم

مظ

 ASCII TableاغمظCمؼؼمظؿظمؼؿظم ـص

ظؿفمػم ؼمعؿمم

Letters

ؿ مظم

„ABC”

ص

  1 - Letters db „ABC‟ 2 – Letters db 41h, 42h,43h

 

ظؿظم ـ

ممطممز

مظميمقؿظمؿ مظمعم

  msg db 0dh,0ah,‟Sudan$‟ 

ؼؿمػام اظؾمظؿضام اميامظاؾم

Capital Lettersاظماي

Small

Letters.

ل

د

A مىمظغعم ظـمكؿدمسمؿؼا ظـماؼؿ ماظماظم

?ظمحمعم

عغظممعكؿل

مؿك

.ؼمكؿدمؿؼEQU (EQUate )اسما ظـماؼؿظ

ظؿظمقظ:

م

م

  name EQU Constant 

حم

name  ظـمدمػ.لؼم ةمؼؿظم عـ

LFؿ م

0Ahغؿ

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 29/169

LF EQU 0Ah

م ظـمكؿدممظؿظ

LFضظمسم

0Ah ط

MOV AL , LFكؿدمسم

م

MOV AL,0Ah.اظمؼمح

 Assembler  ظـمؼقؿ

LFضظمظCمعغظمخ

0Ah.

ظؿظم ـ

مكؿدممظط

  Prompt EQU „Type your Name‟ Msg DB prompt

 

حمAم

EQUمامؿعمؼ مسمؿؼممظؿظ معAمAم مظمؼCمسمؾس

طظ.

عمدادة

كؿامسامداؿكعم

ماظمعكؿادماطماددماعم مسمؿدم ?ىمػم

دمAمظؼمعؿمحصم دم

Byte1

Byte2د مطمؿع

Word1

Word2

1 – مMOV

ؼلؿكمعم

MOV

Aلافمظعام

ماػمطاعماػماخماعماعماغؾظمغم

ؿممظطمAمحؿممغم

م Aم

مفل

()اعمامعممؿ ةمض

فلعمسم

A

ظطم

.

ظعمظعمػظم

MOV Destination , Source

م

مؼؿمغمؿؼمح

Sourceؿل

مظ

CDestinationا ما

ماضمةؿ م

عـمعم

MOV AX , Word1

ؿ(ض)حمؼؿمغلمؿؼم

Word1فل

مظ C AX.ظمظمصمؿؼمؾظ

ظفل

 AXطظمع.م مع

MOV  AL, „A‟ 

ؼم مظضم

041h(قظمز

مضظمػ

 Aمجمظا

 ASCII)فل

م

 AL.ىمظؿظمؼمضمدؿكمعم

MOV

م

م

ت

ص

متغممؼطمسا

(كلقم)

اث

اسم

شمعلعلعلعل

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 30/169

طؼمم

لعلعمشلعلعمش

غتم(كلقم)لعلعلعمشلعمش

اث

لعلعمشلعلعمش

2-مXCHG(Exchange)

عمكؿلؼ

XCHGمدؿؾمضمعلفمعم

Aضمممظطدؿؾمضمعلفم

(ؿع.)ػمعظمعظمظ:

XCHG Destination, Source 

ام

:

  XCHG AH, BL 

لفم

مضمؾ مؿؼمح

 AH, BL(ضمؾ

 AHضمل

BLBLل

 AH.)

ام:

لفم

مضمؾؿد مؼمظؿظمع

 AXؿ

مع

WORD1

 م

XCHG AX, WORD1 

متدقولاتل

XCHG

ت

صاسمكلقم

اسم

لعلع

كلقم

لعلعمش

:ADD, SUB, INC, DEC, NEGلعؿؾاا ة-3

ؼؿمدؿكمعؼم

 ADD

SUBفمعضممظاطىمAمرمؿؼمعلفمAمع

ػمؼعظمعظمظمطظممضعمعمفلعم

Aمعضممظطمعمعلفم

A:-

 ADD  Destination, SourceSUB  Destination, Source

 

وMOVظ دم ساح تتن

XCHGف ذ كرة

 وقن

 ع

 باتال

MOVف ر و د ثل 

Word1,Word2

ستخد موكن كن تادي هذ د با

 اك ر بصف طسو لجس:

 

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 31/169

عم عـ

ADD  WORD1, AX

لفم

مؼؿممؼ

 AXؿا

ماضماظ CWORD1مافؿظمؼامؿاؼؿا

م

WORD1(

فل

مؼؿمضم مؿؼم

 AX

م مع

)عمظط

  SUB  AX, DX

لفم

مؼؿمرمؿؼمح

DXفل

مع

 AXفل

ممفؿظمؼمؿؼ

 AX(ح

لفم

مؼؿم ADX(م ؿم م مع

اؿعتدقيبولاتلومADDSUB

ت

صاسمكلقم

اسم

لعلع

كلقم

لعلعمش

اث

لعلع

ؾذم معضممظطممAعمحم ظؿظمصمعم

مظم Aمى ملعمشمغAمح

ADD BYTE1, BYTE2لعمشظمسمؿ ؿطمس

Cمظمم

:

MOV  AL, BYTE2 ;ؿم

مضمؿؼمح

Cىمسمؾضمفلع

 

ADD  BYTE1, AL

عم

 ADD BL,5ضظممؼ

5Cفل

مؼؿ

BLفل

ممفؿظمؼ

BL.

ظمغممؼؿ

مؼم AممغمنمعسمحطؾعمشمظؿظمعمAمبم

MOV AX ,BYTE1

ؿم

مرممظ

BYTEفل

مع Aمحمغخمػ

 AXؿغاخماػمظرمص

2-BYTE.

(ؿ

م

A(ع

)ظمغمعم م

)

م

اامناامظام

 ASEMBLERؼلؿاؾمع

MOV AH, „A‟(ع

 AHممAمؼمطظم ؼؼ

مص)

حمؼؿممظضم

41hلف

م

 AHؼمAؼم ؿؾمع

MOV AX ,‟A‟(ع

 AXطمظطمؼم

Aمم

مصمط

)

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 32/169

ااضظماامؿاادماح

0041hافل

م

 AX.

مINC (Increment) , DEC (Decrement) , NEG

عمم

A

ؼع

INC ,DEC

ابمطاظمماضعم

A

مغامضامعلافم

A

ؼؿمصمؼام

1

ػممعظماظ:

INC  Destination ; Destination = Destination +1

DEC  Destination ; Destination = Destination - 1

عم اـصINC WORD1ماؼ1ؿ

مؼؿم CاWORD1

عماDEC WORD2ضظمغ ماؼ1اؿ

مؼؿماعWORD2.

عمسمثقؿغمخ

ANEG(Negate)اضماظ

Cجام

مضظمذ

Cظمؼلؿمظؿقؼاام

اامةاام

م Cماااااؼقؿ مااظمااجع ظاامضاام Cماااؼهمؿاااؼمظاالظمضاااظمظااد

Complement2‟Sػمعظمعظمظ:

  NEG Destinationم 

معاضممظطم

Aلفم

مح

Aحامؼؿامظؿاعمعام

اااـع:

NEG BX ; BX = -BX

NEG BYTE ; BYTE = -BYTE.م

 

ؿتلم لابعلو:-

م ؿق

?ىمػممدم لظمعمعمعؿظمؿؼمظاظمظمعمظم مؼ

.Cظم م مظؿفHigh Level Programming Languagesظم

ؿؼم

م AمصمC ABظمعمؼؿعمسمؾسWORD.

B=Aظؿقؼمظؾم

ذؾعمطظممخ

 @ ظمعؿم

Cؿممظطم

مؼؿمغمممغاؾظماؼهمؼ

مضظمظ Cمفل

مضمغمةمفلعمظ Cمؿ

مضمغمظ C

غمؿؼم

 Aفل

مظ

 AXمغمؾض

BMOV AX , A

MOV B , AX

A A= 5 - AعمعمؼؿمهؼمCمع

 AXMOV AX , 5

 AXسمؿه

5-ASUB AX , Aم

م

 AMOV A , AX

معم

A

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 33/169

NEG AADD A,5

A A=B-2*AخمعمعمCمؼهمؿؼ

MOV AX,BSUB AX,A

SUB AX, AMOV A,AX

مانؾلاعلؽشل:-

امم

ماؿممؿمرعم Cمطظمل مسمؿ مضم لظمظم

ظمسعاغظماعمالؼمالغمعاغ

CODE SEGMENTاسماؿماخ

 @ عام

لؿكعممظغعمؼلمعمظؾغم

مغؾظ

DATA SEGMENTؿمظةمع

م

معملؼم

مس

STACK SEGMENT

رم دمظام

مػمظ مطم مؿدم

?ىمػم

 ASSEMBLERاطم مع

عغظمخمعمطمؼ م ؿط

.

كلاMEMORY MODELS:

مطؿ ؿممممAمؼلمعمحم

معغظمؼمضمغمعمصمغطمط

حمسمظمعمعمكؿدمظCمؿهمضم

مغؾظمعغظمعمظمص.ؿؼ

ظمؿد.MODEL:ظم ؿ مظلمظؿظ

.MODEL MEMORY_MODEL

معممظطمدمؼؿم قم طـمؼظمجؼمغم

Aؼؿمطؿ مػمظلمضؾم ؼم

مىمظؿظمظمسعمCممؼمحفمظؾغمطؾمؼؿمشظؾمدؿكمظم

SMALL

مااػاامػاام

ؿاادمااظمعااظمااشممااي

.ااظمااسماالظماا ؿطمؿااؼ

ظؿظ.:MODELSMALL

عمطمخم مؿك

مطظمؼعم ?Aمؼمظؿظمى

م

م

ؼم

MODELظ

SMALLحمعممغؾظمحمعممظ

MEDIUMمظطـAعحمعممغؾظمع

COMPACTمغؾظمحمعممظطـ

Aعمع

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 34/169

LARGEمظطـAمغؾظمعمعطـAالعمشمظمعمع

ؿؼمعمطمعم

64k BYTE

HUGEمظطـ

Aمغؾظمعمعا طـ

A

Aعامعامظامام

معم مطمعؼمػ

64k BYTE

م

انابلطؼمDATA SEGMENT:

مم ؼممعمظؾغامAمم ـظمؾلظ مؿ

مطمؼ مسمغؾظمعمؿ

طظممعم ممغمؾلغمخ @ معمA.

ؼؿظمكؿدمؿؼمغؾظمعمؼؿظ

.DATA

اذؾعما ظـمؿا

مؼ مؿؼمظ

ظمؼمظؿظم ـ

.DATA

WORD1 DW 2

WORD2 DW 5 

MSG DB „THIS IS A MESSAGE‟ 

MASK EQU 10011001B

ؽطؼمStack Segment:

معمظطمظؿمدؿكعممسم ؼمظؾغام

?جمفحمػم

معمعمظ

?اة

عغظم

. حمض

Aمم

مطمؼكؿظمطمفيمػمؼم

(طمؼكؿظ

م ؼلمAة?مسمظغعم

مظ.)

ؼؿظمكؿد م

معمؼ مؿؼ

.:Stack Size

حم

sizeسمـؼؿخحظ م

مفحمػ

bytes.اؼؿ ماؼمظاؿظم ـ

مفم

100h

.Stack 100h 

ممؼؿم ؼميفمؼؿمصميفم

C1KBدمظا

 Assembler .

مانلطؼمCode Segment:

لاؿكعمخامظغاعمؼاؿم ؼامسامظقام

ماؿظمعمسم

مػمؿ

ظؿظ

:

.Code Name م

حم

Name

مدماااػ.اظمظحممظمدم?سمسم

Small(ؼاظم

عمحمصم

)حمدم غعمظا

 Assembly

مدظمخممػميظ

.

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 35/169

Procedure(Cجا?)خمعمظغعمؼؿممعممم اعمااامال A

ممج?مسمظقمظؿظؼ

Name Proc

;?جمخمؿظمع

 

Name ENDP م

حم

NameعAم?جمدمػ

Proc

EndpؼCمص

Pseudo_Ops

ماكمان طؼمولاتلء

.CODE 

MAIN PROC

;  عمظؿمخمج?م  

MAIN ENDP

;

اااااػماااؿ ؿطماااؿؼم

?

جم

ؼمطمعرمظغعمصمظمظمظغعممحظمظم

Aم م

small.اقظماسمؼ

ظؿظ:

.MODEL SMALL

.STACK 100H

.DATA

; م ظـمؿمؼ مؼمػ

 

.CODEMAIN PROC

;عمؿظ

?جمخ

 MAIN ENDP 

;ػمؿ م?جم

END MAIN

 @ ENDخمدممظغعممطمغؼمظغعم.عؿؾسم دمج?مظلممظغع

خاخاؿؾعINPUT &OUTPUT INSTRUCTIONS

عمكؿد مج

مجمعمضظم

معؿؼكؿاد ماظماخماخمغ

عم

INاعمخ

?عمصم

OUTاخ

?اعمما ؿظ

.اػمكؿادمؿاؼ

اجمسامم

مىمعمعؿظمسدمػم

مطم Cمظ محم ممع

ؾؿظمعظممعمػمكؿدمؿؼاجمعمؿمضمغ

مؼسم

Aمظلؾؾمم

جعخممؼؿم ؼمظغعممطم

مجمعمعؿظمدمعمغمغ ظـ

مظجم دم مخعم

مطظمد

SERVICE ROUTINESػص مؿؼ

جظم

مطظمد

.

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 36/169

اغمؼلامؼج

ماعمعؿظممعكؿل

مع

م ممسغم

BIOS (BASIC

INPUT /OUTPUT SYSTEM )غم دؿكمظ ظـ

DOS.ظم

BIOSؼمؿؼ

مصم

?ظمطم

(ظا

ROM)ؼؿعمعؾذمعمعغمخمخم امخاعمظاا

DOSسمؿطـ

Aمرؾسمدلمحمػام امسام داؿكمظ عـم

BIOSخCمسم م/ذؾعمخC.

BIOSؼؿمغ?مظامADOSمظا

رعم?غمكؿد ممسمؿظ

INT (INTERRUPT

)ظمػمسم?ظ

INT INTERRUPT_NUMBER 

ؿؼمح عـممضمػمر

م ?غمضمؼه

INT 16hؼم مخعممظاا

BIOS

ا مم

ماحظممضم ? مخمػ

INT 21hخام ا?مخعامعامظاا

DOSؿاد

م محمع

معمؼعمسمؿظ

 

قراؼءن21H(INT 21H)

ظمػمكؿدمؿؼؿظمغمعؼمظمع

معمؾطمسمؿظم ?DOSح

لفم

مم

مع

مضممؿؼ

 AHخ

Aضمؼؿمعمم مظممعلفم

رم

مرم ?غمؿؼمظم م

مع

مغملحمظ

21H.ؾؿدمعمؿؼمض

لفضممم

مممؿؼمحمر

م

.كؿاممجاؼؿ

مع

م

عمجك

مظ Cمخ

معخمطمزمؼمؾط.

اظ لـاملاممؼفةثثولاتل

ع

مضظ( ظ)

1

محظمعمحمضم

2

طؿ محمحممظذ

9طؿ مسمعميممظذ

امهع ا تـدلاتلء

قةم1: اػةحلمحءق

خ

:ضظم

1لف

م AH

اج

:فل

 ALمطمسمؿ

 ASCIIحظقمظمتمظمسممظ

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 37/169

مAمم

0حمشمؿعمسمظمظحمNON CHARACHTER KEY

)

م عـF1-F10.)

عم

مػمؿظ م ؿطمؿ

:-

MOV  AH, 01INT  21H

محظمسمظمحم Cمكؿل

مؿغ مع

مػم.اؿعمAماسماظمس

يمؿؼاظمطمس

 ASCIIفل

معمؿظ

 ALاظمتماظمايماسمؿؼمط

ذظمسم

محظممس

.ؿ مصمصمكؿل

مظ

Cعم دمدظم

مػم م

ؿعمسمظمؿؼمؿح.ا عـما

م ا

ما مامتم CF1-F10اؿمالص

لفم

 ALظؿمظم .مظمس

INT 21hفال

مقصمؿل

 ALاكؿ م

د

مظ

.2-قةم2:ؽةػزػ ـ ةذاشلىؾسحس.

خ:ضظم

02فل

م

 AH.

مذمظام

 ASCIIفل

ممسم

مقظمط

DL.

اج:مظاظ

 ASCIIفل

مممؿؼمسمتمظمقظ

 AL.

عـ:ذظمسمؿدمعسم مظؿظمع

  MOV AH , 02H

MOV DL , „?‟ INT 21H

م

مظؿظم

مظ Cمذ

م قؿؼمذظمسميمسؾرم(ؼغمػمظيمظمطمC

ذ

م

قؿؼملظؼىملظمؼ مظ

C.)

عمظؾسمحمظؿقم

مػمكؿدمؿؼ

Control Character اؼمظؿظمىمؼA

قؿظمحم)

ظم

 ASCII

ظزاظااعااا 7BEL (Beep)م

C

8BS (Back space)كظمصلع

Back Space ))

9HT (Tab)بم

ه

Tab

 ALF (Line Feed)دمجؼ

DCR (Carriage return)ؼمظلميظ

لفم

ممؿظم

 AL

ذمس

 ASCII

قؿظمي

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 38/169

مانل:

خظمم ؼمظلمظؿظم

C مةمرؾسميمظمتم

محظمعمحم

? مدممغ

ظم?غCمةعغ.

مظؿظم

?جمعمعغظمؿؼ

:

سمظذ"="Cزمسعمدؿم-1

MOV  AH,2MOV  DL,‟?‟ INT  21h

2-

محظمعمحم ?ض  MOV  AH,1

INT  21h

3-اخ

 @ خظاممعلافم

Cحميمظمتم

BL

فال

مكؿالدماغماظمم اـع

DL

لفهؼم

مؼؿمؿظمظمدمؼىملظمؼ مظ Cمذ

 AL(ع

م Aمح2

لفم

ممؿسؾرم

ميمؾؿد

DLفل

ممؾ

ميمس م

 ALغمم

صمفل

مظ) عـمخ @ مفلعمم ؼؿمؼممظؿظ

BL

  MOV  BL , AL

4-قؿظمحمسؾرممؼىملظمؼ مظCمفل

مؼقؿظ

ؼؿمظمطCarriage ReturnLine Feed م

 MOV  AH,2

MOV  DL,0dh ; Carriage ReturnINT  21hMOV  DL,0ah ; Line FeedINT  21h

5-ظخCمتمظميمسؾر(ؼمتمغمحفل

م

BL

م(3) MOV  DL , BLINT  21h

6-ضظم مظمؿؼمؿظمغممظممعغظم

C4Chفل

م

 AH

رمضم

م ?غم?سؿد

21h.

MOV  AH,4CHINT  21h

م

م

ظؿظمظمسمعغظمؾؼمظمسم

:

TITLE FIRST: ECHO PROGRAM.MODEL SMALL.STACK 100H.CODE

MAIN PROC;زمسعمظؿفم

 

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 39/169

  MOV AH,2 ;حمسؾر

 

MOV DL,‟?‟ ;ؿسؾرم

مي

 

INT 21H

;

محظمعمحم

 

MOV AH,01 ;حم?ض 

INT 21H

MOV BL,AL ;يمؼ

 

;ؼجمدم

Cظػم

 

MOV AH,02MOV DL,0DH ; carriage returnINT 21HMOV DL,0AH ; line feed

INT 21H;ظخCمتمظميمسؾر

 

MOV DL,BL ; ;لفم

معميمح

INT 21H

; DOSؿظمغم

Cظم

 

MOV AH,4CHINT 21H

MAIN ENDPEND MAIN

غمسعم

Aؼؿضمظغعمصغممظؿقمظاحم

DOSؿ

INT 21hزظ

4Ch

عغظمػممغؾظمضمحمصمؿ

مكؿدمؿؼممغ

مانلغش ءاشن:-

ظؿظم

مظمؿؼمحمؿظمعغظمومم ?غCمؼرمدم?ىمػم:-

1-م غعد

Aكم

Text Editor 

 لظم ـ

مم

معغظم ؿظ

.

معغ مع

)دؿكمظا-2

 ASSEMBLERل

م

مظؿظ

OBJECT FILE.

3- ظمعغ مكؿد

LINKERظ معمظا

OBJECTؿظمعمظؿظ

 EXECUTABLE FILE.

.مظغع-4

لظم

معمخمطمؿظ م مؼمص:-

-:SOURCE FILEنشاءمؾلم-1

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 40/169

ؼؿمدؿكمAممغم

Editor اغمعمؿؼممAمكؿدممعغظم ؿظ

سم

Text Editor  عـ

EDITاؿع م

مؼمسمؿؼ

 ASM (Extention)ا ـ

م اـع

د م

مم لظ

FIRST.ASM.

-:ASSEMBLE THE PROGRAMؿلنام-2

ؼؿمػمسمرؼامعىامظغاعم دامAحامظاام

 Assembler ا عـ

MASM(Microsoft

Macro Assembler)

ATASM(Turbo Assembler)ظمم

مؼقؿ م مظم

ؿ

معغظمسمؿلؼمظمظمCمضمعمCمفؿظم م

(OBJECT FILE).

مخممطؿ مظغعمحمؼؿم

Aمظؿطمعمسمجم

معمعؿظمؿؼمظمػم

A

م

مظ

Cظجم

(1)?اخ

Aمم ققمحؿممسمدظم مجم

?خمؼه

عغظم

.

كؿدعغظم

TASMAMASM:ؼؿمسمظقمظؿظ

  TASM FILENAME;

MASM FILENAME;A 

مدلؿكم غعم

?ىمػم

TASMظمػمؼمظؿظم

:->TASM FIRST;TURBO ASSEMBLER VERSION 3.1 COPYRGHT(C)1988,1992BRLAND

INTERNATIONALASSEMBLING FILE: FIRST.SAMERROR MESSAGE: NONEWARNING MESSAGE:NONEPASSES: 1

ظلممؼمغمظا

 ASSEMBLER?اخ مؼدمؼم

مدمؼمغ ظـملظ

عغظممج مظ

.

حمAغمCمطمػمAمخممظغعممؼاؿمCزامداظمهامضامظلامغؾام

ؼدم

مؿصممحم

مسم

first.asm

اخ

A

مةمظمعم

مق

م

مسممؿحم

مػمس Cfirst.obj.

3-مانل Linking the program

مظل مػمعم امظام

مم

 Bغ

Cمظمتم

Machine Languageاشماظ

ؿظم ضظؿظمؾدظمظمؿظم ظمعظمد

مظمسمؿممغم:

A-معغظمخمغظمسمصمظؿظ مطظمم

مهمعمؼ مس

ػ م.

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 41/169

-طAم مظحممظ مصعمشم معغظمخمؼظم?معم

خ @ معممؿعمخAمسصمع م?غمعظمحAمعمؿؼمحمعغ.

م

غعمظ م

Link Programمسمظ م مظاا

?ج مؼ

Object Filesاؼهماؿك

ؿظم ضمعمؿغ مظم مؼمعغظمخمؼظ

. EXE(Executable File)س

قظظؿظ:

> TLINK First;Turbo Link Version 2.0 Copyright (c) 1987 Borland International.

م

4 – مانلػ ـRun The Program

ظؿمظغعمؼؿمصمطؿ ممعممظا

DOS

  C:\ASM > first?ttC:\ASM >

ؼمظغعم ؾسميم

"="ؿغ ا

ماحظماعماؿعماسمظمحمظ

.اؼ

ظغعم ظػمCظم ؼمظلمىؼمرؾسميمظمتمظمسمةمغؿ?مظام

ؿظمغمظ

C.

ةذاشلؾسةلادازDisplay String

1مظغعمظل متمدؿكمظزمضم

م ?غمعاضم

21hؾؿادمكؿال ماػ

مطظمظزمضم

محظمعمح2ذظمسمحمسؾظمػ.

عمضم

مكؿدمؿؼمذظمسمعطمظدمزم ـ

مػم

9

قةمخ9:ذاشلؾسةلاداز

خ

:حمس

Offsetلفظؾؼمظدظم

مممؿ

DXمم

(ي مظدظمؿ م

"$)م

"

CمحؿامظداظمسامAمحا.مغؼمظدظمم ؿمرؾسؿمسامظذا"$"يم

مظؾس Control Characterهم

Aصغمؼؿم م

.

ؼؿم ؼمػ.مظذ‟!„Helloظؿمػمظمدم ؿ م غعمؼم زمظدظم

ظدظممعمظؾغم ظضمظؿظم

  msg db „HELLO!$‟ 

م

LEA

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 42/169

عمضم

مؿه9ر

م ?غمINT 21hفل

ممظدظمح CمسمومظCDX

LEA ( Load Effective Address)ظمظمؼؿم معم

LEA Destination , Source

اؿميام

مدمػم

معظمفل

مح

Aلؿمػم

مح

(طاظمماضع

.)اؼ

ؿل

مفل

مم

مؿظمحمسم مع.عم ـص

LEA DX, MSG

ؿم

مظمحمضم مؼmsgفل

مDX.

لفم

مومظ

CظاDSمػمظغعمؿمسمعم غمصغمؿم

Cظمؼام

غؾظمع.

م

مانلطؼمةا

PSP (Program Segment Prefix)

خغمظغعمػم ل256سعمؼؿمهمظغعممظطمؼمغمظؿم ؿكم

PSP.مؿاPSPػمعمعؿظمعغظمؿلؼمظمسمعغظمسمععمس

ع

.ؿظمغمؼDOSفال

ماعماطمم م

م

مسمDS

ESغؾظمعمفلعمصمظظمفؿغمعغظم مؾضDSعمسمسمؿم

ظ م

مغؾظAممغ معمسمؿمعغ مAمصم

مػمظمعغ

م ظغعمسمظقمظؿظم

مغؾظمعمظ

Cم ؿفمعلفمعمظؾغمظم

AؾؼMOV AX, @DATA

MOV DS, AX

م @DATAحم

معغظ م

مغؾظمعمسمػ.DATAااظماؼمح

 ASSEMBLERدمؼقؿ@DATAؿلغممغم

مسم ـمضمظ

لفم

ممفؿظDSسمفلبمؿدمصمذؾع AXاصماظمامؿؼمدمفلط

لفم

مظ

Cم مظمؼؿمغم

ADS.

لفظ„HELLO!‟مظممرؾسمظدظم

ممغسممؼرمسDXكؿد

عمضم

9ضمر

م

?غم21h.

ؿظ مظمػمؼمظؿظمعغظ

 

TITLE SECOND: DISPLAY STRING.MODEL SMALL.STACK 100H.DATAMSG DB 'HELLO!$'.CODEMAIN PROC

; initialize DSMOV AX,@DATA

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 43/169

 MOV DS,AX;display messageLEA DX,MSG ;

ظدظمسمح

 

MOV AH,09H ;للظمسمز

 

INT 21H

;return to DOSMOV AH,4CHINT 21H ;

ؿظمغمظم

 

MAIN ENDPEND MAIN

ةلاحومانA Case Conversion Program:

مدم  ـ

مػممحمخ مظمكؿل

مل

lower-case letter عغظمؼ

زمدظم ؾميمظمتمCخظام امهؼامCمامحامطاؾم

upper-case

letter  عـEnter A Lower Case Letter: a

In Upper Case It Is: A

دؿممػمظغعمدؿكمؼم

EQUعمطمؼؿ

CR,LF

CR EQU 0DHLF EQU 0AH

مؼؿم ؼمظدمسمظقمظؿظم

MSG1 DB „Enter A Lower Case Letter:$‟ MSG2 DB CR,LF,‟ In Upper Case It Is: „ Char DB ? ,‟$‟ 

ؿم

مؼ مس

char ظدظم مؼ مت

MSG2ممظمذؾعظادظماز مادمعغ

msg2ي مذؾعمسؾؿع

char (Cماؼهما مظخCمتمظميمػ

Upper -caseؿاؼ

ظم ؼمرمظضم

20hخظ

Cعميمظمتم

)

تم ؼمحمظؿقم

CR,LFظدظمؾض

msg2.مجمظدظم ؾAمعم ؼمظلمىؼ

مظدظم

msg2ظدظمؼغمع مؿ م

„$‟ايماسؾرماسؾظممؿادمؿادماغص

char ذظم(عظمAمح

„$‟ؿ

مؼغممج

char ذؾع.)

مظغعم زمظدظم

Aؾؼ

msg1

محظمعميم

?ضمةLEA DX ,msg1

MOV AH ,9INT 21hMOV AH ,1INT 21h

ؾطمحمCميمؼهمؿؼمظم

upper-caseظم مظ

20hيمع(مظ

 ASCIIظم ميمظؾمظممجمظمػ

20hاعم?ؿ مؾظميم Aؾ مح

41h?ؿ مظميمAؾ مع

61h)ؿ

ممفؿظمؼمؿؼ

char 

SUB AL,20h ;ؾطمحمظمظح

 

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 44/169

MOV char ,AL ;ؿم

ممغ

خمة

 

غم ظـمظدظمز معغظمؼمظم

msg2ؿ

مسؾؿعمؾ

char  ادماغطمط.اص

عغظمغمؼ

:

TITLE THIRD: CASE CONVERSION PROGRAM.MODEL SMALL.STACK 100H.DATA

CR EQU 0DHLF EQU 0AHMSG1 DB 'ENTER A LOWER CASE LETTER: $'MSG2 DB CR,LF,'IN UPPER CASE IT IS:'CHAR DB ?,'$'

.CODEMAIN PROC

; initialize DS

MOV AX,@DATAMOV DS,AX;print user promptLEA DX,MSG1MOV AH,09HINT 21H;input character and convert to lower caseMOV AH,01HINT 21HSUB AL,20HMOV CHAR,AL;display on the next lineLEA DX,MSG2MOV AH,09HINT 21H;return to DOSMOV AH,4CHINT 21H

MAIN ENDPEND MAIN

وا:-

1-

م ا

مفؿظمظممخمؼ

A

مققمظؿظم

?

معم

A

طم

IBM PC

...=

 1- two_words2- ?13- tow words4- t=

2-خمؼ

Aمقمظؿظمضمعم

A.اددم

Aمطغمققمطمغمظاضمةامسام

C

س.

  1- 246 2- 246h 3- 1001 4- 1.1015- 2EAH 6- FFEH 7-1011B

3-ظؿظمؿ

معمطمؼ مس

A(مطم

C)

م

A-طمؿع

word

 Aؿ مضم

52.

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 45/169

عؿمط-م

word

word1ؿ مضم مج م.

عؿمح-جم

Byte

Bضم ؿ 52.

م

-حمؿع

Byte

Cؿ مضم مج م

.

ػم

-طمؿع

word

word2ؿ مضم

65536.

عصمطم-م

 Array1ؿ مضمصم

ة م-م

Bellلؼ7.

ة مدظم-حم

msgلؼ

„This Is A Message $‟

4-حمعم

?ؿ مطظممغمظؿظمغؾظم

0000h

  A DB 7B DW 1ABCHC DB „HELLO‟ 

A-ؿظمحمسمسA A,B,C.

-حمسمؼؾظمؼؿم

0002h.

مؿؼمظؾؼمسمح-جا

0004h.

-ظمحمسم

„O‟طم

„HELLO‟.

5-احماخمAمققاماظؿظمؾظمغطمCم

B1,B2اصحمؿاعماسماؾس

Byte

w1,w2طمؿعمؾس

words.

1-MOV Ds,Ax 2-MOV Ds,1000h3- MOV CS,ES 4-MOV w1,DS5-XCHG w1,w2 6-SUB 5,B17-ADD B1,B2 8-ADD AL,2569-MOV w1,B1

6-دؿكمع

MOV, ADD , SUB ,INC , DEC , NEGضم م ؿ

مظؿظمؾظمظ

فؿظم مؾسمC:

 1- A=B - A2- A= -(A+1)3- C= A + B

4- B= 3* B + 75- A= B - A- 1

7-ؾسمؿط(عطمعغ مظ)  مؿظ:

1-ضلظمغممذظممظؿظم

ممؿسؾرمةمحم ?.

2-ؾطمحم?ضUpper case letter اذظممالظما مظاؿظم

ممؿسؾرمة

ظمممحمم

Lower case letter .

:ملؾؽتا ة

8-  مؼمعغ مؿط

:

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 46/169

رؾسمظع1-ممم

„?‟.

10ؼم ?مضمسؼمسمAضمعمظ2-م

م

3-ؼمظغعملممظؼمرؾسمظؿفممظلمظؿظ

.

مظؿم عـ

? 35The sum of 3 and 5 is 8 

9-حمةةم ؿطم مؼمعغ مؿط.احماطمؿسؾرمة ظـميم? معغظمؼ

عمدم

.ؿظم عـ

  Enter Three Letters: ABC AB

C

10-اسمدلظمظمميمح

? مؼمعغ مؿط

( A-F)ضاظماسؾ معاغظماؼ

ظؿظملظممظمظممز

.ؿظم عـ

  Enter A Hexadecimal Digit: CIn Decimal It Is: 12

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 47/169

لصػل

ابلم

م

م

مظضم م

مظحمؼهمؼرمسمظمؿؼمظممسمظمػمديممػ AمحA

مسم

.

م

8086مسمخ

 @ م م م

مظحم ـمؿؼ

9ةمغخل م

م

ؾظFlags

ؾظمػمضملحمؿك

مظممؿؼ

.

م لمظؾامCظامغاسمػاFlag Register ؼؿمؼمظؾممعلفمؼلمعلفمظؾم

ا م مظؿقمظؿمAم م. Status FlagsميظControl Flagsمظؿقم

م

Aزم

Cعممطمؼؿم

Aم م م

مظحم مظيم

م م معغظم م

ظؿظم?ىممدمطمظم مصمؼرمسمظممل مفؿظ.

ابلم

حمظ معمػمطمؿك

م ؾظمسمفل

مػمؿغ

ممظيم م ـمؿؼم0

غ246711م

مقؿظم م م8910كؿدم مغ

م مؾ

م

(اطماعماركؿظمع

Aشميمحم جم

Aلفمم

معم

ؾظمضعمصعمظمعمظ

ظؿظم ميظمدؿممى)?مسمحم

م

Cf  

Pf  

Af  

Zf  

Sf  

Tf  

If  

Df  

Of  

ابلموؽذ

ةلااStatus Flags

مسام امعام اـصمع

Aخم

 @ م م م

مظحمز م

ؾظمػم

SUB Ax,Bxا ماص

كؿC.مطغمظؿفم ل1ظمؼؿةم ؾمضؿم لم

م ؾظمؼمظؿظمى

م

م

م

م

م

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 48/169

ةلااStatus Flags

ملد

Nameان

CF 

م

Carry Flag 

0PF 

ؿظمغخمParity Flag 2

AF 

لس

مم Auxiliary Carry Flag 4

ZF 

ظمZero Flag 6

SF 

ذمSign Flag 7

OF 

ظمOverflow Flag 11

ؽتلا

Control Flags

TF 

مخمؿظمTrap Flag 8

IF 

م Interrupt Flag 9

DF و

Direction Flag 10

م

ؿCarry Flag (CF)

مسمظم

ؾظمػمؿ

„1‟(صمؿؼ

ؾظ

)ظممغ

مظ

Aمجممعم

C

كؿاMost Significant Bit (MSB)طم

مظمىمحممظمؿؼ.اظماخ

مل مؾظمضم.

.ظمدؿقثمسمصم RotateظShiftؼؿةمظؾمAؼممحظمسمحم

اطتلParity Flag (PF)

مسمظم

ؾظمػمؿ„1‟افؿظماعمميمطم

CLow Byteاسماؿ

غمظمهؿمسمظضم

معمجمس

„1‟.اظماغ

ماسماطم

Cؼلمام

ص„1‟هؿمسمظضم

.خامسامػامظ

 @ مطغمغؿفم

Cم ـصضFFFEhايماص

غامظامهؿامساFEH(11101111)مؿمسمظم

مسمصمظؿظ

ػ„1‟ظضم

7غخ

(صمس

)ل م

ؾظمضمصمػمس„0‟(PF = 0)

ساؿAuxiliary Carry Flag (AF)

غامظ ا„1‟ؿمػمظؾمسمظم

ماظ CمAماعماماػمطمC bit-3ؿاؼ

ممحظمظم

ؾظمػمكؿد

Binary Coded Decimal (BCD).

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 49/169

ػصلZero Flag (ZF)

Cمطغمظؿفم لم„1‟ (ZF=1)ؿمػمظؾمسمظم

اذSign Flag (SF)

م

ؾظمػمؿظمس

„1‟اطماظممغ

مغطم

CMSBال

„1‟اح

ؾظدمفؿظمAمػمؼ(م.AمASF = 1غطمCMSB =1SF= 0غطمCMSB= 0)

اضػلOverflow Flag (OF)

CSignedمحثمصممحظمضمم„1‟ (OF=1)ؿمػمظؾمسمظم

 NumbersمسمؿقدمغصمC.ػمعمؾؿ

م ?جممؿظ م

مػمضد

ظ

.

اضػل

Overflow

مظمدؿمصمؼم

ملحمظممديممضمؼمغع

Cطمغمصم

مؼ(ظضم ـممضمطAم عـحمغخمOne Byteضظمػ255)اظمس

مسمحل ممظ مسمػمظمصممظمؼلم ؿكؼمظؿفامم

Cغم

C

حفضاػميظمؼمضم

.

اضػلؾسةؾم

جؾمصم

مضمسمثقؿظمسمظمؿ

Cضم م

)Unsigned Numbers

.Signed Numbersسممضم ذماؿحما

Aامىامػظام عـمسم

Cسم

فؿظ:

مم

1-صمجؼم

2-صمذ مص

3-صمذ

Cصم م

4-ذCم مذ مص

Aذمظم ذمصم

Cمظم م ـطفل

AXضاظماسمؿFFFFhفال

م

A

BXضظمسمؿ1عمؿ مضADD AX, BXظؿظمقظمسمفؿظمؿد:  1111 1111 1111 1111

+ 0000 0000 0000 0001= 1 0000 0000 0000 0000

ظؿحمحAمؼظمؼمظؿظ

1-مػمغلصم

Cضظمػمققظمفؿظمصمذ

Cضم م

Aغم

Aمسم

65536ضظم

A

ظلدمسم

10000h

فل

ممؼمممفؿظمػمظ

(اماضمط

Aطمعم

A

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 50/169

لاف0000hاؼمظاض1حمدؿمصمظاض65535)ؼم

مAXاصمظاؿظ

.لفمػمغؿفمخرؽظؿفمظمتم

2-مضاظمصمذ مض

Aغم

Aمصلغمػمضمسم

Cعم

AFFFFhضظاػ

 – 1اماس

ظضم

1ضظمػمفؿظمصمظ

C0ؼمتمظمفؿظمصمػمس

(ضاظ

0)ققا

ذ مصمثممػمس.

م

ذ مظمخ @ م عـفال

معمطم AمصمذCم مظمAXBXاظماسماؼؿ

7FFFhعم متADD AX,BXظؿظمقظمسمفؿظم

:

  0111 1111 1111 1111+ 0111 1111 1111 1111

1111 1111 1111 1110 = FFFEh 

م

غمحظم7FFFhمػميظمظؿلمظضم

م Aمحمحمل مػمذCم مAمذ مض

سمظمصمغؿفمحمى32767(7FFFh)ػمظض0(MSB = 0)مظمطم لم

م محمميظؿمػمظضم

65534ذ مضمظحممؼمممفؿظمػ

ل مAمحظلظمضظمػمذ مضمظحممفؿظمػم(-2)

ذ

Cمصم ذممؼجمصم م ـ

مػممؼصمظمس

م

كوؼعا تحلػضا؟

م صم مظم

مؼOF=1ثاحمCماما ماصماذ مصمثحمC

صذCم مCF=1

م

?اجمامػغطمظمغظمغ

Aمعم

A ؾمزمظغعمظؿطمعمحثم

ؾد

.ققمشمفؿظم مصمصمثحمؾظمػمػومتمC.

ذمصمصمؼام

Cم م

Aم مضم ذم

ؼمم

مصمػمساؾظم

اؾظماص

ذCم مAمذ مظمعمAمثح.اغAماسماضماعماعؿغمعغظممطمص

ممصم

ؾ مؿغمغصمذ

CمظCFم

مػفؿغOF.

عمعؿغمطم

Cعم

A

.ػمظمؼOFضم ذمصم مظم

ؼوكاضػلحوت اع

لؾؿظمظمىمعAمػمضدمصمثحمظCم معمعم طـ

م

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 51/169

اذ اضػلUnsigned overflow

غاممظامطام

ماعمام اػماطمCمذCم مصمثمىمظحم

MSBفؿظم

Aلاؿحمؼمػم

مفل

ممؼمؿؼم

Aطمعم

A(افؿظم

A

طمضممؼمػمظضم

Aطمعم

AFFFFh مؿل

مؼم

Aمحظم

16

Aخغمةم

FFh مؿل

مؼم

Aمحظم

8ةمغخ

.)

مطامحامؼامػاممحظمظمثمظممحظمدؿمظكغممظم

ضمعمظم

Aظؿفم

(ظدمض

.)

اذإ اضػلSigned Overflow

م مذمثمظممحظمAم مCذمحامىامؿام ضAممظحم

ضظمذ

Cسم

.  مظمصمؿمذ مضمرمظحممغ

Aسمىطمنم

ظضم ذمحمحمAم

  A –  ( - B ) = A + B , -A –  ( +B ) = -A -B 

ؿضمطممحظمسمىم

مذمسمفؿظمذ CمؿخمCمذ مظمث

مظام

Aعممحظممضم ذ مؿؿمصمحثمظمعلؿقمحام

AA+-

(B)سمؾسمػA-BضمAمحABاػما مظمصم ـمعAممضA

م ـمممضمؼ

A.

Aمصمسمظمظضم ذا مؿاؿمظام ام ـ

ص

.

مظمط م

مص مؼم

مصمعس

Cمطمم

Cطمظممغ

MSBؿمطمظممغ

معم(ماظCماماجؼماغAمػمؼ

ظمظمؼجممعم

Cممؼجمم

Aؼجممعم

.)اصمؿاؼماظيماػم

مح(مظم عـمغA.)

ؾساؾؿعلثؤ كابل

:

دؾمظؿمظؿفم

م ؾظمصمؿؼمعAمAمؿ م

مؼمعس.ماعAماػمعس

سعمصمسا.ةممطمظؾمCم ةمم مصمCمضم مطمظؾمم ةم

عمظؿم

AJUMP INSTRUCTIONSمظغعم دؿكم

اؾظماضماسماسماؿ

كؿمطمدمصم م

.

ممحظم ام امعامظامغضاػم عامعامم

ؾظمة مدم

?ىمػم

:ظمظل م

م

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 52/169

م

مثأتابل

MOV / XCHGؾظمعم

Aم ؿةم

ADD / SUBؾظمطمةؿ

INC / DEC(CF)ؿةمطمظؾمسم مم

 NEGعC00F=1مCمطغمظؿفم ل(CF=1ؿةمظؾم

مطم C

عWORDA80hمحظ800Hػمظضم

مظحمByte)

مدم عـمطمم عـم م مدمظمؿ مؾظمة مؿظاؿماع

عم

operandsؿك

م ؾظمضمض ملح0f,sf,zf,pf,cf (ام مػفؿد

لسم

AFظمعمضممظيممغ

BCDص

.)

ام1:

لفADD AX,BXغمعم

مؿمحAXضظمسFFFFhفل

BXس

FFFFhظضم

:

FFFFh+FFFFh

1FFFEhلف1111 1111 1111 1110 (0FFFEh)ؼؿمؼمظضم

مAXاقظماسم

اؾظم مػمس

ظؿظ:

اذSF:لؼ1سمظممغ

مضمMSBل1.

اطتلةناخPF:لؼ0اسمؼظم7اغخ(اساص)اسماؿه1اظم

.مظؿفLOW BYTEغم

ػصل

ZF:لؼ

0مل ممفؿظم

.

ؿ

CF:لؼ

1طمظممغ

ممم

ػمMSBسم

.ىم

اضػلOF:CمغمػمفؿظمذCممملؼمتمظمضم

م

مظ

CغMSBم

معممسمؿمMSB.)

ام2:

80hسمظض80hBLسمظضALحمؿADD AL,BLغمعم

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 53/169

:

80h+80h

100h

لفم

مؿ

ALضظمس

00h

اذSF:SF=0غ

مMSBسمؿه0

اطتلةناخPF:PF=1سمؼظمغ0ضظمسمؿهمغخ1جمسمظمؿؼ

ػصلZF:ZF=1ل مفؿظم0

ؿCF:CF=1مػمCطمظممغ

MSB

اضػلOF:OF=1مضمؾجعمفؿظم مؾظدمس(غ

مظ Cم

MSBعمملؼم

.)ام3:

لفSUB AX,BXغمعم

مطم CAXضظمسمؿ8000hفل

BXضظمسمؿ0001h

:

 8000h

-0001h7FFFh = 0111 1111 1111 1111 

اذ

SF:SF=0غخم

MSB=0(مغخمخ

 @ MSB)

اطتلةناخPF:PF=1 مفؿظمعمظمغ

م8غخ(جمس)"1"

ػصلZF:ZF=0ل مفؿظم0

ؿCF:CF=0عمطAمسمعمذCم ممسم مضمغ

ػلاضOF:OF=1ظدمضمعمجعمضمغمغصمذ مضمظحم.ػ

ؾظدمضممسم عـ

.اؾجعمقؾ

Aمظؿفم

(افؿظماذ

C

خ

)

ام4:

FFhؿمسمظضALحINC ALغمعم

:

FFh

1h+100h

ؼؿمؼمظضم

100hلف

م

AL.

Aم مػمظمنم

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 54/169

اذSF:SF=0MSB=0

اطتلةناخPF:PF=1جظ8سمؿهمغخ“1”فؿظمعمغمؼؾظم

ػصلZF:ZF=1مل مفؿظم

ؿCF:ع مةؿؼمINCصمثحمعمشظ.

اضػلOF:OF=0جعمضمظ

Cظمغمنمضمدظم

غم

MSBعمملؼ.)

م

ام5:

غمعم

MOV AX,-5

 – 5(FFFBh)ؼؿممظضمفل

مAXع م

ؾظمعم

A.MOVم ؿةم

ام

6:

8000hسمظضAXلفحمؿم NEG AXغمعم

8000h = 1000 0000 0000 0000COMPLEMENT = 1000 0000 0000 0000

0000000000001000

اذ

SF:SF=1

اطتلةناخPF:PF=1

ػصلZF:ZF=0

ؿCF:CF=1صمذم مظحممغCF<1CمCمضظمط

.ؼلمم

اضػلOF:OF=1عم مسمغ NEGمظيمػمم ذCم مضؿغ

ؿمذم

.

مانDEBUG:

عؿ م مظغعمخDEBUGم دؿكم غعم

 _ ا مفال

مة مفؿظمز

Cمخ

م غعم مظؿفمحمؼام ؿقؼامCظامظامظامعؾذامؼامطمخمطممطؿ

طظ

امظ اDEBUGدؿم غعمظام

ماسممؿحمومفؿظم معغ م ؿ مغ

ظؿم

EXCUTABLE FILEC:\DOS\DEBUG TEST.EXEمظممهمظغعم دمع

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 55/169

 

ظمسمAغممحظمغؿمحمعمػم مظؾمعمع"-"ؼمظغعم ظم ذم

:-

1.م

R فل

مؼؿمؼمػ

.اعما ؿطمؿاؼمفال

مح

Aظمضممم

لفم

مد مسؾؿع( عـR IP.)

2.م

مT(TRACE)عغظمعمصمظيم

م مظ

Cمؼم

.

3.م

مG(GO)عغظم مظ

Cؼم

.

4.مم

Q(QUIT)عغظمعم

مظ

Cؼم

.

Aمم.5 ASSEMBLEعغ م ؿطمصمؿؼ.

6.م

م

Uطظمعم

?جمؼ

 Bظ

.Dمم.7 DUMBطظمعم?جمزCمظCمؼ.

سمغؿ م مظغعمظؿظDebugظؿف م غعم

:

م

  MODEL SMALL.STACK 100H.CODE

MAIN PROCMOV AX , 4000H ;ax = 4000hADD AX , AX ;ax = 8000hSUB AX , 0FFFFH ;ax = 8001hNEG AX ;ax = 7fffhINC AX ;ax = 8000hMOV AH , 4CHINT 21H ;DOS exit

MAIN ENDPEND MAIN

م

مطؿ مظغعمظل مظمم

test.asmؿظم ظم

مظ

Executable fileقدمظ

:DOSهمظغعمظم ؿمعمظؿاظمعامامظااDebugؼؿمغ?م غعTest.exeدمc:\asm> DEBUG TEST.EXEمم

ذم

مز Cمقؿظ معغظمؼ"-"عمؿظمؿدظم مظ.

كجمسمظمظؿظR غؾAم ؿف معم

م مؿك

مفلمؼؿمزمظ:

م

م

م

- R

AX=0000 BX=0000 CX=001F DX=0000 SP=000A BP=0000 SI=0000 DI=0000

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 56/169

م

كؿاممظلامظم

مفل

مؼؿمز معغظمؼظاؿظماعماسماؼماظ

( م

-فال

ماؼؿماظماضمحCS:IP)اعظماظما ماسؾؿع

Machine Codeضظمػ

B80040فؿظم م ؿعمعمنمظم

.

ام ـ

ماػممقا

ماضماسمؿمض Aمفؿدمعغظم مساؼؿماظ

ؿك

مفل

.

غمؼجمسم ظـملظمؼغم8اظماسمحمA NV UP DI PL NZ NA PO NC

ظؿظمىملحمظمؿك

م

ؾظمؼؿم

:

م

بلبلفةلاح

Setبلفسةلاح

Clear

CF (CarryFlag) CY (CarrY)  NC (No Carry) 

PF (Parity Flag) PE (Parity Even) PO (Parity Odd) 

AF (Auxiliary Flag) AC (Auxiliary Carry)  NA (No Auxiliary carry) 

ZF (Zero Flag) ZR (ZeRo)  NZ (NonZero) 

SF (Sign Flag)  NG (NeGative) PL (Plus) 

OF (Overflow Flag) OV (OVerflow)  NV (No oVerflow) 

ؽتلاControl Flags

DF (Direction Flag) DN (DowN) UP (UP) 

IF ( Interrupt Flag ) EI (Enable Interrupt) DI (Disable Interrupt) 

م

Tظؾؼم مظغعمغمعم

ATraceعظمظؿظمللؿظمصمخمخمؿظ

:

سمفل

مغطمؼؾظمظؿظمقظم(ؿظ مؿظم ؿغمؿحم لظمذظمد

م

م

م

م

م

ؿظمAؾغمة:مع

MOV AX , 4000h

م

ظؿمؼم

4000hفل

م

AX

- R

AX=0000 BX=0000 CX=001F DX=0000 SP=000A BP=0000 SI=0000 DI=0000

- T 

AX=4000 BX=0000 CX=001F DX=0000 SP=000A BP=0000 SI=0000 DI=0000

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 57/169

لفم

م Aمح

AXضظم مؾA4000H

ؾاAمظؿظمعمAمؾظمؼؿم مؿؼم

عم

ADD AX,AX

م

م

م

لفم

م

Aؾم مظضAXحم

A8000Hا ماصمتماحم

اؾظمماة

Aمظؿفامظلا م

A

مظؿفمدظؾمطظم مظؿ مم AمظCمظمذم مذ مصمثحمظCمظمظ

لفم

معممغ

AX(

AAL)غ

معمجمسمسمؿهضاظما ماظم

1.

SUB AX,FFFFhغؿ م مظغعمحمعمظؿظمػمعم

م

م

م

م

م

م

 م

م

م

م

م

م

- T

AX=8000 BX=0000 CX=001F DX=0000 SP=000A BP=0000 SI=0000 DI=0000

- T

AX=8001 BX=0000 CX=001F DX=0000 SP=000A BP=0000 SI=0000 DI=0000

- T

AX=7FFF BX=0000 CX=001F DX=0000 SP=000A BP=0000 SI=0000 DI=0000

-T

AX=8000 BX=0000 CX=001F DX=0000 SP=000A BP=0000 SI=0000 DI=0000

- G 

PROGRAM TERMINATED NORMALLY

-Q  

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 58/169

وا:

لؿم

مفل

مؼؿمDESTINATION REGاعماعماطما ما ماؾظمضمظط

ظؿظم

.

1.ADD AX,BXفل

مؿمح

AXضظمس

7FFFhلف

BXس

0001h.

2.SUB AL,BحAL=01hBL=FFh

3.DEC ALحAL=00h

4. NEG ALحAL=7F

5.XCHG AX,BXحAX=1ABChBX=712h.

6.ADD AL,BLحAL=80hBL=FFh.

7.SUB AX,BXح

AX=0000h

BX=8000h.8. NEG AXحAX=0001h.

م

2-فل

ممص ABX AXسمؼؿؾجعمضA.عم متADD AX,BXجؼمغAم

غم

مظ CمMSBذ مصمثحمظحممصمظمعممجؼم.

لفم

ممص

ABX AXؾظدمض

Aؿؼمسم

.عم متADD AX,BXجؼمغ

غم

معمMSBCممجؼمذ مصمثحمظحممصمظمظ.

م

3-اعم

Aصم

AADD AX,BXفال

ماؼؿماغطم

Cػامظاضمم اAXتم ام

لفم

BXظؿظمضظم

.فل

مؼؿمAXصمثحم

قعم ميمعمطم

.ذمAم مCذم

A.512Ch.FE12h.E1E4h.7132hاػ.6389h

 +4185h+1ACBh+DAB3h+7000h+ 1176hم

4-عم

Aصم

ASUB AX,BXفل

مؼؿمغطم

Cتم م

AXفل

م ممضظمػ

BXظؿظمضظم.فل

مؼؿمAX مصمثحم

قعم ميمعمطماذ

.Aم مCذم

A.م2143h.81Feh.19BCh.0002hماػ88CDh

-1986h -1986h-81FehFE0Fh71ABh 

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 59/169

ماصػل

انباؿؾع ػتل

Flow Control Instructions

م

عمضمسممضمم ظمغؿم غعمؼم ممشظؾمعمؼؿمدؿكمAعمظؿمظمو

م

AعمظؿمظؿمCظم م عمصسمؼؿمػمظؿمAمظؿمسمسمضممظلفمظمسمرؼم ام

.ظم ؿةمم خمسمتم ػStatus Flagsيظم

Aمؿ مظمػممدظمظممؿظمؿظمؾسم ـممعكؿلدمؿك

مؿظمعHIGH LEVEL

LANGUAGE

ظم سمطؿ ؿم مظؿفم

.

ػتؾلام:

لؿكعمطمظمسامرؼامرؾسامجاميام

ميمسؾ م ؼم بـم

Aؾدمؿظمع

Aظؿمسم

ASCII Tableعط

.

  .Model Small

.Stack 100h

.Code

MAIN PROC

MOV AH , 2

MOV CX , 256

MOV DL , 0

Print_Loop:

INT 21h ;DL لفم

ممج

ميمؾر  

INC DL ; ظؿظميمو 

DEC CX ;ظمغ

 

JNZ PRINT_LOOP ;

مم

C

مظم

C

غؿم م

 

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 60/169

  ; DOS_EXIT

MOV AH , 4Ch

INT 21h

MAIN ENDP

END MAIN

حم256ؼجمظؼمسم

IBM Character Setا

مايماضميمع.مايماز

عمضم

مكؿدمؿؼمذظ2(صمحمحمزC)م مظض2فل

م

AH.فل

مكؿدمت

DLضظممتمظظمؿسؾرم

ميمقظ

0كؿادمتماطماعماطمما ؼماؿ ماطماص

لفم

CXؿ م مط256ظمظCمؿضم مؿحمعمطممغC.

دؿكمعم

(Jump if Not Zero) JNZيمؾؼمظمعمػمظمCمؿظمظ

(Print-Loop)

لفم

مغ

Cمتم

CCXظم

مؿدمؼرمسمظمؿؼمظم

Cحمم مظؿفم

ZF.غطمص

ظؿفمم لممم

(ZF= 0)

مطغم

Cعم

Aمظمم

Cظؿفم لمظؼؿمظم

(ZF= 1)

Cؼؿمدؿممظغعممظم

عمضم

مكؿد مؿظمغ

4CH.

تػرشروطمممممم ل CONDITIONAL JUMP

عم

JNZ

مؿظمعم عـمػم لظم.ظمسم

مؿظمع Aمؼ

Jxxx destination-Label 

جامم

ماعماػمظاؿظمعمؼم

عظمعطم

مظم

Cصمهمظممؼؿم مظغعم

ؿAعمCممؼؿقمظمؼؿمدؿ.ظمم

طذؾعمظؿظمعمC.

ظمظمؼمAممؿظمظحم مسمسمؿظمؿد126Aمظايمظمؾض127اظما

م

مػمعم AمطعAمCمؿظمطم مصمدمظي.

ػسؿؾةلتػشم تـ اعؼوك

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 61/169

م دؿكمظؾمظؿقؼمسمظؿم

مؼ.م مؾظمAمحصمظؿظ مسمخ @ م م مظ

.AعمظؿممAم ؿمسم ممAم ممحمؼؿمظؿمCمتمصمػمظؾم

م ؿقمعذمظؿم

مؼمؿظمهم

CIPؿظمع

Aجمم

مظ ممظ

.ؿاؼمم

Cعم

A.ظمصمعذمظؿمؼمCمظمظؿظمعؾذهم

مظل منمعم ـ

مص

JNZ PRINT-LOOP

ػمؼمAغمCمطم مظممؼلمحم

ZF= 0اظمCمؿظمؿؼمغصPRINT-LOOP

ظام ؿقام

عذمظؿم ظم

.

مطغمظ

C

عم

A

ظمل مفؿ

(ZF= 1 )

ظؿظم

م

C

صمظغعمؼم

.

مةةمسم

مؿظمع

Aلم

:

ذ مؿظممس

Signed Jumpsذ مضمكؿدمظحممكؿل

Singed Numbersمم

ذCم مؿظمغ ظـمس

Unsigned JumpsاذCما مضمكؿدمظحممكؿل

Unsigned Numbers.م

حمؾ مؿظ

Single Flag Jumpsم مسمؿ مظ.

كؿم

مؿظمع

Aىمظؿظم م

. عـمدمعم طـ

Aمعمضمؼخم

Aحم

JGJNLEا ما مح

CطAمفؿظمغطJGال مAماعمAملظمفؿظمغطمCم مA.ؼاعماعمAمكؿادما

مغمظؿفم

Cغمؼؼم

.

تػر اذاة -1  ل

Signed Jumps

ملػتلذ

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 62/169

JG / JNLEAطمعممحظم

(لؼم

Aمعم

Aظم

)ZF=0 & SF=OF

JGE / JNLلؼمAمعمطAمظحمم(عمAمظ)SF=OF

مم

JL / JNGEعمضAمظحمم(لؼمAمعمطAمظ)SF<>OF

JLE / JNGلؼمAمعمضAمظحمم(ظعمطA)ZF=1 OR SF<>OF

تػر دونذاة - 2 ل

Unsigned Jumps

ملػتلذ

JA / JNBEعمطAمظحمم(لؼمAمعمAمظ)CF=0 & ZF=0

JAE / JNBلؼم

Aطمعم

Aممحظم

Aظم

)CF=0

JB / JNAEعمض

Aممحظم

(لؼم

Aطمعم

Aظم

)CF=1

JBE / JNAلؼمAمعمضAمظحمم(عمطAمظ)CF=1 OR ZF=1

تػر بيقو د -3 ل

Single Flag Jumps

ملػتلذ

JE / JZظم

Aممحظمظؿلم

ZF=1

JNE / JNZلؿظمسمظحمم(ظملؼم)ZF=0

JCمظحمم

CarryCF=1

JNCمجمسمظحمم

CarryCF=0

JOظمظحمم

OF=1

JNOحمسمظحممظ

OF=0

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 63/169

JSممحظمظؿفمدظؾ

SF=1

JNSممحظمظؿفمعجؾ

SF=0

JP / JPEممحظمظؿ مظج

PF=1

JNP / JPOظم ؿظمظحمم

PF=0

رمCMP 

عمممممممم

Compare(CMP)ظمخؼمضمغ

مكؿلؼ

:

CMPم

  Destination , Source 

امم

مارماؼرماسمغم معغظمؼ

sourceلاؿم

ماع

destinationؼامؿاؼم

لاؿمCMPمؼمعظؿفمظمظؾم ؿةم

م Aمطمطظممعمغبdestinationم

.مممAمؼمضمة م

معح

CMPعمعمة

SUBؼمؿؼممفؿظم

Aصمسم

.

ظؿظمسمؿمعغظمAمص:

CMP Ax , Bx 

JG Below  م

حم

AX=777FhBX=0001h عمفؿغمص

Ax,BxCMPػ

:

7FFFh - 0001h = 7FFEh 

م م

ؾظم

Aظؿمػمؼؿمحم

zf = sf = of =0عم

JG م

Aؼؿم

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 64/169

م

Zf = 0ظطم

Sf = Of مظمCمؿظمؿؼمػمس

Below.

ؿك

م ؾظمظحملحمؿ مؿظمسمAمشم

مؿظمظحم معمCمؼمع

مص

م ـصم

ؾظم

:

 CMP AX,BX

JG Below

لفم

ممج

مضظمطم CAXفال

ممج

مضظمعمط ABXاظمCماؿؼمعاغظماص

Belowمم.

معم

Aظشمعم

CMP

مؿظمعمعؿظمخم م

مؿظمؾظممظ

م عـمخ @ معAمAم:

DEC CX

JNZ loop

loopؼؿمػمظؿمCمظمفل

مضم مم CCXمل.

تػر دونذاة ل وةاذإ رػت ل :

ذم

Cعم م م

Aعم م ذمؼزم

Aمطم عـع

JGعمزؼ

JAاؿؼمعم

Aدؿكم

عغظمخمضمعمعؿظمؼرمس.اػماعمسمطمAمؿ مضم لظمىمAمح

مظؿام اzf , sf , ofظم ؿمسم ممحمAمظؿم ذمؼؿعمعمظؾم

ذمؼؿمس

ؾظم

zf , cf ققمشمؿغم

Cدمضمؼم

مشمعمكؿد

.

م

م

لفم

مطمذ مضمعكؿدم Cم عـAxضظمسمؿ7fffhفل

Bxضاظمسمؿ

8000hظؿظمعم مت:

CMP AX,BX

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 65/169

JA Below م

م

Aصؾظشمعم

7EFF > 8000hظم

Cمحظمضم ذمصمظغعمظمؼم ظؿم

Belowظ

مم

7FFFh < 8000hعمؿلغممذ مضمظحم

JAذCم مضمعمعؿؼمظ.

روف مما ع ت ل :

م

Aذامظامميامهؿاسمظؿعمعميممدؿكمضم ذم

C

سمظضم

0طمظممغ

م

MSBعؿظمظحممذ

Cسعمغلؿكمضم م

ؿم

مل

ميمع

Extended ASCII Code

ممضظ

80h - FFh.

ام

:

لفم

م

Aصم

AX

BXذ مض

Aمعام غاعمؼامظاؿؼمسم

?اجماؿط

لفم

ممط

CX.

MOV CX , AXCMP BX , CX

JLE NEXT

NEXT: MOV CX,BX

شمغلػتلUnconditional Jump

:ظؿمCظمسممظم مAمذمحمظمظعمظعمػJMPؼلؿكمعم

  Jmp Destination 

ا

 إون

 اع

 

 اي

 اى

 ن

 ذك

 و

 ا

 ا

 

 اد

 إ

 اع

 

 اي

 ان

اع اوط    .عا    ا وذك  دا ا   ا ه لغا و

.اوط

  TOP:

; Loop Bodyيمؾس

 

Dec CX ; معمظغمح  

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 66/169

  JNZ TOP ; ملؼممظمطمCمؿظممؿد 

ممؼمظم طـمؾسمسميمؿحمCTOPجم(عم A126غخ)عمص

JNZمكؿادمظؿظمقظمسمعغظم ؿطممس م

مػمسممظمؼمظاع

JMP

طAمعمعمعؿظمظمؿؼمظ

 

TOP:

; Loop Body يمؾس 

DEC CX

JNZ BOTTOM

JMP EXIT

BOTTOM:

JMP TOP

EXIT:

مانلةؾؽه

طغمAمسمظؿممدؿكعممظؿمظؿممAعمظؿم لمدؿممػامىا?م

ظاضظماظماظممعكؿال

ماؿظماؿظماع Aما ؿطماHigh Level Programming

Languages.

م

ػتلم

م

IF……..Then…….

ػ…If..Thenظمظمظؾم

  IF condition is True then

Execute True branch statements

End_IF 

ظمهمCمA?ذم مؿؼممقؿؼممCمعم مؿؼم

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 67/169

ام

فل

مؼؿمؾؿد

AXم

مظ

.

لفمدظؾم

مؼؿمغطم

A(معمض

)جؾ

مظ مؾؿد

.

  IF AX < 0 then

Replace AX with –AX

End_IF 

ؾ مفؿظم

CMP AX , 0JNL END_IF

; Then

NEG AX

END_IF: 

2 – ابسIF…THEN…..ELSE…..ENDIF

ظمسم مػ

  IF Condition is True then

Execute True_Branch statements

ELSE

Execute False_Branch statements

End_IF 

م

م

معمسم مؿؼمظمهمCخAمسم مؿؼمقؿؼممCمععمع

عـ:-

م

Aصم

BL,ALحمؼؿ

(ASCII CODE) ظ مميم مضم

(مظم

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 68/169

IF AL < = BL THENDISPLAY AL

ELSE

DISPLAY BL

END_IF

( مؾفؿظم

) ط

:-

MOVAH,2CMP AL,BL

JNBE ELSE_

MOV DL,AL

JMP DISPLAY

ELSE_:

MOV DL,BL

DISPLAY:

INT 21H 

3-ابسCASE

:ؼؿؾمظغعمظمظمظعمػAعمعلمAطـؼجCASEمحظمسؾم

CASE EXPRESSION

VALUE_1 : STATEMENT_1

VALUE_2 : STATEMENT_2

:مممممممممممممممممممممممممممممممم  

VALUE_N : STATEMENT_N

END_CASE

ام:

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 69/169

لفم

مطم CAXضظممظدمضمسمؿ

 – 1فل

م

BXطمص

AXضظممم0

لفم

م

BXفل

مطم CمعAAXضظممجعمضم1فل

م

BX.

:

CASE AX

< 0 : PUT  –1 IN BX

= 0 : PUT 0 IN BX

> 0 : PUT 1 IN BX

END_CASE

م

م

م

:مظمظؿفم

CMP AX, 0 ; AX صقم  

JL NEGATIVE ; AX < 0

JE ZERO ; AX = 0

JG POSITIVE ; AX > 0

; Otherwise (Else) part will be here

NEGATIVE :

MOV BX,-1

JMP END_CASE

ZERO :

MOV BX,0

JMP END_CASE

POSITIVE :

MOV BX,1

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 70/169

END_CASE:

غمؿمصمظام

Aحم

CMPؾظمسمة مؿظمع

Aحمم

.

ام

Cفل

مؼؿمغ

ALضظمػ

1ضظم

A3ؾر

A"0"ؼؿمغطم

C

لفم

ALضظمػ2ضظمA4ؾرA‘E’.

:

CASE AL of

1,3:DISPLAY “0” 

2,4:DISPLAY “E” 

END_CASE

فؿظم

CMP AL , 1JE ODD

CMP AL , 3

JE ODD

CMP AL , 2

JE EVEN

CMP AL , 4

JE EVEN

JMP END_CASE

ODD: MOV DL , ‘O’ 

JMP DISPLAY

EVEN: MOV DL , ‘E’ 

DISPLAY: MOV AH ,2

INT 21H

END_CASE: 

ةبكمش ػتل

Compound Conditions

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 71/169

عـمؿظمظمطعمذمؿدمؿؼمحم م

  IF condition1 AND condition2 

IF condition1 OR condition2Aمممممممممممممممممممممم  

غمتمدؿكمظ""ANDحمميظمظمتمدؿكمظم ظـمظيم"A"OR

شل""AND Condition

ققمCمهمطمعمظرمم @ مح""مغؿفمظم

ام:مطمحصمطؾض

محظمعمحم

ACapital Letterؾر

ةمخ:

  Read a Character into AL

If ( ‘A’ <= character AND character <= ‘Z’) then 

Display character

End_IF 

فؿظم

MOV AH , 1 ; يم?ض 

INT 21h

CMP AL , ‘A’ 

JNGE End_IF

CMP AL , ‘Z’ 

JNLE End_IF

MOV DL , AL

MOV AH , 2

INT 21h

End_IF: 

شل

"

"OR Condition

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 72/169

CمهمAمعمظرمAمطػ"A"ؼؿقمظم

ام:يمطمCمحمAض‘y’A‘Y’لؼممCمؾر‘y’A‘Y’عغظم?غ مض

خةم

  Read character from keyboard into AL

IF ( character = ‘y’  OR character = ‘Y’ ) then 

Display character

Else

Terminate the program

End_IF 

فؿظم

MOV AH , 1 ; يم?ض 

INT 21h

CMP AL , ‘y’ 

JE then

CMP AL , ‘Y’ 

JE Then

JMP else_

Then: MOV DL,AL

MOV AH , 2

INT 21h

JMP End_if

else: MOV AH ,4ch

INT 21h

End_if: 

ؽتل

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 73/169

عمعم طـمعمعمسم مسمػمؿظ.ؼمضمAم

معممظمؿظمؼمض

مثحمثحمؿحمؿظ.

لتؽلع

مل م

معممظمعمعمسم مؿؼمظيمػم

for loopػمظمظ

For loop_count times do

statements

End_for

ؼؿمدؿكمعم

loopميمػم ظم ـؿظ

loop destination_label

لفم

مكؿدمؿؼمح

CXظم مهمؿؼمط

(يم معمس

) معا

loop

لفم

مضمغ

Cؼم

CXفل

مضمؾ مم

Cمحمب

CX<ظمظ

Cمؼؿمظؿم

destination_label(ظمؾلؼم

Aظمبظمم

م

126اض

Aخغمطقم

)اػما مؿاؼ

لفم

مضم مؿحمظ

CXعاغظمعميمعم

?ؿغمؿؼمػسمظمظ

.كؿاد

loopظؿظمقظمسمؼ

; ( CX )  لفم

ممؿ مضم

 

م

top:

;عغظملج

 

loop top

ام:-سؾظمظمؿظمحمكؿلؼمعغ مؿط80ن"*"

for 80 times do

display “*” 

End_for

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 74/169

مظؿفم

MOV CX , 80 ; مسم

مفظممعمس  

MOV AH , 2

MOV DL , ‘*’ 

Top: INT 21h

LOOP top

عمظغعمظل مغحمAمسمظؿم دؿكمعم

LOOPاحمعميملجم مظCمؼ

مطغمضمظم

Cسمضم ظؿظم

CXحمحمعميملجمدمعغظمصممل

م

ؼم م

1ظمضمؾؿظمظمع

65535سمؿظ ميم مح

65535(00FFFh)

.عم ػمؼؿمظغعم

لفم

مضم

Aظمػميظممظؿطمعم

CXكؿاد مظمقظمخظمؾضممل م

عم

JCXZ ( Jump if CX is Zero )مظغعمسمظقمظؿظؼمذ

  JCXZ skip

Top:

;جلميم

 

loop top

skip: 

ةؼؾح

WHILE

ؼؿم مػميمحؿمحثمذممحمظمظممسمظقمظؿظم

  While Condition DO

Statements

End_while 

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 75/169

امعاؼؿمخؿؾمظمم ؼميمصمه

مؿاؼماقؿؼمم Cمايملجم مؿؼمظم

عغظممظؿظمعم مي.

عغام

Cظم

Cممجلميممؼم

Aمظمضممؼؿقمعمظؾؼم ظؿظممؼؿمظخم

Aحم

رمسميملجم مس.ملجمAمؼAمحاذمعاعماحAماؿ ماماؼم

(محظمسم مععمظم ميمغ)يمحؿمؼؿقمذمCغ?ميم

ام:مدمميمسم مؼمعغ معم?جمؿط

INITIALIZE COUNT TO 0 ;مظ مظمA  

READ A CHARACTER ; حمAض 

WHILE CHARACTER<>CARRIAGE-RETURN DO

COUNT =COUNT+1

READ A CHARACTER

END-WHILE

فؿظم:

MOV DX,0 ; يمس 

MOV AH , 1 ; عمضم

1(حم?ض)  

INT 21h

WHILE:

CMP AL,0DH ; لظمؼغمع 

JE END_WHILE ;لظمؼغمغطم

 

INC DX ;ظمم

Cمحم

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 76/169

INT 21H ; ظؿظميم Aض 

JMP WHILE.

END-WHILE :

ةؼؾحREPEAT

خم م ظؿمحؿمحث

Aذمػمحم

.ظمسمؼممظمظ

REPEAT

STATEMENT(s) ;

UNTIL CONDITION

ظمؾؿخمؿؼمظم مةميملجم مؿؼمػ.CمعAميمعم

مؿؼمظمهمص

.مؼؿقمؼؿم ميم

ام:صل

مؿ محم ? مؼمعغ معم?جمؿطblank

MOV AH,1 ;حم

?ضمعخ

 

REPEAT:

INT 2!H

CMP AL ,‘ ‘  ;صل

ميمض

 

JNE REPAET ; يمطمؼلؼمم 

ةؼؾحي ػلWHILEةؼؾحREPEAT

دؿكميؿمسمؼؿمسم مظكمسعمؿمحم

WHILEؼؿمخؿؾمضؾمظم

ظخمCميم ظؿظممسم مجلميمسمرم مؿمحم

REPEATسم

ضمسمحمعميملجم ممظؿظ مظمؾؿخمةم

Aجلميم

.

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 77/169

مان ة اتك

مظؿظظؿمطمطؿ م عمطؾمعمظم ـ

مغمفؿظمظمظ

Cضم

:

لؿكممخممؼامظغاعم ؿقؼامAامحامطاؾممم

مل مؼمعطمعغ مؿط

(.ASCIIظمحلم ميممجمظا)ظدظمAطمحمطؾمؼمصمظدظم

مم محمطؾمؼمظغعم ز

Cظدظم

(No capital letters )م

. ط

:

TYPE A LINE OF TEXT :

SUDAN UNIVERSITEY OF SCIENCE AND TECHNOLOGY

FIRST CAPITAL = A LAST CAPITAL = Y

طمظسمظمظمؼؿدمغم ؿ مػمظغعمسمرؼمو

معمسمظ Cم

م

حمطمحمعمسمحمػمظؼمم لم ؼمظؿمعامAسامCظامدام

TOP - DOWN

PROGRAM DESIGN ط:

.زمدظمظلؿكمخمغ-1م

م

2-ظمعمع م

.

.زمظؿف3-م

.مؼؿمظؿعمعمطمخم ظؿ مظ

زالدالةلؾؿتخان-1

ظؿظم?ىم ؿطمؼرمسمظمؿؼ

MOV AH,9 ;خعمضم

9غم

 

LEA DX ,PROMPT ; ظدظمس 

INT 21H ; س 

حمؼؿم ؼمظدظم

PROMPTظؿظمقظمسمغؾظمعم

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 78/169

PROMPT DB ‘ TYPE A LINE OF TEXT : ‘,0DH,0AH, ‘$’ 

CمظلمظؿظCURSORػم ؿمهؼمم

2-لتعاممع لـءق

:

?ىمصمؿؼمظمعغظمضمسمؿهم

مػامع

م ؿطممعغظممؾظ

ظؿظمقظمس

Read Character;حمض

 

While Character Is Not a Carriage Return Do

IF Character Is A Capital Letter Then

IF Character Precedes First Capital THEN

First Capital =CHARACTER

END_IF

IF Character Follows Last Capital THEN

Last Capital = Character

END_IF

END_IF

Read Character

END_WHILE

مهمظمم

C’Character >= ‘A’ AND Character <=’Zحمؼميمطؾم

لاتل لـؾسؿتلةغؾ ءهؽو

MOV AH , 1

INT 21H

WHILE:

CMP AL,0DH

JE END_WHILE

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 79/169

  CMP AL , ‘A’ 

JNGE END_IF

CMP AL , ‘Z’ 

JNLE END_IF

CMP AL,FIRST

JNL CHECK-LAST

MOV FIRST,AL

CHECK-LAST:

CMP AL,LAST

JNG END-IF

MOV LAST,AL

END_IF: INT 21H

JMP WHILE

END_WHILE :

-:سؾمسمعؿمحصمؼؿم ؼممعمظؾغمسمظقمظؿFIRSTLASTحم

FIRST DB ‘]’ 

LAST DB ‘@’ 

حميم

]قظمظؿظميمػ

Zيم

@قظم لظميمػ

A

3/

تة لـةسابر

:-

مؼؿمظؿظم

مػمص

:

IF NO CAPITAL LETTER TYPED THEN

DISPLAY ’NO CAPITAL’ 

ELSE

DISPLAY FIRST & LAST CHARACTER

END_IF

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 80/169

حمؼؿمCزمظدظمممحظمسمCخمAمحمطؾمخمظدظمAمضمطممحم

ظخCمت.ظؿظمغؾظمؼؿ مغمظم?ج:

NOCAP-MSG DB ‘NO CAPITALS $’ 

CAP-MSG DB ‘FIRST CAPITAL=‘ 

FIRST DB ‘]’ 

DB ‘LAST CAPITAL=‘ 

LAST DB ‘@ $’ 

مظؿظم

?ىم ؿطمؿؼم

MOV AH , 9

CMP FIRST,’]’ 

JNE CAPS

LEA DX ,NOCAP_MSG

JMP DISPLAY

CAPS : LEA DX, CAP_MSG

DISPLAY: INT 21H

ماؽلمانل

TITLE THIRD: CASE CONVERSION PROGRAM

.MODEL SMALL

.STACK 100H

.DATA

CR EQU 0DH

LF EQU 0AH

PROMPT DB ‘TYPE A LINE OF TEXT',CR,LF,'$' 

NOCAP_MSG DB CR,LF,'NO CAPITALS $'

CAP_MSG DB CR,LF,'FIRST CAPITAL ='

FIRST DB ']'

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 81/169

  DB ' LAST CAPITAL = '

LAST DB '@ $'

.CODE

MAIN PROC

; initialize DS

MOV AX,@DATA

MOV DS,AX

;display opening message

LEA DX,prompt

MOV AH,09H

INT 21H

;read and process a line of text

MOV AH,01H

INT 21H

WHILE_:

CMP AL,CR

JE END_WHILE

;if char is capital

CMP AL,'A'

JNGE END_IF

CMP AL,'Z'

JNLE END_IF

; if character precede first capital

CMP AL,FIRST

JNL CHECK_LAST

MOV FIRST,AL

CHECK_LAST:

; if character follow last capital

CMP AL,LAST

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 82/169

  JNG END_IF

MOV LAST,AL

END_IF:

INT 21H

JMP WHILE_

END_WHILE:

MOV AH,9

;if no capital were typed

CMP FIRST,']'

JNE CAPS

LEA DX,NOCAP_MSG

JMP DISPLAY

CAPS:

LEA DX,CAP_MSG

DISPLAY:

INT 21H

;exit to DOS

MOV AH,4CH

INT 21H

MAIN ENDP

END MAIN

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 83/169

وا

1-فؿظمظمظ

Cحمظؾمظؿظم

  1 - IF AX < 0 THEN

PUT -1 IN BX

END_IF

2 - IF AL < 0 THEN

PUT FFh IN AH

ELSE

PUT 0 IN AH

END_IF

3 - IF ( DL >= “A” AND DL = < “Z” ) Then 

DISPLAY DL

END_IF

4 - IF AX < BX THEN

IF BX < CX THEN

PUT 0 IN AX

ELSE

PUT 0 IN BX

END_IF

END_IF

5 - IF ( AX < BX ) OR ( BX < CX ) THEN

PUT 0 IN DX

ELSE

PUT 1 IN DX

END_IF

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 84/169

 

6 - IF AX < BX THEN

PUT 0 IN AX

ELSE

IF BX < CX THEN

PUT 0 IN BX

ELSE

PUT 0 IN CX

END_IF

END_IF

م

2-ؾظممظمؿد

CASEفؿظم معغظمعمظؿظم

?ىمؿط

.ضAمحA-م

م

-يمطم

C‘A’ؾر

)Carriage Return

جام

-يمطم

C‘B’ؾر

)Line Feed

.CمطمAمحم @ خمضم غ?مظغعمظمظمظؿ-م

3- مؼمعغ معم?جمؿط:

م

A-ضمملحم

1+4+7+م

........م

+148فل

م

AX.

لف+5م......م++90م100+95محلممس-م

م

BX.

4-عمعكؿلعLOOP مؼمعغ م ؿ مض:

م

A-

Aحلم

50ؿظسم

159م

13فل

م

AX

م

-ؿسؾرمحم

80عممظلمظؿظ

.

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 85/169

5-ظمسمكؿد مضمل م مظؿظمع

  INITIALIZE QUOTIENT TO 0

WHILE DIVIDENT > = DIVISOR DO

INCREMENT QUOTIENT

SUBTRACT DIVISOR FROM DIVIDEND

END_WHILE

لفم

ممج

مضظمل مؼمعغ معم

?جمؿط

AXج

مضظمس

لفم

BXفل

ممفؿظم

CX

6-ضممحم م مظؿظمع

NMؿ

مىمسمكؿد

INITIALIZE PRODUCT TO 0

REPEAT

ADD M TO PRODUCT

DECREMENT N

UNTIL N = 0 

لفم

ممج

مضظمم مؼمعغ معم

?جمؿط

AXج

مضظم

لفم

BXفل

ممفؿظم

CX(موػمحثمسمظ)م

7-ؼعمAمسمCLOOP

LOOPZمضمغ Cمػ مؿؼف

CXC

طغم

CX <> 0

( AND )ZF = 1يم مؿؼ

(مظمظ

Cؼؿمظم

.)

طظمعؼم

LOOPNE

LOOPNZفل

مضمغ Cمػ مؿؼ

CXC

(.ؼؿمظمCظمظم)ؼؿم ميCX <> 0( AND )ZF = 0طغم

عم ظمسمعؿمخم

Cمحم ؿم

Aؼمعغ مؿط

Carriage Returnؿؼم

خم

C80ح

(عمؿد

LOOPNE.)

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 86/169

مل

8-يمز مؼمعغ مؿط‘?’ؼؾطمصحم

? مؼمة

.سؾ معغظمؼ

.م ؾممظلمظؿظيصم

9-اضمايماعم?اؿ ميمسؾ مؼمعغ مؿط80hضاظممايماحFFhاع

حمظام

ASCIIسؾ ممعغظمؼ

10صلعم محظملظممح

.

10-حمغخمعمعمسمددمضمخمكؿل

مل مؼمعغ مؿط

(

م

"0"

C"9"

A"A"

C"F)م

"ظمظممز

مظمسؾ معغظمؼ

لؿكمCمطمؼؼمظمعمةغمصم.مظلمظؿظم

مل معغظمؼ

مي'Y’سميم

A‘y’ؿؼمخ

 @ محم

Aخم

Cمظمؿ معغظمؼ

لؿكمAمضمشمعلم مؼمظغعم زمدظC.(غ?مظغعم

مخم C

خم

Aظمعم

)

11-معظمط

10سممسمددمضمخ

Cلؿكمم

مصم

3

.ؼمظغعم غؿ?مظمCظمغمظؿم

 

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 87/169

الصػل

ملةحمةؼط ـ

ةؼط ـمAND,OR,XOR

ػمعظمظمظممفل

ممحمةمغخمعمعؿظمم

معمكؿل:

AND DESTINATION , SOURCE 

OR DESTINATION , SOURCE 

XOR DESTINATION , SOURCE 

لؿم

ممفؿظمؼمتDESTINATIONا مطاظمماضعم

Aمؼمعلفم

Aظمم

عمخم

SOURCEمضمة ؿ

Aمعضممظطم

Aمؼمعلفم

.عمعؿظمممعس

طظممضع.

:ؼم ةمظؾمسمظقمظؿظم

PF,ZF,ZFم

:محظمظؿف

.

AFممممم:صعمش.

ممCF,OFمممم

:مل

.

مػم مخغممخمعلفمؼؿمظم داؿكمحفام

معظم

معكؿدمح

AMASK ممظؿظم

مغؿدمؿؼمعمعؿظم

مغ

مؼهمؿد مؿؼمحاع

م

: b AND 1 = b , b AND 0 = 0  b OR 1 = 1 , b OR 0 = b b XOR 1 =~ b , b XOR 0 = b 

:سمػمم م

1-ظمظ„0‟غخم(غخمA)Clear عمكؿدمؿؼANDظممؿؼمح

„0‟فيم

MASKم

مغكظ

'0‟اظمامؿؼم مص

'1‟اغ

م

ظمعم ؼم

.

2-ظمظ„1‟مغخم(غخمA)SETعمكؿدمؿؼOR اظممؿؼمح

„1‟فيمMASKم

مغكظ'1‟اظمامؿاؼم مص'0‟اغ

م

ؼ معمظ.

3-ظمضمخغم

(غخم

A)COMPLEMENTعمكؿدمؿؼXOR مؿؼمح

ظم

'1‟

فيم

MASK

اظمامؿاؼما ماؿضماسما

ماغكظ

'0‟

غمظمعم ؼم

.

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 88/169

ام:

لفمخغمم‟'0مظم

ممذALؼ م مغ

مض م .

ؼؿمدؿكمظم

0111 1111b = 7Fhفقط

MASKعمكؿدمؿؼ

AND

AND AL, 7Fh

ام

غممظمطSet „1‟مظم

معمطمMSBمظممغ

LSBفال

م

ALم Aؼ م مغ

مض

ؼؿمدؿميفم

Mask = 1000 0001b = 81h

عمكؿلغ

OR 

ظؿظط  OR AL , 81h 

ام

لفم

مذ CمشDX

 XORغلؿكمع1000 0000 0000 0000b = 8000hظؿظMaskؼؿمدؿكميفم

XOR DX , 8000hمممممم

ؿؼمعسظؿظم

?ىمم مسمثقؿدمظمؾؿظمعمسمم

معمكؿد

بكغصلو

ا7Ahحؿا 61hؿ?معمظاضASCIIممجمظا( „a‟ to „z‟)غمAميمظم

معمظضASCIIمظم( „A‟ to „Z‟)ميمظؾم

?ؿ 41hؿح5Ahغصمظمس

لف20hظؿقؼميمعممCظمطؾمغمظضم

مطم Cم ـصDLاماحماسماؿ

ظمحمطؾمغلؿمعم

Cضمضم دؿكمػمظؼمعمضؾSUB DL , 20hعمهؼم

.

كؿدمػمؼغؼقؿظمخAمؼرم.

Aزمظقمنم

مضظمغغم

C

زمظقم

مضظ„a‟ػ0 0001161h = 01

زمظقم

مضظ„A‟ػ0 0001061h = 01

لف„0‟عمضمغحمهؼميمعممCظمطؾمؼؿممظم

ممدلظمغ

م

مظافيمكؿاد ماظمؿاؼميMask ظاؿظ1101 1111b= 0DFhاعمؿالغ

ANDAND DL , 0DFhممممم

ل ممحمظ

Cمم مطمهؼميمظؾم

.

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 89/169

موػ(فػ)Clear Register

كؿدممفلعمممظمظمغAمغؼعمحAمMOV AX,0

م

ASUB AX , AXع مغؿدممعمع

Aغمدؿكم

CXOR 

Aحمغم

1 XOR 1 = 0ممم0 XOR 0 = 0م

ظلفمعمغلمظمظضممصمسمظقمظؿظ  XORظؿظممدؿكمعم

  XOR AX , AX 

باجلقػمخت

ؼؾمطغممؼمذؽمOR AX , AXصمعم‟'1‟ OR „1‟ = „1مم‟'0‟ OR „0‟ = „0م

لفم

مؼؿم مؿؼممح

AX

اظم

مسمةؿظ مؼمعمظم

عم م

ZF

م

لفصمطSFمذم

AXظم مصمؿلصممضظم( ZF = 1 )امظؿظ

CMP AX , 0دؿكمػمعم معمدؿكمعم

مNOT

مظح NOTؼمعم

مل1‟s Complement(ظا„0‟ػمهؼمظا

C„1‟ااظ'1‟اظ

C'0‟م

لف

مخ مغ

مسم A)ػمعظمظمظ: NOT Destination

مظمعم عـ

 NOT AX

مTEST

لاؿANDمعTESTؼمعم

ماؼؿم م مظDestinationاػماعما

ػمعظمظمظمظيم مسمةؿظ

TEST Destination , Sourceممم

ؼظؿظمؾظمسمةؿظ م:

م

ؾظPFZFSFفؿظم

م

ؾظ

AFعمش

م

ؾظOFCFضظمسمؿه

0

اناخةناخابتخ

مطام اTESTؼلؿكمعم

Cمخغممعصم

A'1‟خؿؾمؿؼمخغم

A'0‟ؿاؼماح

مخؿؾػممظاض„1‟مظضم Maskدؿكمحفم

مغ

م'0‟اظماغ

م

ؼؿمدؿكمع1 AND b = bممم0 AND b = 0عمعصمضؿمظمم

مممم

TEST Destination , Mask 

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 90/169

مخ‟ '1ظؿظمصمظؿفمدؿقؿمسمظضم

مغ

مسمؿهمغ

مػمغطم Cمصمػؾ

غمخ„1‟ظضم

مطممم م .

 

ام

:

لفم

مضمؿخALظمCمظ مضمجمضمسمؿحمCEven_No

ضمظجمهؿمسمظضم

0غممظمم

مLSBػمؾؿخمظمس

فيمكؿدمؿؼمغ

MASKظؿظ00000001bظؿظمظمسمعغظمؼ:  TEST AL , 01h

JZ Even_No 

محة

:

م

Aلؿمظمظم

ممج

مغكظم طـ

Aحمبمخغم

Cمسم

?جمحمع

Aلؿكم

.ظلم

سعمكؿدshiftؿاؼماظماع

Aم اممحظام

م

م

Cحؿم

Cؼؿمصمظكغمظمؼؿم

مصمدمطمؿل

معمغ ظـمظم Cمغمػمخ.

عم

Cؼجمذمعمحمػم

:

 Opcode Destination,1م

مممممممممممممممممممممممم

Aممممممممممممم

Opcode Destination,CL

لفم

مؿمحCLػ م

محمعمسمس.

اؾلةح

: Shift Left (SHL)

مCحمظلممAم محمبمخغمحممػاميظامغلاؿمSHLؼمعم

ع:

SHL Destination , 1 

لفم

مم

محمعمسممؿؼمحمغخمعم طـ

ACLعمؿد

SHL Destination , CL 

لفم

مضمؿ مCLعم م

م

.ؿمحظمظؿفPF , SF , ZFمظؾم

م

ؾظCFؿح

Cخمخغمم

 @ ظكؿمسم

.Cمطغم @ خمسمCحمAمCمضمدظ1ؿمسofمظؾم

ام

:

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 91/169

لفCL = 3مCDH = 8AHممطمم

ممؼؿممػمعCLDHعمم ممSHL DH ,

CLمم ممظط.

:

لفمم

ممؼؿممغطممعمم ممؾض

DHػممظضم

10001010

3ظمظلم ؾم

Cحم

لافممh = 0101000050ؿؼ م

ممؿممCLم الظمماؿضمماس

(م3ظاضم

)ؿام

Aضامةام3ىؼمميمسمبلاDHؿؼ.م)‟„0ممممسممظمم

صم

Cملظمض

A3ظمض

Aمم

A)

اؾلةحتدا ضل:

ممظاضمم(2d)ؿممسممحممظلممساممامممظاضم اـع(5d) 101امC

حؿممظلممبممخغممحممممسممظاضمم

C(10d) 1010 ظؿاظممصاممامم

ؿغخممبممحمظممممضظمم مضمغطممؿ مم(4d)ماػ.اصمظاؿظ

حمظلممضمةم م مم

(2)

مShift Arithmetic Left ( SAL ):

ممعممSALؼؿممعمم عـSHLممكؿالؼمماظSALمماحمم اليمماظم

.Machine Codeظممغممظممظؼممعؼمم ؿ

اضػل

:

ظشممعممAممسممAحمم مم ظؿةممسامم اممظامماممCممغاممCمم

ام

م

Aممذاممحامم

Aمممم ممسمم

ؾظممظحممصممعممعمم طـممحممةح

لفممؿممسمؼممصممغؿفممAخممسمم

ممحممسممةحمم Cمم ـصممح

لاممام Of , CfصلافممAممضاممظؾامCL=2ظممبممخاغؿم80hظضمم

ظممسممثحممعممشظ ممظ.

ام:مفل

مؼؿمظمعظمعممؿط AAXضظم(8)عصممجممس.

.خغم(3)ؿممCظممCحممظلممبم:

  MOV CL , 3SAL AX, CL

ميؿؾلةحShift Right (SHR):

ؼاااؿمSHR Destination,1ممحممظممظلؿممؼخممظمم SHRؼممعم?

خممظممم

Cغممممظممسم

ممMSBمماظممممغ

ممح

Cممؼؿمم

ام.م CCfمم ممممLSBمم طـمماحمماسمم?جCممممحممعAممؾط

لفم

مممم

ممحممعممسمم ممظممغخممع

CLظممكؿد

.

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 92/169

  SHR Destination, CL 

.SHLؼمم ةممظؾممطممممحظممعمم

ام

:

لفمم

ممؼؿممػمع

DHم

ؾظم

CFممظؿظممعمم غع

?ىمم ممMOV DH, 8Ah 

MOV CL , 2 

SHR DH,CL 

:

  DH = 10001010

ممفل

ممؼؿممؾ ممؿغخممبممح

  DH = 00100010 = 22h

مم

ؾظممضمم Cf مػ„1‟

م

(Shift Arithmetic Right (SAR :

غممممظممسامم SHRممسممعمم SARؼممعم

ممؼؿمم Aممسع

MSB مم ممػ ممؿؼمعممم

.ظممعممخ ممحممع

Aطؾمم

.  SAR Destination , 1

اممم

ماحماعمماسماممؿاؼمماحمما

ممعممسممحممظحممصمم

A

لفمم

CLمظممعممخ

  SAR Destination, CL 

لؼؿة ادتحلؾؿي

:

ظممممحظممسامم2ؼؿممدؿكممحممظممج?ممسممظلممسممظمم

جظم

.عمم ظلؾممظسممظؼممصممظؿفمم امع اممظاممظاقممام

A

ممسممCج?ممسامم1لمم  Cfممضمم مممم ـصممضاظمماظمماح

(00000101)=5ضظمػمفؿظمص(00000010)مضظممػ2.

اذ اذإ ةؿؼل:

ذ

Cممسممظلممممظؿضمم ممضمم ذممضمم مم

Cمسمم

.ممحظم

ذممممدؿكممعمم

Cمم مم ضSHR م

.اممممحظاممضامم ذاممام

اطممAممخغاممذاممػام)حممؼاؿممحؿازمم ذاممظاضمم SARدؿكممعمم

طممظممممغ

.)

ام:

لفمم4سممظضم 65143دؿكممحممظممظلممظضمم

ممممفؿظممAX.

:

  MOV AX, 65143 

MOV CL,2 

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 93/169

  SHR AX, CL 

ام:

لفمم

مؿحمم

CALمضظممس-15ممفل

ممؼؿممػمعALمعمم مم

.

  SAR AL,1 

:

لفمم

ممؼؿمملضممؼممعممALممظ2مغطممطممفؿظممؼ ممؿؼ

Cمم -8ؿؼؾممممظاممامماممساممظامم-7.5ػممظؿفممػممظضمم

غممنممAممظمم ظـممظممممظممغغ-15مماػ11110001مماسمم?اجCمما

.-8ػممظمم11111000حممظممممسممظضمم

ممسممظممظلامسامسعممم

?جممظمملظممحممع

Aدؿكمم

ظامم

2سااممشاممظاامم

Cممساممظااممسامم

?ااج

Cغامم

Aمم

Cمم سااعمم

A2م

عس ممؼؿممCج?ممسممCحمماممطاممداممصامم اممطامماممداؿكمم

عمIMUL, MULممعممظIDIV, DIVمماضممAمماسممالظممسمم?ج

حممسممعمم

Aظم ؿمػمعمم

.

لم:

اؾللRotate Left (ROL)

غاممممظم

مماممؿاؼممالظممحممسمم

?ج ممعممػمممماسمم

غممممظممممصممغممظضممؼؿمممممم اممامم

CFم.مؿاؼ

غامممم

ممامماسمماظممممغ

ممحممعطممحممغطممفلظممظ

ظممعممخؼممممظ

  ROL Destination , 1 

ROL Destination , CL 

:Rotate Right (ROR)للؾؿي

ؼممػممعمم ممسممعمم

ROLممحمم ممظممحاممؼاؿممم

Aصممسمم

غممممظاممطاممصاممغاممظضاممؼاؿمم

ممممممظممممغ

مم

مم

ممممم

.حممظؿ

Aؼخممعمم

:

  ROR Destination ,1 

ROR Destination ,CL 

غممظممؼؿممرػمممم مممROR , ROLؼحممغممممعؼمم

ممممؿؼCF

ام:

دؿكممعمم

ROL

غممظممهؿممسممظضمم

ممسمملي

(1)

لفمم

مم

BX

م

لفمم

ممؼؿمم ممBXم.مفل

ممممفؿظممAx.

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 94/169

:

  MOV DX ,16D ;ؿظظمؿظمس 

XOR AX,AX ; AX  غممم

مسمملحمؿؼ  

MOV CX,1 ;  غم

ممس

 

Top : ROL BX,CX ; CFغمظمتمرػم جمم

 

JNC NEXTINC AX 

NEXT: DEC DXJNZ Top

ؿ ساؾلل(RCL) Rotate through Carry Left

لافمم

مماعمم

?اجممامم

ا مماؾؿسمملظممظممسمم

?ج ممعممػممؼ

ممممؿؼممحم

ممؼؿممممؿؼمممم

ممممسممظممممغ

ممظممممغ

ممممم

.حممظؿ

Cؼخمم

.

  RCL Destination , 1 

RCL Destination , CL

يؿؾللؿ سRotate through carry Right RCR 

صممسممAممظممؼاممظاممحاممؼاؿممRCLؼممػممعمم ممسممعمم

غامممم

ممممامم

مممممم

ممممممظممممغ

مم

ظممسممؼخممظؿ

  RCR Destination , 1

RCR Destination ,CL 

ام:

لفمم

ممؼؿممغطمم

CDHممضاظممػ8Ahمضاظمماػممامم

ا مماؼؿمماغط

CF=1مفل

CLممضظممسممؿ3ممفال

ممؼؿممػمعDHما ممامما

عمم

  RCR DH, CL 

:

م

DHCF

ؿ ممظ

100010101

ظمممظمم

110001010

ظممغ ظـممظمم

011000101

ظمم ظـ ظـممظمم

101100010

لفمم

ممؼؿمم

ADHػممظضمم

B1hممممؼم

مم

.

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 95/169

ام:

لفمم

ممممج

ممغ

مم ممؼممعغ ممعمم ?جممؿطAALممفل

ممممفؿظمم

DLممفال

مماؼؿمماغطمم

Cمم ـصALممغا ظـممضاظمماػ11011100ممضاظمماممؿاؼ

00111011لفمم

مم

BL.

:

مماممSHLؼؿممدؿكممعمم

ا مممماطمماظممممغ

ممممؿؼممح

غاممممظاممسامممم  RCRاػممعؾذاممؼاؿممداؿكممعامم

مممماظ

لفمم

BLممسممظممػم 8ممعم

.ممظؿظ

?ىممممط

  MOV CX, 8مم

 

Reverse: SHL AL,1 

RCR BL,1Loop Reverse

MOV AL , BL 

شسةدلةا ـلاقةسابرءق:

ممػممى?ممدؿممطممطؿ مم عمم مم ?ممAضممةممAممددممسممعامم

ممسؾرممظطمم

ممحظذظممممسممدلظمم ظـممظممممض

.

1-

ا ـلاقاخ

:

لؿكمم خممضممةممغؿمم ظممسمم

ممؼمم ظـممضظممخممعغ مم

خممسؾممساممد.مCarriage Returnعؿممخمم

ممضظممؼممحمايممال

'0‟'1‟مزاظمماظممCمماؼهممؿاؼمماحممطممخCممس(1, 0)مماػممان

فلعممممغ

م

. مممم

محظمعمةممضممخ مم ممظؿظممع

لفمم

BXم:  Clear BX ( BX will hold Binary values ) 

Input a character ( „0‟ OR „1‟) 

While character < > CR DO Convert character to binary value 

Left shift BX

Insert value into LSB of BXInput a character  

End_While

خممظضمم

Cعممممحظمم

م مم110مظؿظط

:

  Clear BX : BX = 0000 0000 0000 0000Input character „1‟ , convert to 1Left shift BX: BX = 0000 0000 0000 0000Insert value into LSB of BX: BX = 0000 0000 0000 0001

Input character „1‟, convert to 1Left shift BX: BX = 0000 0000 0000 0010

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 96/169

  Insert value into LSB of BX: BX = 0000 0000 0000 0011Input character „0‟ , convert to 0left shift BX : BX = 0000 0000 0000 0110Insert value into LSB of BX

BX = 0000 0000 0000 0110

لفمم

ممؼؿ

BXػمم

110b

عممظ

مممسممؿهممخ

ممضمم Aمم ل'0‟„1‟ممممغ

ممسمم Aممص

ممخغؿمم17خغممCممدؿممصممAممخغممتممCخممممحظممCخمم16ؼؿمم Aممغخ

خمم

Cممتمم

C18مػممغخ

.

لفمظلممظؿممخمBXتممسممحممظلفمم

ممممغBXمماممظممممغ

مم

ؿحامم داؿكممعامم

ممغ

ممممخ

ممضظممخ

COR مماظمممماغ

مم

Aحامم

ممهؿممسممظضمم

0(

غؿفاممظحاممظلاممظامم اممظاضم

0

مصام

)

مممممم

A

غامم  b OR 0 = bمماعممكؿدمم ممغصممظؿظ OR مممماغ

مماصمماغك

مماظممؾا

خممؼؾممػممى?ممعممظغعمم ممظؿفممسممظقامم

ممضظممضممػممممظ

ظؿظ

:  XOR BX,BX

MOV AH,1

INT 21h ;حمم

 

While_:CMP AL, 0Dh

JE END_While

AND AL , 0fh ;ةممضمم

Cحمميمم

 

SHL BX, 1 

OR BL, AL ; BL غممممظمممم

ممممظممخ  

INT 21h ; ظؿظمميممAض JMP While_ 

END_While:

2-ةا ـلاقخ

Binary Output:

ظـممظممممضظممخ

Cغامممحظمم

ممح

Cممغلؿكمسممظممظلممحممؼؿمم

مم

مم

Cمممظممطمم

.ممصممطغامم لام

ؾظممؼؿممؿخممؿؼ1ممؿاؼ

صممؼممخعممظغع.‟C'0ممطغمم لممممؼؿممرؾسممي„1‟رؾسمميم

  FOR 16 times DoRotate left BX

If CF = 1 thenOutput „1‟

 

else 

Output „0‟ end - if

END_FOR

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 97/169

.ظغعم مظؿفممطؿؼمظظم

3-شسةدلاقاخHex input:

مم

ممهممخ

ممسممدلظممض'0‟مم

C'9‟ماي'A‟م

C'F‟مماؿبماؿ

ضظممؼغممممخم

.

ممايمم

Aخاممحاممطاؾممصامممظؿؾلممدممػمم

خمممم ؿمم

4ممسمددممغخ(فلظممظمملظم.)ماع

ممسممؼر

ممسممحاممظلافمم اؿمم

Aممصممسمم ظـممضممخ

Cؿؾمممم

ممؼظمملغممػ

ظمم

ممممح Cمم مح(اةممغخمم Aممسممؿممسممدلظممغ

ممم)

صممسممدلظممغ

ممخممعممؼؿظممظم.عغظممعخممطغممؼممص:  Clear BXمم 

Input Hex character

While character <> CR DoConvert character to Binary value 

Left shift BX 4 TimesInsert value into lower 4 bits of BXinput a character

End_While

ؼممطممفؿظمم ممعغظممؼ:  XOR BX , BX

MOV CL,4MOV AH,1

INT 21h ;

حمم

A

مم

A

ض

 

While_:CMP AL , 0dhJE END_While

;مم ظـممظمم

Aحمميمم

 

CMP AL , 39h ; "م“9ضممعمميمم  

JG Letter ;ممطممطممصممحم

 

;ضممسممؾسمم

 

AND AL , 0fh ;

Cممضممةحمم

 

JMP shift

;حممسممؾسمم

 

Letter: Sub AL , 37h ; ةممضممCممح 

Shift: SHL BX, CL

; BX لفم

ممممظممخ  

OR BL, AL ;لظمغخم ممظم 

INT 21h ; Aضمغ ظـممي  

JMP While_ END_While: 

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 98/169

4-سةدلاقخHEX Output:

لفمم

ممؿBXممس16ممAممةممغخ4ماسممددممغخم.ماػمماسؾظ

ممةممغخمم

Aخمم

 @ ممعممظلممغخمم

Aؾغممسممدلظممظممممضظم

Cمم

عممظؿظ4خغممددممسممغؾممغلؿممطظمم

ممممطممع:For 4 times Doمممم 

MOV BH to DLShift DL 4 times to Right

If DL < 10 thenConvert to character in 0 ......9

elseConvert to character in A..........F

end_if

Output characterRotate BX left 4 times

END_For

وا

ممظؿظم-1

ممظمم ?ج ممض:  a. 10101111 AND 10001011 b. 10110001 OR 01001001 

c. 01111100 XOR 11011010 d. Not 01011110

م

2-ممظمم مم  م

ممعممػمع

:Aم-مضظمم„1‟مفال

ممممامماظممممغ

ممطممظممممغ

مم

BLم مم ممغ

ممض مم

ممع

.

II-مممممغ

ممضممسمفل

ممممطممظBXمممماغ

ممض مم ممع

.

III-ممؿ

ممممج

ممغ

ممطممضممسWord1.

:مم مTestدؿكممعمم-3

1.ضظمم

'1‟لفمم

ممطمم

Cممظمم

مم

AXؿممسممظضممم

.

2.لفمم‟'0ممظضم

ممطمم

Cممظمم

DXمصممسممسممؿ

.

لفم‟'1ممظضم.3

ممطمم Cممذمم مDXمظدممسممسممؿ.

لفم‟„1ممظضم.4

ممطمم Cممظمم ممDXمممسممؿ.

لفممم ممخغممظؿ ممCم‟„1ممظضم.5

ممطBLمماجمماسممسممؿ

غممظممهؿممسممظضمم

ممع'1‟

4-لفم

ممطمم

CALؿممسممظضمم

11001011bمممم

ممضممغط

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 99/169

لفممCF=1لممحم

ممؼؿممػمعALممظؿظممظممعممطمم مم

(.صممظمم ؿممعممطممس)م

a. SHL AL,1 b. SHR AL , 1 

c. ROL AL , CL ; if CL contains 2 d. ROR AL, CL ; if CL contains 3e. SAR AL,CL ; if CL contains 2 f. RCL AL, CL if CL contains 3 

g. RCR AL ,CL; if CL contains 3

.AطؿممعممAممعممظمم مم ممظؿظممعممسممحثممصم-5

A-ممضظممسعB5hم

-ممفل

ممؼؿممALممضظمم8

لفمم4سممظضمم32142ضلممظضمم-جا

ممممفؿظممAX

-لفمم16سممظضمم-2145ضلممظضمم

ممممفؿظممBX

م

:AطؿممعممAممعممظمم مم 6- م

لفم.1

ممطمم CALمعمضAممضمسمؿ10ز

ميممممضظممؼقؿ ممض.

2.لفم

ممطم

CDLمظممسمؿASCIIؾطمميم

.مميمؼقؿ ممض

.

:AطؿممعممAممعممظمم مم  م-7

1.لفمم

ممؼؿممBLممضظمم10Dمصممثحممسممع

.

2.لفمم

ممطمم

CALمؿممسممسممعجم

.اسممضظممػممل ممضم

(8م

)ار

لفمم

مممضؾظAHمم

(سلع

:(. RORدؿكممعم

ملوا:

لؿكممخممحم-8

ممل ممؼممعغ ممؿط Aم.اسؾ ممغا ظـمملظممممعغظممؼ

غمASCIIظمظامم

ممسممظطممخ

ممقظم ظـممظممظممسممؿهممظ

„1‟ممظممم

.م عـ  TYPE A CHARACTER : A

THE ASCII CODE OF A IN BINARY IS 01000001THE NUMBER OF 1 BITS IS 2

لؿكممخممحم-9

ممل ممؼممعغ ممؿط Aم.اسؾ ممغا ظـمملظممممعغظممؼ

اخمASCIIظمظامم

ممقظممسمدلظممظممم.ماؼمماؿحممؿظا ممعاغظمماؼ

سممظممحممخCمم ممكؿل

خممؿعمم.  TYPE A CHARACTER : 7 

THE ASCII CODE OF 7 IN HEX IS : 37

TYPE A CHARCTER : 

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 100/169

لؿكممخممسممددممسممعممعم-10

ممل ممؼممعغ ممؿط A4مماقطمماغخ

ضA.ضظممسؾ ممغ ظـمملظممممعغظممؼ ظـممظممممخ

م.مكؿال

ممضمم C

خممضممشممعلمم مم

(سممددممشممضم

)ؼممظغعمم لاظمم ظامممعام

خ

A.  TYPE A HEX NUMBER (0000 - FFFF) : xa 

ILLEGAL HEX DIGIT, TRY AGAIN ; 1ABCIN BIRARY IT IS 0001101010111100

خغممظم16طؿمم غعممؼمم لمملؿكممخممضممةمؼممعم-11

Cم.ظؿظمم ؾسممظضممممظمظلدمسؼممظغعمممظلA.ضم

لؿكمم خمضممشممةمم

ممض(مل مممغخمسممؿ"0"مل مممA

م

م1"

Aلؿكممظقممعمم

ممل ممعغظممؼ

.

 

TYPE A BINARY NUMBER UB TO 16 DIGITS : 112

ILLEGAL BINARY DIGIT , TRY AGAIN : 11100001IN HEX IT IS EI

12-ضم

Aلؿكممخممسؼممةمم مم

ممل ممؼممعغ مؿط

A8مغخ

ممAؼم ظـممظممممظؿظملظممممؼظمممسؾ ممعغظممؼ.

لم

ممضمم

Aخممظضممعمم

Cكمم خممضممخمؼؿممرمم

.

  TYPE A BINARY NUMBER , UP TO 8 DIGITS : 11001010 

TYPE A BINARY NUMBER , UP TO 8 DIGITS : 10011100 

THE BINARY SUM IS 101100110 

13-لؿكمم

ممل ممؼممعغ ممؿط

Aذمؼم

Cخممسممددمسمم م

لؿكممضممخ.ظغعم ؾسممممظؼممممظلممظؿظم

ممخمم C

خمم

Aؼؿممدظممظقظممعمم

.ؼممظغعمم خؿؾممحثممسممظم

ممCذمؼؾممظؿفمظققمم

TYPE A HEX NUMBER (0 –  FFFF ) : 21AB

TYPE A HEX NUMBER (0 –  FFFF ) : FE03THE SUM IS 11FAE

14-

ضممسؼمم ؿمم ظممسمم

A

لؿكمم خمم

ممل ممؼممعغ ممؿط

غمظؼممظممتمؼممظغعمملم.عؿممخمم

ممممسؾر

خممممظلممظؿظممممظمظلدمسمم

C.لؿكمم خم

ممضمم

C

ؼممظغعمم لظممظقظمعممAخم(مم 9 , 0مؼمم )ضممخمم

  ENTER A DECIMAL DIGIT STRING : 1299843THE SUM OF THE DIGITS IN HEX IS : 0024

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 101/169

الصػل

ءجسةمؼمؽ

The Stack and Introduction to Proceduresم

ضممظاؼممظؾغامAةا?ممساممظغاعممصاممػامم

ممؼكؿظمم

ممعممكؿدممؿؼ

ممدؿكعممممساممظا?ممظغاعممظسامظممدؿممرؼمم

ممسProceduresم

مAخممضممعمم دؿكممعمم

ممضممممطممؿظممظ pop, pushمماؿغمماة

ظظمم عـمم ممعممسظممعظمم?غممغ

.

ح

Aمطم

ممؿؼمص

Cمظطممؼؿممظؿعممعممرممحممصممعممحممؼؿمم

ممؼؿممAخمم @ خممسممممسممظلقممظؿظمبممغممؼمم ؼامم

ممضممممظ

ؼامممسممطمم غعممAممؼامم ؿقم @ LIFO (Last In first out)خممعخممػممAمممم

عممكؿد ممظمم لظممظممممغطممطممطمم ممطظممممع.STACK 100hمممم

مم

ممعممفلعممؼممحSSمم

ممذعممؿمم لظمم ـ

مممم

ممعمم C

SPممظممس100hماخممعمم

Cغاممػامػمم مم

Cممسامماممضاممصاممؼاؿمم

ظ

.

مؽقPUSH , PUSHF:

ممؿمPUSHؼؿممدؿكممعمم

ممممضممخ

  PUSH SOURCE 

ممعضممممظطمم مم

Aممػممعلفمم

ممح16مغخم

. عـ

  PUSH AXم

 

ممظممػممممؿؼ

:

م-1

ممذعممضممغ CSPمم2

2-ممممظطمممظم

ممعممكلغممممؿؼ

SS:SPم

ػ ممؿؼمممم

ممؼؿمم Aممح.

مPUSHFعم

مممم

ؾظممفلعمؼؿمص ممؼ

. ـصمماؼؿمماغطمماظ

لفمم

ممذعSPممضظممػ100hمماعمما مماؾصممظمم ممؾضPUSHFممؿاؼ

غمم

C2ممفل

ممؼؿممعSPممؿضممؾؿظ00FEhممكالغمماسممؿاؼممظمم

ممسممحمم

ممعمممم ؾظممفلعممؼؿممع00FE.

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 102/169

مؽمةؿقدPOP , POPF:

ممؼؿممدؿكممعمم

ممعممضممقلظPOPمؿ

  POP Destination 

لؿممسؾممسممعلفمم

ممح16مغخ(فل

مسعIPم)م اـعممطظممممغخممA

POP BXمعمم POPمظؿظممؿؼ

:

لؿمSS:SPغلممؿؼممظطممعممظم-1

مم

م-2

ممذعممضممؼSPممظ2

ممCممعلفممظؾمPOPFعمم

ممعممضم Aممقل ممؼ.

غامم ؿعاممعام

Aممطامم

ؾظممممة ممم

ممعممعؿظممع

Aمم

Aعاؿمحمم

ممعممظؿظممشممق.مخغم8خغمممم ؿعممعمم16مم ـص

  Push AL ; ILLEGALمم 

لؿكم

معغ مم CممصUser Programمم?مما

ممكؿاد مماؿظممغممؼ

رامم

مم

?اغممكؿادممسمم ـصممسINT 21hماظممؼاكؿ مماؿظمماغمماؼ

ممةممدجسممعممAخممساممغؿا?ممعاممساممغا?مم

ممممفلظممؿك

لاؿكمم اظؿممظاممامممم

ممعاغ ممةاؿؼممممظؿظ ممعغظمم ظممر

فل

.تداؼبطتلامؽ:

ممضاممداؿمم

Aخاممضاممتممؼاممػامم

 @ مم

Aمم ؿممسمم

ممسممؼغمم

ا مLIFOدقؾمم

ممحظممعمممم ? ممؼمم عـممؿ مم?ىممػممممؿدم.

ممظ عـمملسمم ممىممسؾ ممظؿظمملظممممعغظممؼؿ

:  ? this is a test

tset a si siht

ػممع

:  Display „?‟ 

Initialize count to 0Read a character

While Character is not a Carriage return Do push character onto the stack

increment counterRead a character

End_WhileGo to New lineFor count times Do

Pop a character from the stack

Display itEnd_For

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 103/169

لفمم

ممعغظممكؿلؼCXمما مماخCممتمماظمماىمماحمما ممزاؿحظ

ممعممحامم

whileممفال

مممماج

ممايمماسمماؼCXمماطمما

ممممجعممخ

Cمم ممظممؼؿطممظغعممعاممغاممضاممتميممظممتمم

لفمم

مم

Aخممحممظمم ظؿطممعمم

CCXممؼلممم

..MODEL SMALL.STACK 100H.CODEMAIN PROC

; display user promptMOV AH,2MOV DL,'?'INT 21H;initialize character countXOR CX , CX

;read characterMOV AH , 1INT 21H;while character is not a carriage return do

WHILE_:CMP AL , 0DHJE END_WHILEPUSH AXINC CXINT 21HJMP WHILE_

END_WHILE:

MOV AH , 2MOV DL , 0DHINT 21HMOV DL , 0AHINT 21HJCXZ EXIT

TOP:POP DXINT 21HLOOP TOP

EXIT: MOV AH , 4CHINT 21H

MAIN ENDPEND MAIN

ةسػلملPROCEDURES:

ممسممظعممظسممظمم Cممعغظممل ممؿؼممعممؾظممظ ممع غظمم ؿطمس

خمم امظمم لممطؿ ؿممؼممسممػممظاعممظساممطحاممعلاؿمماممعام

ساامم Cممظااطممؿاادمماالؼممظااؿظ ممقااممااممااجمماامماامماز

ممصممدممطممخ

A

دؿكعمممم عمم

.

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 104/169

اممCممساممعاممظاعممظاممةامم

ممالؿ مم Aؾ ممعظمم ؿطممؼرممصممظؿظ

ممظعممظممطؿ ممطممعممسممحممخؿؾمم ممظاممؼاؿممواممػامؼممػ

ؾطممعغ ممؿظممظممعظ

.

حممػممظعممظممػممظغعممظلممػممؼؿمغممظاخممظغاعممؼامم امم

A

ممظممؼممطمعم مم ممغؿ?مم ظممCممظغعممظام?ممظعممظسممخ

سؿد ممضم.مظاظممؿال

ممممعظممظحممصHigh Level Programming Languagesم

عممظممممظممظؿفممممطؿ مم

ممسممممظمم ?ظممسممم?سؿدممعA

CALLممظممع

ARETمسظممعظممعممعؿظممسممدممط

.

ةسػلملسوصتل

Procedure Declaration:

ظؿظمقظمسمسظمعغظمسمؼؿظمؿؼ

: Name PROC type

; Body of the procedureRET

 Name ENDP

ح Nameمممم?جممدممػtypeمععممػOperandمؿظممخؼممؿخ NEAR ممA

FAR ممح NEAR مماع

Aامم

مماغمماخمماعممؿاؼممسظممعغظمم

?غمم

Aم FARمم

Cممممؼؿممطؿ ممذممؼؿممصممAم.مغعممظسممؼؿممعممعممؿصؿممCممغ?ممظ

ظغعممظسممعممظمم

 NEAR 

.ممظغعممظسممظمCمظغعمظمضم دؿسRET(Return)عمم ?غCممCممؼ.مA

كؿد ممؼمم

AممRETممعمغعممصسمممم

 Bسؿادمماضمماظممعغظمم

Cظمم

(

لظممعغظمسمصمم)سظممعغظممممممخ @ ممممسمػممؿؼ.

صا يلملػسة

ظاممم Cممخا

ممؾؿادمماغع Cمماظمم ممAممسصممعغ ممAممسممماس مماؼمم

كجممامماممداؿكمم

ممخ

ممسممطمم

Cممظغعممظممضمم مم

Cظؿفمم

كؿاممAعاممCممطاممسامم

مماسظممعاظمما مما مماؼرممسممؿؼممطعطممفل

مم

Cكجممطؾممغمم

مم

Aخمم

ظؿظممظممممؿضعممؿدممخ

Aمم

رممكؿد

.

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 105/169

ثلملػسة

مم ممغؿ?ممعممطؿ ممظغعممظسممظم ممظؿةممظعممظممحؿممؼلممممAمم

ظمم

Aمم

Cممذكممدؿكممػممظغعممظسمم

Aؼممظؿةممسمضمم دمم

:

م

1-لشلعا

ظزممظممؼمم ممظغعممظسم

كؿممظغعممظسم:خ2-م

ممخ

ممؼ ممصممؿؼ

كؿممظغعممظس:جا-3م

مجك

ممؼ ممصممؿؼ

دتما-4م

عممظسمؼؿمم ممظم

(جمم

)ظممؼممػم

مظغعممظسمم دؿكعمم

.

مRET , CALL:

مم غعممؼؿممدؿكممعمم

CALLظممؿممظممعؾذمم

DIRECTػممساممظقامم

ظؿظ

  CALL name 

ػممدممظغعممظسمممnameحمم

 Bغمم

.ممظممعؾذم

?ظممغ ظـممظIndirectم

ظممسممػ

  CALL address_expression 

ؿممظممممسممظغاعممظساممCALL address - expressionحم

مم Aممفل

ممه

مم

. ممؿؼممسصممعغ مم?غممس

ممػممعممظؿظممReturn addressؼؿممؼممسممظجم-1

مم

ممظغعممظممضمم ظ?مCALLظعمم

لفم-2

ممممسظممعغظممممع

Aمم

Aحمم

Cؼؿممممسمم

ظس ظؿظممؼؿممظؿممCممظممظغعمIPظؿمم

مم غعممصسممغلؿكممعامم

A

ظممعمم

RET

ممخاممساممظجاممعامم

C

ممممصممعلفممظؿممممؼممCممظممظغعممظممضمم ظ?حامم امم

RET Pop_valueممممؼخممظمم

صممعاممظاممAممؼاؿممداقممCPop_value = Nممطغم.مععممخؿمPop_valueحم

م N -Bytesسمم

ممعمص

C.

-:مالنامفسى

مظغعمصسمؼؿمصمحلمحممضامعاجؾم عـمػمدa,bاسمكؿاد ماظ

ظؿظمقظمسمظمعخم محمى

:-

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 106/169

Product = 0Repeat

If LSB of B is 1 thenProduct = Product + A

End_if

Shift left AShift right B

until B = 0

عمسؿمم

م ؿ

111b<A1101b<  Bمنمع

مؾؿ

 product = 0since LSB of B is 1 , product = 0 + 111b = 111b

shift left A: A = 1110bshift right B : B = 110bsince LSB of B is 0 ;shift left A : A=11100b

shift right B : B = 11bsince LSB of B is 1 ; product = 111b + 11100b = 100011b

shift left A : A = 111000bshift right B : B =1bsince LSB of B is 1 , product = 100011b + 111000b = 1011011bshift left A : A = 1110000shift right B : B = 0

since LSB of B is 0 ,return Product = 1011011b = 91dم 

:صممؼممظغعم.MODEL SMALL.STACK 100H

.CODEMAIN PROCCALL MULTIPLYMOV AH,4CHINT 21H

MAIN ENDPMULTIPLY PROC

PUSH AXPUSH BXXOR DX , DX

REPEAT:TEST BX , 1

JZ END_IFADD DX , AXEND_IF:

SHL AX , 1SHR BX , 1JNZ REPEATPOP BXPOP AXRET

MULTIPLY ENDPEND MAIN

لافمم

ممممخ

ممؾؿد مم

?

جممؼممػ

AX

BX

ؼاؿممحلاممحاممظامممم

لفمم

DXم.مفل

ممؿممظممثيممؾوAXBXممعمضAمضممسFFh.

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 107/169

مم داؿكمم

مممعكؿد ممدممظممفل

ممضممؼكؿ ممسصممعغ مم AممممAؾؼ

اممPUSHسممعممAعمم

مماعمماظممظممجدممؿؼمم ?جممسمم?ؿغمم ممة

عمم

Aلافم popدؿكممسممعمم

ممسممصممظماصممافؿظمماج مماؼمماظمم

لفممظغعمممم ظؿظممصممظممظاممظاعممظسامم

مم ممؿؼممممؿحممظ

ػ:NAME PROC

Push AXPush BX

: عمخمج?م  

Pop BXPop AXRET

NAME ENDPوا:

ممممظغعممػم-1

ممؼ ممطمم C.STACK100H

A-م

ممذعممؼؿممػمعSPم

=ذؾعممعغظمم ممؼ مم

-صق

ممظممسممؿهممظؿظممفل

مم AممAX = 1234h , BX = 5678h , CX = 9ABCh , and SP=100hم

لفمم

ممؼؿممSP , CX , BX , AXمعغظممظؿظمم?ىمم مم

PUSH AX

PUSH BXXCHG AX , CX

POP CXPUSH AX

POP BX 

ممػممظضممم-3

ممذعممؼؿمم مم

مؿممعس( SP=0 )م

م

ممممؼجممطممممتم.مفلظممثقدممعSPمممعمم=

.Aممثممظغعم

4

-ممظؿظ

?ىمم ممعغ مم

Aصمم

:  CALL PROC1

MOV AX , BX

:صممAم

م

A-عMOV AX,BXممظممممطظممممؼ08FD:0203

08FD:300hؼممظمم  NearعممظممPROC1ظغع-م

 

-ممسممظم

ممذعممؿSP = 010Ah

لفمم

ممؼؿممػمعSP , IPممعمم ممCALL PROC1ممػمعممذؾع

م

ممضممممج

ممظ

.

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 108/169

5- مم ممؼممعغ ممؿط:

لفم-Aم

مممم

ممضممممج

ممظممAXمم مم

مم

ممؼؿ

.

م

-ممم

ممممغ ظـممظمممفل

CXمم ممؿؼمم

مم

.

غ-جام ظـممظممعمم

ممممممظممؼؿممؾؿد

6-ليمؼظAمؼهممسمؿظمضمكؿدممؼىم

م

ظ„( ) { } [ ] „حمغلؿكمضم

مؿ خمؿعمسمظ

.طؿظ

.عمقمجمضممAمؼمغمطمضمعمغمغم @ خمضمتمصؿقم

ظمظؿظمققم

م ـص  ( A + { B - ( D - E ) + [ A + B ] } ) 

ظمظؿظمشمققم

م

( A + { B - C ] ) 

م

معمطؿظمطملظمعمظ

م ? مغمحم

مكؿد مظ

م

ممظخ

Cجغمضمجؼمؼؿم

.عمؿغعمؿؼم

ش

Cمطمظمػمضم

C

م مCخجمعمصمطغمعمغمظمغمظ?مCممؼم

ممضمخ @ 

مم

Aظمخعمغمظمؼمظم

.

معمضمطمؼ متم

Cمظؼم

ظمشمققم

م م

ممض AمػمزمCمققمظ

م.

طم

مضمعمة ظـمغمسمؿهمظعم

? مؼمعغ مؿط

A.ؿلؼ

ظم

مؿ مؿحمخمعغظؼمحمخمظعمخ مكؿل

مؼم A

ظمخم

م مكؿل

مخ مظيمػممعغظ

.

7-عم

ممسمض Aمظؿظمظؿظمؼظمكؿلغ1ممC32767

-م مضمم

A

.

-ضم حمظضمظلمخغمحمم

.

-غمضمم

مؾؿدؿغ

م

14

15سمXOR 

.

غمم-

مممضظم مض15.

م

مطؿ مج?ممظؿظم

:

م

A-لؼم

CREADفل

ممؼكؿ مؼمكؿل

معمةمضم

AؼمػBX

م

-لؼم

CRANDOM

فل

ممسمؾؿلؼمػ

BX

س مؼسمضم

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 109/169

طم

مع

ملح

لفCWRITEج?مؼل – جام

مؼؿمسؾ مؼمػBX ظـمظم.

م

طؿم غعمؼم ؾسمسعمدؿم

A„?‟?جم

? مؼمة

READضم

يل?WRITEمج?يلمظضمظمةمRANDOMةمةمغ?مج?م

ضمصممظلمظحمع4ضمسممؼؿمرؾس100رؾسم A4 م مشص

س. 

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 110/169

مالصػل

ملضلؼؿة

Multiplication and Division Instructions

م

ظممظلممساممظاضممةاممعاس م داؿكمAؼممممج?ممظل ممسمم

ظمملظممحممعAم.م مم ممظممظممؿ ممدممظممػمم

سعمةممظممشممسAممسمملظممظ.

ممعممذ ممضظممظممسممؿممسممظطممذCمم ممضممظح

حػممظضمم ذاممخامم

Aعممظممظلمم

Aظلمم ظؿظممظؼممغسممعمم

ظضمم ممCذممطظممػممممظؿعممعممAضمم مم

8خغممصاممAخامم

ظؿعممعممAضمم مم

16.خغم

AحممدؿكعممAعممظممظلممػممدؿكعممخممCخممضممممظمم

مم

?طممعممؼؼممممؼظ

.

ضلاؾؿسMUL & IMUL

ذاممصامم

Cممعضممسممظمم ظؿضمم ممظمم ذاممظامم امم

Aؾغ

ممؾدم ظـممضظمممتممCمم ـ

10000000مم11111111ممؼل ممػممؼص

ضظم

.ممػممم

ممصممظؿظ ممذ

Cمم مم ـممضمم

Aظؿلممممػمم

غممػ.م32644ظؾممظ مم255ممظضمم128ظضمم ظـمملؿظممعAممؾسممضممA

ممػممممظاضمم

ممصممذ ممض

Aم128ظؿاؾممظؿفامم-1مظاضم-128سمم

ػاممغؿفاممؿاممعاممساممظؿفاممظاممتممياممساممممظؿلاممم

(32640).

سممسممؿممذ ممضظممظممسمممؿاؼمذCمم ممضظممظمم

ؼع

Aمدؿكمم

:ذممػممعم

CMULممؼلؿكممممسممظممظضمم مم

(Multiply)م.ماػمماذ مماضظمماظممسممممكؿلؼممغ ظـIMUL (Integer

Multiply)م

.خغاممةاممظامم8ممظاضمم امممػممعامم اممظا

خغاممةاممظامم16خغممةممAممظممضمم مم16حممظمم مم

مخغممةم32حممظمم مم

.ظممظعممظعؼممػ

:

ممم

MUL Source IMUL Source&م

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 111/169

ظػمم ممضAمممسممممعممػممعممعؿظمم 8مماغ ظـممغخ

خغم16سممممAضمم مم

ط اقتد8اناخByte Form

لفمم

ممممج

ممضظممممؿؼممح

ALمم

ممممج

ممضظمم

Sourceػمم

Cممعضممممظطم

Aعممؿؼممعلفمم

(ا ةممكؿاد مملعممشم

.)ؼاؿمماؼم

لفم(مخغ16م)ظؿفمم

ممAX.

ط اقتد16اناخWord form

لفمم

ممممج

ممضظممممؿؼممظممػممAXمممممج

ممضظمممػمم

(32ؼؿممؼممظؿفم(.مشممعلمم دؿكممة )CعممعلفممAممعضممممظطمم

غخم

)لفم

مم

AX , DXممامم

AXساممظاممظلامممم

DXسامم

ظا:ظامظلاDX:AX.}ظممظمم ؿممظؿفممسممسممظامم

}ظم

ؼعممكؿدممسممفؿظممغممسممممؾج

ممضممممظحممIMUL, MUL.

ضلمأ ابلثأ

SF, ZF, AF, PFم ؿةم عمظمطمعممظؾمممم

يقبؾلةب لـا ام

Cf/Of :

/متدةلاحMUL

مظمم

ؾظممخ

م0)

)(CF/OF = 0)ممافؿظمماعمماظمماظمماطمم

C

.Cممممثممظم(1)ؼلمممم خممظؾممظمم

/متدةلاحIMUL

ممظم

ؾظممخؼ0(CF/OF = 0)مماؿعمماسمماؾسمماػممظممظمم

C

AممAممطاممخغاممظاممظام)Sign Extensionممظاممظلامذم

معاممظاممظلامMSBلممخغممذامم

)ممظام

اؾظمماخ (1)م

(CF/OF = 1)مظممثممممC.

م

ؾظمم

Aفممطؾمممممطغممظم(1)خممظمCF/OFظلؾممظعؼممغحمم

خغامممم8ممحظممممضمم مم(ALممؼممممظممظلممصمم

AXمم ممضممممظحمم16مغخم

.) ظؿظممممظؿعممعمم ضممظؿفام

ظممظممممج

.

م

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 112/169

م

:مؾة

كؿممػممى?ممدمم د

ممظممسممؿظمم عـمم ممؿ.

م1

/BX = ffffh , AX = 1ممطم

عظ مفؿظفؿظ(سمدد)AXDXCF/OF

MUL BX 655350000ffff ffff 00000

IMULBX

-1Ffffffff Ffff ffff 0

م2

/BX = ffffh, AX=ffffhممطم

عفؿظ(س)فؿظ(سمدد)AXDXCF/OF

MUL BX 4294836225FFFE00010001FFFE1

IMULBX

100000001000100000

م3

/AX = 0fffhممطم

عفؿظ

)فؿظ

(سمدد

)AXDXCF/OF

MUL AX 1676902500ff E00lEoo100ff 1

IMUL

AX

1676902500ff E00lE00100ff 1

م

م4

/CX = ffffh , AX = 0100hممطم

عفؿظ(س)فؿظ(سمدد)AXDXCF/OF

MUL CX 1677696000FFFF00FF0000FF1

IMULCX

-256FFFFFF00FF00FFFF0

ضلمىؾسةط اؼبط:

/م1 ـصممؿممعمملحمظؿظممظ

مملحممغ AممCA = 5 x A - 12 x Bممم

صممثحممسممص مم ممغ

MOV AX,5 ; AX = 5مم 

IMUL A ; AX = 5 *A 

MOV A , AX ; A = 5 *A 

MOV AX,12 ; AX = 12 IMUL B ; AX = 12 x B

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 113/169

SUB A ,AX ; A = 5 x A - 12 x B 

م

حلممعممس/م2

مم

?اج

Cاممػاممطؿ امم

PROCEDURE

ؼلامم

FACTORIAL

م

?اجمماػمماؼ

لافممم Nؼلؿمج?مظمظقم( N)مسمقمعج N!لم

ممCXم

س مم?جممؼعم Nممفل

ممAX(م.صمثحمسمغ)

هعلضموع:

  if N =1 Then N ! = 1

if N > 1 Then N ! = N  (N - 1)  (N - 2)  .....  2  1 

ظؿظممع

مملحممظممؿؼ

PRODUCT = 1

Term = NFor N Times Do

 product = product * termTerm = Term -1

END_For

ظؿظممظممسمم

?جممؾؼ

:FACTORIAL PROC 

; Computes N1 

MOV AX, 1Top: Mul CX

Loop Top

RETFACTORIAL ENDP 

ممؼمملممعممسممظممممؼؿممع مم ?جممػممAممػممح65535م

ظممحممعممعؿظممؿؼمممح

.

DIV , IDIVةملؼؿ

طممممحظممسممظممصممساممظلاممؿاممساممظؿعاممعاممضامم

ذممسممممحظممضمم ممCذممسممظممغلؿكمم

ذممعمم

Cممحظممضمم مم

DIV (Divide)

IDIV (Integer Divide)ممحظممضمم ذممعمم

:ظمظؼمظعؼمط مDIV SourceIDIV Source

ممسممظلممممسممخاممظلاممممعلافمم اضممسامم

Cسمم

خ @ ممفلعمممملظ.

ضمم مظؼمم ممسممدؿكممسممظلمم

A

عمم لؿكمم

C8

م

A

خغمم

:خغممطممؼمA16ضمم مم

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 114/169

ط اقتد8اناخByte form

لافمم

مممماج

ممضاظممالضممؿا ممظممػممAXممؿاؼمما

مماس

ؼممخممظلم

(8م 

)لفم

مم

AL ضممظلم

(8م 

)لافم

مم

AH.

ط اقتد16ةناخWord form

لافمم

مممماج

ممضاظمملضممؿؼممظممػممDX , AX(ماظمماس

DX :AXحDXممظممظمAXملظممظممجم)ما

ممس

لفم

مممملظممخممؼممؿؼAXممفل

مممملظممض DX.

لام

ممضاظممذ

Cذممظؾضممػممغمم

Cمممحظممضمم ذمم مم

C

لاممسامعاجؾمم اممظؿفاممحاممساممداؿكمم

مملممضظممط

IDiv , Div.

ؾظمم مملظممع

Aطممشممعصممم مم

.

ةؿؼلاضفDivide Overflow

ؼؿممظممممسممظلممCممطممخممظلممضممطؾممممممؼمم

ظظممك

ممفل

ممم

.ؼؿممظممسممضلممضممطؾممجممسممضممم

جم.غظممؼممظيممػممما ممظادمماسؾ مماظممؼمم?ؿغ مم

م”" Divide Overflowثممصممضلمم

.

امم:مطممCBX = 0002 , A x =0005 , DX = 0000

علظممخ(س)لظممض(س)AXDX

Div BX 2100020001

IDIV BX2100020001

ام

:طم

Cمم

BX = FFFEh , AX = 0005 , DX = 0000

علظممخ

)لظممض

)AXDX

Div B x 0500000005

Idiv B x-21FffE0001

ام

:مطمم

CBX = 0002h , AX = fffbh , DX = ffffh

علظممخ

)لظممض

)AXDX

Div B x 

صضظملضمسم

fffffffbh

س

2 ظ

(7ffffffeh

)مؼهم

AX

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 115/169

Idiv B x-2-1FffEFfff 

ام:BL = Ffh , AX = 00fBh

علظممخ

)لظممض

)ALAH

Div B L 02510FB

Idiv B LDivide overflowلظمخم(لؼ-25)مؼممAL

ؼاذوSign Extension of Dividend

1

/ط اقتدةلاح

16ناخ

لفمم

ممممجعممل

ممؼDX , AXمممماصممؼممممضظممطممظممؿح

لفمم

AXممفل

ممصممػممسDXممظؿظممقظممسممو

:

لفمم0ؼؿممممظضممDivسممدؿكممعم.1

ممDX

2.لفممIDIVسممدؿكممعم

ممممغ

ممطمم مم

AمDXمم

لافمم

مممماذممغخممضممAX(مممضاظمماطمماظممAAXم

عجممؼؿممممظضمم

0

لفمم

مم

DX

ظممطممظضمممم

AX

دظمم

لفممffffhؼؿممممظضمم

ممDXم)معممؿلغممظممظCWD

(convert word to Double word.اذCماؼؿظم ـ

ALCAHؿالغ

CBW (Convert Byte to Word)عم

ام:ملض- 1250ممس7

MOV AX , -1250 

CWD ; prepare DX 

MOV BX , 7

IDIV BX:خاخقالعشوة

مطمضمخمظؾ مؼؿمسامامAضامةامCمAمظؿم ـمAمشاظماعماع

مضم ظم

?ضمطم

?ىمػممؿدمؼظمظممض مؿؼم

Aجمؼم

ؼسمممذظممؿسؾرمطمؼظ.

غمدلمحم

Aخمسم

مؾؿلؼمعغظمصم

محظممضم ؿطمسمخم

زمظضمظمتمCخظ ظؿظ

م ظـمضظميمؼهم Aمم.اظحممظط

زممظمظمرؾسؿممظذم

ميم

Cم ظـمضظمؼهمؿؼمحمخ

.

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 116/169

ةوشعلاقةسابرDecimal Output

لفoutdecدؿمػم ؿ مAج?مؼلم

مؼؿمسؾظمAXفال

مؿحم Cم

AXعسمسؾ مدمظدمضمس

(-)فل

مؾؿدمؿؼمةAXظ

-AX(مؿمح

AXسمضمعجؾ

)فل

مؼؿمسؾظمظمؼهمظؿظ

AXؼظمظممذظمسمجعمضممظع

مػمػ

.1- If AX < 02 - print a minus sign

3- Replace AX By its two‟s complement4- End-if

5- Get the digits in AX‟s decimal representation 6- Convert these digits to characters and print them 

طت ؼ دـ

5مة

فل

مطم

Cحم

AXضاظمزاؼمةمض

ظذمؼم ظمظم ؾسمػمظضمم3567

7ظؾض356ؼؿ10س3567ضلم

6ظؾض 35ؼؿ10سم356ضلم

5ظؾضمم3ؼؿم10سم35ضلم

مرؾسؿمػم ضمظلمسمظضم

مغ

مصمػمس10اؾ ماظماعمطم

مؼمؿؼم

مػميمع

م

stack امفالعممػا مزؿحمؿؼ

countع

مػمػ.count = 0

RepeatDivide quotient by 10Push remainder on the stackcount = count + 1

Until quotient = 0

مظلم

مؿ مظمح(quotient)فل

ممج

مضظمػAXاغمظا

م

6

مممتمظمضمقدمؿؼمصمع

م

(ماجعماػمػس

ؿم

count)ذظممؿسؾرمؿ مضمطمقدم .

عمظؿظم

ملحمظ

For count times doPop a digit from the stackConvert it to a characterOutput the character

End_For

مطعم مظؿفمسمظقمظؿظم

?جمؾؼمػمس

:

OUTDEC PROC; Prints AX as a signed decimal integer

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 117/169

; input : AX; Output : None

PUSH AXPUSH BXPUSH CXPUSH DX;if AX < 0OR AX , AXJGE @END_IF1;ThenPUSH AXMOV DL , '-'MOV AH,2INT 21HPOP AXNEG AX

@END_IF1:XOR CX , CX ;Get Decimal DigitMOV BX , 10D

@REPEAT1:XOR DX , DXDIV BXPUSH DXINC CXOR AX , AXJNE @REPEAT1;Convert Digits to characters and print themMOV AH , 2

@PRINT_LOOP:POP DXOR DL , 30HINT 21HLOOP @PRINT_LOOPPOP DXPOP CXPOP BXPOP AXRET

OUTDEC ENDP

مظامامظغاعمظاoutdecمطؿ مج?م

مسمعمؿمعمم لظ

م

?جم مد

.?جمم

?سؿدمم

مظم

outdecخممظامظمم

Aمؼؿمم

Assembler ماؼمكؿاد مماظممؿاؼمماخ

 @ ممعجاممممعامم

?اج

Cمم

اػمما

Includeمظممخؼممػ.Include FilespecمحFilespecممظمم

ممدممػ

?جممم.ماظممؼممظممسAssembler مممم

ممظممؿم?اجممسممقؾظ

خ مم

.

ممCممتممحممج?مم ـصOUTDECمماAمماعمممم لظPRocfile.ASMمما

ظؿظممقظممسممعغ ممعمم

?

جمم

?

غ

:.MODEL SMALL

.STACK 100h

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 118/169

.CODEMAIN PROC

MOV AX , 1234CALL OUTDECMOV AH, 4Ch

INT 21hMAIN ENDP

INCLUDE PROCFILE.ASM

END Main

ةوشعلاقءقDecimal Input

ؼظممضمم?ظممايممؼقؿظممؿASCIIمما ظـمماظمممماحمماظ

فدممممظممػمموممؼظممغكظممز

م.عغظممعخممؿ ممد.Total = 0Read an ASCII Digit

RepeatConvert character to a Binary value

Total = total* l0 + valueRead a character

Until character is a carriage return

خممػممظضمم

ممغطمم

Cمم ـص157مظؿظممقظممسممع

مم ممد

:

Total = 0 

Read “1”

Convert “1” to 1Total = 10 x 0 + 1 = 1

Read “5”Convent “5” to “5”Total = 1 x 10 + 5 = 15

Read “7”Convent “7” to 7

Total = 15 x 10 + 7 = 157

مؼلامم

?اج

Cعممظل ممامممم

ممؼؿ مم

AممINDECدمم

?اجمماؼ

ممحظممعممسممضمم ?ضممةممؿدممعسمسؾم.اذ ممضظممAؾؼممض-

مم

A+م

.ممحؿممظضممسممخغممشممساؼم

C(ؼمممماحما مم0مم9م

)ؼام

ؼجممعمم?ظ ممعغظم.خممؿعممسممظ ممضظممؿؼ.

Print “?” Total = 0 Negative = False

Read a characterCase character of

“- “ : Negative = TrueRead a character

“+“  : Read a characterEnd_CaseRepeat

if character is not between “0” and “9” then GO TO Beginning

Elseconvert character to a Binary value

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 119/169

total = 10 * total + valueEnd ifRead a character

Until character is a carriage returnIF negative = True then

Total = -totalEnd_if

:ؼؾمظغعم مظؿفمط مINDEC PROC; Reads a number in range -32768 to 32767; input : None; Output : AX = Binary equivalent Of Number

PUSH BXPUSH CXPUSH DX

@BEGIN: MOV AH , 2MOV DL , '?'INT 21HXOR BX , BX ; total =0XOR CX , CX;Read A CharacterMOV AH , 1INT 21H;Case Char ofCMP AL ,'-'JE @MINUSCMP AL , '+'JE @PLUSJMP @REPEAT2

@MINUS: MOV CX , 1@PLUS: INT 21H@REPEAT2:;If Character Between 0 AND 9

CMP AL , '0'JNGE @NOT_DIGITCMP AL , '9'JNLE @NOT_DIGIT; Convert Character To DigitAND AX ,000FHPUSH AX; TOTAL = TOTAL * 10 + DIGITMOV AX , 10 ;Get 10MUL BX ;AX = TOTAL * 10POP BX ;RETRIEVE DIGITADD BX , AX ; TOTAL = TOTAL*10+DIGIT

;Read A CharacterMOV AH , 1INT 21HCMP AL,0DHJNE @REPEAT2MOV AX , BXOR CX , CXJE @EXITNEG AX

@EXIT: POP DXPOP CXPOP BXRET

@NOT_DIGIT:MOV AH , 2

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 120/169

  MOV DL , 0DHINT 21HMOV DL , 0AHINT 21HJMP @BEGIN

INDEC ENDP

م

مم

ممممممؿؼمم ?جممؾؿخمم procfile. ASMمم?جممعOutDecممغممة

مم

?اغممؿاؼمماحممظؿظممقظممسممؼ

?جمم

? ممؼممممظممعغظمم ؿ

لافممINDECج?مم

مممما س Cممسممضمم?ظAXمممػام?اغممؿاؼمماذؾ

لاافممOUTdecجاا?مم

ممممااج

ممضااظممااسؾظAXممااسممؼااظممااظمم

ذظ.

 

TITLE DECIMAL: READ AND WRITE A DECIMAL NUMBER.MODEL SMALL.STACK 100H.CODEMAIN PROC

;INPUT A NUMBERCALL INDECPUSH AX;MOVE CURSOR TO NEXT LINEMOV AH , 2MOV DL , 0DH

INT 21HMOV DL , 0AHINT 21H;OUTPUT A NUMBERPOP AXCALL OUTDEC;EXITMOV AH,4CHINT 21H

MAIN ENDPINCLUDE PROCFILE.ASMEND MAIN 

اضػل

Overflow

مم

?جممؼIndecمم

ممضممعممعؿظ

(ظممهؿممساممخغاممشام

ؼسم)مفال

ممؿلؼممممظممؾظممضممعممعؿؼممممظAXممA

م)ؼلمم

ممخممض-32768ممC32767م.)ماػمماخممضاظمماطممC

مم

مخCممصممثInput Overflow.

ؼع

Aمضممثممػممظممسمم مم

:

اؿمم

مماممسtotalم

10م

لان

سممممظممىؼممظؿمم

total.

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 121/169

لؿكمم خممظاضمم

ممؼممضممظممظيممؿظ99999ممثامماح

لاؿكمم10مم9999سممممظضمظم

مماخمم Cممغ ظـممظيممعA

ممظضمم9ثممظممسممممظضمم32769ظضمم

C32760ممطؿظمم

ظؿظممظممسممؾؿظممع

ممؼ ممظممع

Print “?” 

Total = 0

 Negative = falseRead a character  case character of

“-“  : Negative = TrueRead a character

“+“  : Read a character

End_Case Repeat

If character is not between “ 0 “ & “ 9 “ then GO TO Beginning

Else

Convert character to a valueTotal = 10 x totalIf overflow then

go to BeginningElse

Total = total + valueIf overflow then

Go To BeginningEnd_If

End_IfendifRead a character

Until character is a carriage return

If Negative = True thenTotal = - total

End_if

وا:

/لفم

ممؼؿمم

DX , AXمم

ؾظممظط

CF/OFمم ممطممعمم م

:Aم/معMUL BXممطممCBX = 0003h , AX = 0008h

مم/معMUL BXمطممCBX = 1000h , AX = 00ffh

م/IMUL CXممطممCCX = FFFFh , AX = 0005h

مم/MOL wordممطممCword = FFFFh , AX = 8000h

ػا

/MUL 10hممطمم

CAX = FFE0h

2

م

/

لفم

ممؼؿمم

AX

مم

ؾظ

Cf/of 

مم ممطممعممعممظؿظم

:

A/BL = 10h , AL = ABhممطممMUL BLعم

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 122/169

/معTMUL BLممطممBL = 10h , AL = ABh

/معMUL AhممطممAX = 01ABh

م

/Byte1 = Fbh , AL = 02hممطIMUL Byte1عم

3

/يؾاوت

DX , AXةلاتلمػـ سـاضفح

:

/ممطممDiv BXعم

CB x = 0002h, AX = 0007 , DX = 0000h

/معDiv BXممطممCB x = 0010h , AX = FFFEh , DX = 0000h

م

/عIDIV BXطمم

CBX = 0003h , AX = fffch , DX = ffffh

م/معDiv BXمطممCBX = 0003h , AX = fffch , DX = ffffh

4/يؾاوتAH , ALfu]لاتلممكػ ـ:

/DIV BLممطمم

DL = 03h , AX = 000Dh

م/Idiv BLممطممBL = Ffh , AX = FFFBh

م

/Div BLمممممطممBL = 10h , AX = 00ffh

م/Div BLمممطBL = 02h , AX = FFE0h

5/اوتDXمػ ـ عCWDاكAXلاتلاق:

Aم/7E02مم/8ABChممم/1ABCh

6

/

اوت

AX

ػم ـ ع

CBW

اك

AL

لاتلاق

:

/80hممم/5Fhمم/F0hمAم

7/ ابتسا ةلاتلاعمكاؼوؿتلةغؾ مان مءجتك

غتC , B , A لـمWordاضفجون

a- A = 5 x A - 7 b- B = (A - B ) * (B - 10)

c- A = 6 - 9 * Ad- if A2  + B2  = C2  then 

set cf

elseclear cf

end_if

مل

ظاممتممOutdec , IndecحاممAمم اممػاممظاعمم اممداؿكممجا?م

ظممػممممؿ ؿط

.

ظمم ظؿطممعممحثممصمINDECضمم ؿؼممج?م/م8

م9

/غم ظـا ممعاظمماخ ممكؿال

ممال ممؼممعغ ممؿط

A(م65535حؿام

)ؼام

غ ظـممضظممسلظ ممعظممسؾ ممعغظمؾدعممظدممع.

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 123/169

م

م

م10

/ممطلاممساممظام

?ا مماؼممعاغ مما ؿ ممض(M/N)مماحM < Nمماؼ

ظؿظممع

مملحممظممسمملطممممممفؿظممسؾ ممعغظ

:1. Print “.”2. Divide 10 x M By N , getting Quotient Q & Remainder R  

3. Print Q4. Replace M By R & go to step 2

مم

?جممكؿدINDECممضظمم

?ظ N , M

اممطام/م11

ممادظممالمماؼممعاغ مماؿط A(GCD) Greatest common

DivisorممققM , Nمظؿظممع

مملحممظ

.

Divide M by N , getting Quotient (1) and remainder RIf R = 0 , stop N is the GCD of M and N

If R <> 0 , Replace M by N by R and Repeat step 1

032

 

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 124/169

داتلصػل

نةتؾػة عـلرافػص

Arrays and addressing Modes

جمم

?ظممؿممضمم ـصممسممم

ممفؿظممؿممؾؿظمم ممظمم

ؿممؼلممسممظممػميظم

ممعممسممؼ ممممظيممػمممممعم

عمؼم ظؿعمعمطمظممظلؾمغفممظؿفممػممظجمممعمم غ م ؿطمؼ

ظممسممػممسممسم.امماؼظم مادظممكؿاد مما

مماعمماعؿظ

ممؼؿممظممسممرؼمم

مممم

Aؿدمم

مم

Cمم

Aمم

ممسممممممظؿظ

ممظمم ?جCممظAممعمم

مملع.

كؿممةممغ

ممص

ممؼ ممطممدممظممػمماظمماؿك

مغظممممؿ

عغظممم

ممسممؾرك

ممممؿقدم.م

ممؼ ممؼرممسممؿ ممة

حلعبلافػصDimensional Arrays-Oneم

مم مم

?ممؾ عممظممعممسممسممؾسممػمم

مظممػمم ممضممطظ

سؾممسممحمم

BytesAWordsممم

اممػام.مAممAممغمم @ خم

ممادمماطممص

 Aم

ممػمم

ممسممص

 A[1]مم

 A[2]مم

 A[3].... A[N]حمم

Nامم

مماسممسممػ

ممظؿؼممعممعاممياممامضمم صممد ممسممطمم ؼمم ـصمم

Msg

م

ؼؿظممكؿلغ

  MSG DB “ABCDE” 

حممؼؿممؼم

MSG[1] = Aم

MSG[2] = (B)ػمم

.

دم(مطممسممؼممخغؿمممظط)ظؿؼممعممعممظمم

 Aغلؿكممظؿؼام

:ظؿظم  A DW 10,20,30,40,50,60

 

حمؼؿمظمم ؼممعمم مم

5خغممطممخغممسؾممسممطمم

Wordمم ؿم

 A[1] = 10

 A[2] = 20

 A[3] = 30

 A[4] = 40

 A[5] = 50

مم ظممددممظمم

ممسمملؼ

Base Address of the arrayهؼممػممؼؿ

ممCممطممسممحممظممم ـصممطظممCممعغظمهممسممظ

 Aػاممظامم

0200hممسممظقممظؿظم

ممذممؼ

:

مل عـلحةؿقشعلاظ لـاوت

 A0200h10 A + 2h0202h20

 A + 4h0204h30 A + 6h0206h40

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 125/169

 A + 8h0208h50

ثؤ

DUP (Duplicate)

ةمم

ممكؿلؼ

Dupظؿؼممعمم ممعممظمم خممطممغممظمم ؿممؼمم

ظممس

.ممم

Repeat_Count Dup (value)

ةمم

ممؼ

Dupؿممظمم

valueممؼلمم

ممعمم

Repeat_countم عـ

:

ممم

GAMMA DW 100 Dup (0)

ػممؼؿمم ؼممعمم دمم

GAMMAؿممسمم

100سممطمسمسؾممسامم

Wordم

ممضمم ؿمم

0مم @ خم ـطممظممطم.

ممم

DELTA DB 60 Dup (?)

ممعمم دمحممؼؿمم ؼ

Deltaؼؿممعمم

60سممحمم

ByteسمممAمضام

ؿمظم

عمػمؿؼمظطمسمظم

lineظؿظمظمسمؼ مسمظ:

  Line DB 5 , 4 , 3 DUP ( 2 , 3 DUP ( 0 ) , 1 )ظؿظمؼؿظم عـ

 

Line DB 5 , 4 , 2,0,0,0,1,2,0,0,0,1,2,0,0,0,1 ؼ مظؿؼمممم

اصػفة سـقم

ممعممظممددممظاممػاممساممظامممم

Aؿ ممطظممم

ممؼمم

Aؾؼ

اممصاممطغامم

مماسمماسغممسممؿؼممغ ظـممظممسممؼ

Byteؼاممػامم

مددمم

+1ممطغمم

Cعمم

AWordاغممػاممظاممددامم ظـمماظمماسممؼم

+2م

ػممسعممCممطغمم

ممسممرممػم(S =1ممطغممظممسؾممسم CByte

م

S = 2ممطغممظممسؾممسمم

CWordم

)ممساممظام

Nػاممظاممددامم

+( N - 1) * Sمظمممم

مم ـص

 Aممد ممؼممصممسممظمم

Nػمم

 A +

(N - 1) S

ام

:دؿؾممظؼممضم

10ضمم

25مم

م

Wحم

W DW 100 Dup (?)

ظممسممػممذظمم

W + (10 - 1 ) * 2 = W + 9 x 2 = W + 18

سممظمم

25ػممممم

W + (25 - 1) * 2 = W + 24 x 2 = W + 48

ػممعغظممؼممظؿظ

  MOV AX , W + 18 

XCHC A x , W + 48 

MOV W + 18 , A x 

م

م

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 126/169

ممعممظؿؾمم طـمطمم

ممسممعممعؿظممؿم.مامماCمماغAممCمم عـ

مم

ممس

 Aاسما مظ

Nماطمماحمماخمماظمماؾرك

مماؿمماغصماس

ظؿظممع

:

  Sum = 0 M = 0

 

RepeatSum = sum + A [M]

 

M = M + 1Until M = N

اممظامم داؿكممعذاممامم امم

ممسمم مم قؿظممؼظممؿممظممظ

كؿامم

مماغظمم

ارمماؿ ممظاؿظمم

?اىمممادممظاظممايمماخمماعممطممؿض

عكؿل

.

اةن عـل

ADDRESSING MODES

رؼممدؿكممععممعمم لمم ممظغممضمم عممد ممعاممةةاممAاممؿامم

ػممغظ:

1/Register Mode

عـممص

ممفل

ممح Aممكؿدممؿؼممص

ممم

MOV A x , B

2/ؾلؿ لـ

Immediate Mode

عـممعبمم ظـممكؿدممؿؼممص

ممم

MOV A x , 5

عاامم

ممااػ

 Axؼؿااممسغااممعااممظاامم

Register عاامم

5ؼؿااممعااممظااممظقاام

Immediate

3/ذابؿ لـ

Direct Mode

مم عـممؿ

ممح Aمع

ممؼممح

MOV Ax , Words

عمم

ممح

Wordsسؾممسممسممعؾذم

ظؿظمم

?جمممسممثقؿظ ممدممخ

Aمم

A مم

Aمم

ػ

:

4/ؿؾلذابمغلتدا ةن عـلRegister Indirect Mode.

Aممم

ممطظممسمؼهممػممؿؼمفل

ممح

 SI

ABXمم

ADIمم

ABPسممػامم

لفممAغممعذمم

ممؿؼ

Pointer عممخممعممسامم

ممممؿؼممؿؾرمم

ممظ

ظؿظممظ

:

ممم

[Register]

لفمم

DI , SI , BXظممظؼممخممعممظؾغمم

DSلفمم

BPظاممم

Cؼامم

مم

ممعممخممؼظ

SS.

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 127/169

ام:

CSI = 0100hممطممظمممظمم

0100hمظؾغممهؿممساممظاضمم

1234hاص

عم

 

MOV AX , [SI] 

خممظمم

Aؼؿمم

100hلفمم

ممع

SIهؼممظمم

DS: 0100جاممةمم

ممظممخ

A

ظضم)ظممظمم

1234hلفم(م

ممم

 AX(مA AX = 1234hػمم ظؾممشممع(م

ممم

MOV AX , SI

ظممؼمم ممظضمم

0100hلفمم

م

 AX

ام:

مم

Aصمم

DI = 3000h , SI = 2000h , BX = 1000hممظطمم

Aمعمممظؿظممظممه

ظؾغمممحمم

1000hؼجممظضمم

1BACHمحمم

2000hؼجممظضمم

20FEhم

حمم

3000hؼجممظضمم

031Dhسممعمظؾغم

Aمحم

Aحم

Data Segmentم

.

ققمغAمعمعمؼAمح.مظيمػممغمؿؼمظم:

م

A-MOV BX, [BX]م

-MOV CX, [SI]

-MOV BX, [AX]جا- ADD [SI] [DI]م

-INC [DI]ػام

:

م

A-MOV BX, [BX]

ؼؿممممظضمم

1BACh

لفمم

م

BX

-MOV CX, [SI]مؼؿممممظضمم

20FEhلفمم

م

CX

جام

 –MOV BX, [AX]لفمم

ممكؿدممممممخ

 AXمظغممظممعؾذم

.

- ADD [DI], [SI]مخممممممممؿؼممسؼمممظطمم عممحم

ػا

/INC [DI]ممؿؼممظطمممحمم

Cؼؿممممظضممحمم

3000hظؿاؾممظامم

031Ehجم

ام:ظمظمظممممؼممعغ ممعمم

?جممؿط

AWلفمم

م

 AXممطم

C

مم

W DW 10,20,30,40,50,60,70,80,90,100

:

لفمم

ممكؿدممؿؼ

SIطذممممظممممصمم اممظامممخاممحاممؼاؿممضا?مم

ممممظضمظممة

(ممسؾممسممطم

ممسمم

Wordم

)لفم

ممظ

CSIطامم

ؼ:

  XOR AX , AX 

LEA SI , WMOV CX , 10

 ADDNOS :  ADD AX , [SI]

 

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 128/169

  ADD SI ,2LOOP ADDNOS 

ام

:ممؼلم

Cطؿمم

AREVERSEعممعممعمظممؼمم مم

Nسمطم

Words(ػممخظمم لظممظممعممغ ظـممخممعممممظممؼؿ ممظ.)

:ممطم

CNاممؼاؿمم امميامم

ممسممسممػ

N/2عامممطاممعاممؼاؿمم

ظمم

Cحػممؼمم

Aلفمدؿؾممسؼمم

S1لافمم

مماظ

Cغممؼامم ظـ

D1ظاممظامم

لفمم

ممجمم

SIلافمم

مم

مممسمم AممCممؼ

DI.مؼاممCمم @ خاممسامم

لفمم

مموممسممؿؼمميممخ

DI , SIظممممظاضمم

2لافمم

مم

CSIرامم

ظضمم

2لفمم

ممع

DIممػممطم)م

ممسممممظ

Words.)REVERSE PROC 

; عممسممس

 

; Inputs : SI ظممحممسممممؼ

 

; BX

ممسممس  

; Outputs : SI لسمم مم

مظ Cمؼ

 

Push AX 

Push BX 

Push CX 

Push SI 

Push DI 

; D1 ؼمممم @ خممسمم

 

Mov DI , SI 

Mov Cx , Bx ; Cx = n 

Dec BX ; Bx = n - SSHL BX , 1 

ADD DI , Bx ; DI = SI + 2 (n - 1)ShR Cx , 1 ; Cx = n/2

XCHG_Loop:Mov AX , [SI] XCHC AX , [DI]

 

Mov [SI], AXADD SI ,2 

Sub DI , 2Loop XCHg_Loop

Pop DI 

Pop SI 

Pop CXPop BX 

Pop AX 

RETREVERSE ENDP

 

5

/ةدادةدػن عـلا

Indexed and Based Addressing modesم

مػممممؼؿممCصممسممؼلمم حمم

Displacementلافممضامم امم

مماؼؿ

ظؿظممظممحAممحمحمم

 A.سؾممسممعؿممتمم ؼم

-ممم عـممؿ

ممحممض

 A

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 129/169

ممم- عـممؿ ةممض

2

اممم- عـماذ ممؿ ةممضممممص ممؿ

ممحممض

 A + 2ؼخاممػاممظامم

حممظمظؿظم

C:

[ Register +Displacement ][ Displacement + Register ][ Register ] +DisplacementDisplacement + [ Register ]Displacement [ Register ]

لفم

مح AمؼمAممفل

BX

BP

SI

DIفل

مح Aمكؿدمتم CBXASI

م

ADIفل

مص

DSمتم

Cعم

م

مظ

Cلفؼم

مكؿ

BPفال

ماص

SSاؼ

م

مظ C.

لفم

مكؿدمتم

CBXفل

م

ABPؼلمظم ا

Basedمؼلمظم ا

Indexed

Cلفم

مكؿدمت

SIفل

م ADI.

ؿم

مطم

Cممظم ـط

Wىمعمعمسمؾس

Word Arrayم

Aفل

BXضاظم

4ظ مطظممج

مظم مؼمظؿظمعمص

W + 4لفم

م

 AX

  MOV AX , W [ BX] 

ظمغم مظمظؿظمظمح معم ؿطمم

ممظ ظـمظمػمػ:  MOV AX , [ W + BX ]

MOV AX , [ BX + W ]

MOV AX , W +[ BX ]MOV AX , [ BX ] + w

لفم

م Aمصمخ @ م ـط

SIعمؼ مسمسمؿ

Wىمع

Word Array.اعمA

جم ظم

مغ ظـمظمؼؿم مؼمظؿظمع

W + 2لفم

م

 AX:

  MOV AX , [ SI + 2 ]MOV AX , [ 2 + SI ]

 

MOV AX , 2 + [ SI ] MOV AX , [ SI ] + 2

 

MOV AX , 2 [ SI ] 

ام

مظغمددA(طؿمم

م ؿلع)ما

ممسممممؼممعغ ممعمم ?ج

Wلافمم

م

AXممطم

Cمم

:W DW 10,20,30,40,50,60,70,80,90,100

:

  XOR AX , AXXOR BX , BXMOV CX , 10

ADDNOS:ADD AX , w [ BX ]

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 130/169

  ADD BX , 2LOOP ADDNOS 

ظلف2ؼؿمCصمظضم

SIاطما ما

م Aماحمظاؿظماظماقؿظ

Words

ام

ؿم

م Aمص

 Alphaظؿظمقظمسمع:

 ALPHA DW 0123h, 0456h, 0789h, 0abcdh 

لفم مظ

م Aظؿظم:BX = 2SI =4, DI = 1ضاظما مطاظمA1084h

احم

0002ضظم

2BAChحم

0004.

ؼمعمعمظؿظمقمCمطمعمقممسمحمظمظضمظمتمظؿعم Aم

ظؿظميمعمطممع

:

a. MOV AX , [ALPHA + BX ]b. MOV BX , [ BX+ 2 ]c. MOV CX , ALPHA [ SI ]d. MOV AX , -2 [ SI ]e. MOV BX , [ALPHA + 3 + DI ]f. MOV AX , [ BX ] 2g. ADD BX , [ALPHA + AX ]

:

ؤلح سـاعلةؿؼل

 A 

 APLPHA +2 

0456h 

2 + 2 = 4 

2BACh  C

 

 ALPHA + 4 

0789h 

D -2 + 4 = 2 1084h 

E  ALPHA + 3 + 1 0789h 

معؿم ؼمشمقق

فل

مكؿدمم

 AXػ

م

ماع

PTRاعو

LABEL:

ع

ممؼمم ـصممظممغممعممغؼمم Aمممعظممع

مم Aممؾدممصممغطمظممعمم

يمم

Byteعممسؾممسمضممة ممؼمممم ؿلم.AWORDممعممظم

ممطمم C

ممظؿظممسممAغممسؾممسمم ـ

ممم ظـممضظممعممعؿظمؿؼمم ـصممغ ظـممع

ممغمملح

عؿممعممظم

WORD.

  MOV AX , 1 

ممظؿظممسممغممعؿممحم ظـممعممعؿظممؿؼمم

Byte

  MOV AL , 1 

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 131/169

ظؿظممعممعممعؿظمممممظ

MOV [ BX ] , 1 

م

لؿممشممعممػممػم

ممممظ

word

AByte

. ممسممAغممعممظم ظـممؼممؿظ

Byteعغلؿكم

MOV BYTE PTR [ BX ] , 1 

ممسممAغممعممظم ظـممؼممؿظ

WORDغلؿكممع

MOV WORD PTR [ BX ] , 1 

م

ام:ملؼمؿعممميممؾؿد

MSGيم

“T”

:

ةؼوطل:

لفمدؿكممرؼممظغممظممعؾذ

مكؿد مم

Register indirect mode

 

LEA SI, MsgMOV BYTE PTR [SI], „T‟

 م

دم:لطوؼةلانة

ممغظممكؿد

Index Mod

  XOR SI, SI MOV mSG[ SI ] , „T‟

 

عمم

ممكؿدممػممممش

PTR

م

A

حمم

Msg

سؾممسممعؿممحم

م

تد

PTRغتموع اس:

ممدؿكمم

PTR:سمم ؼمعؿمتم ؼممعممضؾممظممظعممػم

 

Type PTR Address_Expression مممم

حمم

Typeػمم

ByteAWORDمم

ADwordمممم

 Address_Expressionمم

DBADWمم

م

مم

ADD

ظؿظممؼؿظمممؼظمطم

Cمم ـص

DOLLARS DB 1Ah 

CENTS DB 52h 

اؿمم

مماؼؿممممغ

Aمم

CDollarsلافمم

مم

 ALاؿمممم

Centsلافمم

مم

 AHم

ظممؿلغمظممحممعAممكؿد

MOV AX , DOLLARS ; ILLEGAL 

ممسؾممسمم

مم Aممح

Byteلؿممسؾمم

مم

WordظمماممCساممطؿ اممعامم

ظؿظممظممس

MOV AX ,word PTR DOLLARS ; AL=DOLLARS , AH =Cents 

دؿممممظضمم

521Ahلفمم

مم

 AX

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 132/169

ماع

BELLA:

عمم

ممكؿد ممػممغممؿخممعممحمم

LABELممممدؿكممسامم ـص

ظؿظ

:

WORDLABELMONEY1AhDBDOLLARS52hDBCENTS

ااؿمم

ممكؿاالؼممظااؿظ

MONEYسااممغااممعااممظاامم

Wordااؿؼمم

DOLLARSمم

CENTSسممعؿممعممظمسؾم

Byte ظؿظممؼؾممعممظؿظممقق.مم

MOV Ax , Money

ؼعممة ممغممظ

MOV AL , DOLLARS 

MOV AH , CENTS

ل

 ات

 ا

:

.DATAA DW 1234HB LABEL BYTE

DW 5678HC LABEL WORDC1 DB 9AHC2 DB 0BCH 

ظؿظممقظممسممعمم:

قلمزؾملؼ ـانابل 1MOV AX , Bقممشغمم

2MOV AH , Bق

78h

3MOV CX , Cق

0BC9Ah

4MOV BX , WORD PTR Bق

5678h

5MOV DL , BYTE PTR Cق

9Ah

6MOV AX , WORD PTR C1

ق

0BC9AH

طؼاSegment Override

لافمم

ممكؿد ممذؾعممظممغظمممم

Registersلافم

مكؿال

BXSIم

DIم

ظغمممخممعممظؾغمم

DSلفممظؿقؼمممساؼممممعامممدؿكممػمم.م

ظؿظممقظممسممظممخ

 @ :  Segment_Register : [ Pointer_Register] 

ممعمم عـ

MOV Ax , ES : [SI]

مم

 

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 133/169

مم

ممممطظممممغؾظمظممؼ

ESحم

SIلفمم

ممظ C AX لؿممػممظؼمم

ممغممظؾغممعممعممخمم مممم عـممضظممغممممعممعمم طـAممممغ ممؾر

طظ

.

ؽللAccessing the Stack:

لفمم

مم

Aطغمم

BPامم

ممفالعمماعممكؿالؼ

SSامم

مماعمماعمماركؿظمماظ

ظؿظممممض?مم

ممغ.

ام

:

لفمم

ممم

ممغخممثةممس

Aغممؿؼمم

ACX , B X , AXممممظامممم

ممؼؿمم مم

.

:

MOV BP , SPMOV AX , [ BP]

 

MOV BX , [ BP + 2] 

MOV CX , [ BP + 4] 

بط:ػصم :

ممسؼممظ ممؿؼممعمم

رممظػم

.ممػاممرؼام

اظمماػمماح

Cغؿاممػامم

ظ مم خؿمم

Select Sort

ظ ممعمم مم

Nسممؼؿممظممسممظقممظؿظم

ل:معمظمممطممظممجA A [1 ]C A [N]ظمم

ضمم دؿؾظممعاممظامممم

 A [N] ظؿظممدؿقؿممظ ممظممعمم

Iظمم

CN - 1

A A [ 1 ]جممظممطممممظمعممم:لانةC A [N - 1]ظامم

عامضامم داؿؾظممم

ظمم

 A [N-1]ممعم ظؿظممدؿقؿممظ ممظم

Iظمم

CN - 2م

1-N:مممعمظممممطممظممجA A [I ]C A [2]ظمم

عممظامضمم دؿؾظممم

 A [1] م مسمظ مضمطؿم

ظممسممظؿظممىمم ؿد:

ض

12345

ظم

A

ظؾغم

21516407

مم

21516740

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 134/169

غ ظـمم

75162140

ظـ ظـمم

75162140

ظمم

57162140

مم

ظؿظممقظممسممع

مم

:

i = N 

For N - 1 Times Do 

Find the position K of the Largest element among A [1] .. A [ I ]SWAP A [K] and A [ 1 ]I : = I - 1

End_For  

 ممممممممممممممممممممممممممممممممممم

مظؿفم

SELECT PROC;SORTS A BYTE ARRAY BY THE SELECTSORT METHOD;INPUTS:SI= ARRAY OFFSET ADDRESS; BX=NUMBER OF ELEMENTS;OUTPUTS:SI=OFFSET OF SORTED ARRAY;USES:SWAPPUSH BXPUSH CXPUSH DX

PUSH SI

DEC BXJE END_SORTMOV DX , SI

SORT_LOOP:MOV SI , DXMOV CX , BXMOV DI , SIMOV AL , [DI]

FIND_BIG:INC SI

CMP [SI], ALJNG NEXTMOV DI , SIMOV AL , [DI]

NEXT:LOOP FIND_BIGCALL SWAPDEC BXJNE SORT_LOOP

END_SORT:PUSH SIPUSH DXPUSH CXPUSH BX

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 135/169

SELECT ENDP

SWAP PROC;INPUT: SI=ONE ELEMENT; DI=OTHER ELEMENT;OUTPUT:EXCHANGED ELEMENTSPUSH AXMOV AL , [SI]XCHG AL , [DI]MOV [SI] , ALPOP AXRET

SWAP ENDP

م

ؿلؼم?جممؾ

SELECTلفمم

مممم

ممؼؾظممحم Aممسمم لظ

SIساممسامم

م

Nلفم

مم

BX.مم

ممسمم ظمم

ممعغظممعممظؿظممغؾظممكؿد ممعغظمم ومم

 A

م

TITLE SORT: SELECT SORT PROGRAM.MODEL SMALL.STACK 100H.DATA

A DB 5 , 2 , 1 , 3 , 4.CODEMAIN PROC

MOV AX , @DATAMOV DS , AXLEA SI , ACALL SELECT;dos exitMOV AH,4CHINT 21H

MAIN ENDPINCLUDE PROCFILE.ASMEND MAIN

ممو ممظغعمم دؿكمم غعمم

Debugمسممظقممظؿظمم

:حممؼؿمم ممظغعم

ظؿظمقظمسم

?جممؼ مسمظ

C

م

م

م

-GC AX=100D BX=0005 CX=0049 DX=0000 SP=0100 Bp=0000 SI=0004 DI=0000DS=100D ES=0FF9 SS=100E CS=1009 IP=000C NV UP EI PL NZ NA PO NC1009:000C E80400 CALL 0013

مؼؿمؿدمؿؼم

?جم

?غمؾض

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 136/169

م

-D 4 8100D:0000 05 02 01 03- 04

مؼؿمدؿس?مج?م

م

-GF AX=1002 BX=0005 CX=0049 DX=0000 SP=0100 Bp=0000 SI=0004 DI=0005DS=100D ES=0FF9 SS=100E CS=1009 IP=000F NV UP EI PL ZR NA PE NC1009:000F B44C MOV AH , 4C

ؾ م م

مؼؿمؿدمؿؼم

م

-D 4 8100D:0000 01 02 03 04- 05

م

وعبلػص

:

ركؿظممؿؼممعممسممؾسممؼؾظمممم

مماضمماظمماضممؼقؿ ممسممطممع

ظممحممؼممظمم

B [ I, 1]ػممظممظممؼممضمم

1ظممضمم

8

ػصوةػك:

امم امم

مماسممؼاممامماحممامماسممؾسممعممعممؾسممطظمم

ممممظؾؼللممسممظمم

ممؼكؿظممؿؼرممج

1.

 _ 

Row Major Order 

ػممغ ظـممظممصعممطممممظممؼممؿؼممح

2.ؿس _ ؿسColumn Major Order 

ػممغ ظـممظ ممسؾؿعممطممممظممؼممؿؼممح

طممظؼممعمطـممظظمم

Bمم

3مممم

4A10سم ممظمم

20

30

40م

ممظمممممم

,50م

,60م

,70ممم

80غمممم ظـممظمم

90,100110م

,120ممظمم

ظ ظـ.

ممممممظممؼممؿؼمض

 _ ممسممظقممظؿظ

B DW 10, 20,30,40

DW 50 , 60 , 70 , 80 

DW 90 , 100, 110 , 120

سممممممؼمم-ظؿظممقظممسممس:

B DW 10 , 50 , 90 DW 20 , 60 , 100

 

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 137/169

 

DW 30 , 60 , 110 

DW 40 , 80 , 120

ممؼؿ مم ممظممظممظمم طـ Aمممممم

 _ مظممظؿفممام.مم

ممؼرممغممحممطعمم ممؿؼظمم

Aظؿعممعم

 _ ممطغممسممظام

Cمم

ظحممؼؿممظؿعمم ممممحممممطممغممرؼاممسام

 _ ممطاممظؿعاممعام

Cسامم

ممؿؼممطممظمممح.

مممممCحممظممظاممCساممظؿعاممعامم امم

ممعممعؿظممسممغممذممط

ممتممؼمم

Cممسؼمم

Aممدؿقثمم

Cممؿظمممم

ممؼممؼرممؾؿسممممخ

A

مممممم

 _ سمم ?ضممتممسمم

 _ س

ص عـل سـو:

مم

مم

Aصمم

 Aمم

Mمممم

Nسممغممضممتممؼممممممم

 _ م

Aمما

S ممظؿكؼممسممحمػم

ممغ

ممسممػم(مAممح

S=1ممحظممؼممسامم

سؾممسمم

Byteمم

S=2ممؼممسممسؾممسمممحم

Wordممهؼممسم(مم.م

ظمم

 A [ I , j ]=

ؿؼرممسممظممؼقؿ ممد:

م

1CIممعممAممسممممظممضم.م

م

2

م

.

ضممظممعمم

C j

ممظممظم

ممؼممؿؼممممظممممظممظ

 Aم

ممسممظممممطممممػمم

Nسم

غممؼؿممؼممممظمم ظـممظممممممظ

 A + s * N

ظممؼؿممؼمممظم ظـممظمممممظ

 A + 2 * N * S

ظمممممظم

Iظمممؼممؿؼ

 A + (I - 1 ) N * S

غ ظـمم

مم:

ظممضمم

 jدؿممؼممممعممؼؾمم

( j - 1) * sعممسمم ؼممظمممم

(حم

(

 j - 1سممظممؼؾممسممظم(مػممسممظممظل ممممظممممظ)م

 A [ I ,

 j ]كممسمممممم

مم

 _ ممػ

 

A + ( i - 1) N s + ( j - 1 ) s

سمممممم

ممؼممتمم C _ ممسممظم Aممفدمم لظممؼظممغممس

 A

[ I , ]]ػممم

A + ( j - 1) M S + ( I - 1 ) s

ام

:

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 138/169

مم

 Aؿممسمم

Mمممم

Nسممممممممم

 _ 

م

1AIطممسمم ؼممظممضم.م

م

.طممسمم ؼممظممضم

A j

م

.ظممغممممؼسمم مم ممغخممط

1ظؿؾممممظغممنممAممسمم ؼممظممضم.م

Iػم

ممم

 A + (I - 1) + N S

2.ضمظممؼ ممسمم

Aظؿؾممممظغممنمم

 jػ

ممممممم

 A + ( j - 1) Sم

.غمم ممسؼممعؿفؼم

ممسممصممممممسممعممؼظمم

ممسممػمممممم

N x S

ػساؼلةن عـل

indexed-based:

ممسممؾسممػممعظممحممسممؼممظممػمم

1(BXؿؼممعلفممظس.م

ABP(م

2(SIؿؼممعلفممظدم.م

(ADIمم

.ؿ

ممحممسممفلعممؼؿخ

4(عجممAممد)خؿؼممسممة ممحم.م

م

لفمم

ممكؿدممتمم CBXلفمم

مممم

ممممظممؼ

DSم

لفمم

ممكؿدممتمم CBPلفمم

مممم

ممممظممؼ

SSم

عـممؼرممعمم طـ ممع

مم ؿطممؿؼ

1.  Variable [ Base_Register ] [ index_Reg] 2.

 [ Base_Reg + index_Reg + VAR + const]

3.  VAR [ Base_Reg + index_Reg + Const] 

4.  Const [ Base_Reg + Index + Var]

ؼؿخممع

مم ؿطممسممظمم

م

Aممصم عـ

Wلافم

مماؼؿممغطممصمطمؿع

BXػاممظاضمم

2لافم

مم

SI

ؿممسمظضمم

كؿمؼم مؿؼممظطممسممظم.4

م مظؿظممع

W+6مم

لفمم

 Ax

MOV AX , W [ BX] [ SI]

ممم

  MOV AX , W [ BX+ SI]

MOV AX , [ W + BX + SI ]MOV AX , [ BX + SI ] W

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 139/169

ؼؾظممممص

ممعممعؿظممسممسمظممػممكؿدممؿؼ

ام:مع

 Aمم

5مممم

7Awordsسمم ممسممسؾاممسامم

اممممامم

 _ ممطؿمعلؿكعممممظغم

Based - Indexed  ممؼممعغ ممعمم

:1م

.

مظضم

0ظم ظـممظممسمم

2.مظضم

0ممسممظممظ م

:1-ظممممؼممظ ظـممظممممسممA

 A + ( 3 - 1) x 7 x 2 = A + 2 x 7 x 2 = A + 28MOV Bx, 28XOR S I ,SI

 

MOV Cx , 7CLEAR : MOV A [ Bx] [SI] , 0 ADD SI , 2

LOOP CLEAR2-

ظممممؼمم ظمظممممسمم

A

 A + ( 4 - 1) x 2 = A + 3 x 2 = A + 6

مطمسؼمعؿفؼممظمظح(7x2)س14ؼجمسم

MOV SI , 6XOR BX ,BX 

MOV Cx , 5CLEAR : MOV A [ Bx] [SI] , 0 ADD BX , 14LOOP CLEAR

م

XLAT:

خممعمغؾظممؼقؿظممؿممؾؿظمم مم

.عممكؿدمؿؼ

XLATم

( مػ

ظؿقؼ)ععم

Byteلافم

ممؼؿممؼهممؿؼمحمجمممخ

 ALؿامم

لفمم

BXسممحممظؾؼممىممؼممعم سمم

:

1لفم.م

ممؼؿمم

 ALلفمم

ممظ CBXمم

ممظممسممؼقؿظ

.لفم

ممممظممظممسممطظممؼؿمم

 AL

م:

لفمم

مم

Aصمم

 ALممضممؼامم امم

0hمم

Fhغؼاممداؿؾظمم اظمم

 ASCIIم

زمم

(مؾؿدممؿؼمم عـ

6hامم

36hم

0chاممم

42h‟A„Bمم

.....(مم

TABLE DB 30h, 31h,32h, 33h, 34,35h, 36h, 37h, 38h, 39hDB 41h, 42h , 43h, 44h, 45h, 46h

ممؼؿممدؿكممعم ممظ

(ممسممهؼممظضم عـ

chظممظضمم

C„c‟)Mov AL , och

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 140/169

LEA BX, TABLEXLAT

ام

:

ممؼمم ؿممدظمممم

ممعغظ(اجمماعمماخ @ ممامميممؾؿدم)ماسؾر

مظدظممعمم

.خم

Aةممدؿممظدظممعمم

(خا

 @ مداؿكممجامم

)ممظداظمم امرؾس

سجد.TITLE secret message.MODEL SMALL.STACK 100H.DATA

CODE_KEY DB 65 DUP(' '),'XQPOGHZBCADEIJUVFMNKLRSTWY'DB 37 DUP (' ')

DECODE_KEY DB 65 DUP(' '),'JHIKLQEFMNTURSDCBVWXOPYAZG'DB 37 DUP (' ')

CODED DB 80 DUP ('$')PROMPT DB 'ENTER A MESSAGE :' , 0DH , 0AH , '$'CRLF DB 0DH , 0AH , '$'

.CODE

MAIN PROC; initialize DSMOV AX,@DATAMOV DS,AX;print user promptLEA DX,PROMPT

MOV AH,09HINT 21H;READ AND ENCODE MESSAGEMOV AH , 1LEA BX , CODE_KEYLEA DI , CODED

WHILE_:INT 21HCMP AL , 0DHJE END_WHILEXLATMOV [DI],AL

INC DIJMP WHILE_

END_WHILE:;GOTO NEW LINEMOV AH , 9LEA DX , CRLFINT 21H;PRINT ENCODED MESSAGELEA DX,CODEDINT 21H;GOTO NEW LINELEA DX,CRLF

INT 21H;DCODE MESSAGE AND PRINT IT

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 141/169

  MOV AH , 2LEA BX , DECODE_KEYLEA SI , CODED

WHILE2:MOV AL , [SI]CMP AL ,'$'JE END_WHILE2XLATMOV DL ,ALINT 21HINC SIJMP WHILE2

END_WHILE2:;return to DOSMOV AH,4CHINT 21H

MAIN ENDPEND MAIN

وا

:

م

1:صمم. م

لفمم

 AXممسممظضمؿم

0500h

لفمم

BXؿممسممظضمم

1000h

لفمم

SIؿممسممظضمم

1500h

لفمم

DIؿممسممظضمم

2000h

ظطممسممظمم

1000hهؿممسممظضمم

0100h

ظطممسممظمم

1500هؿممسممظضمم

0150h

ممسممطظمظ

2000هؿممسممظضمم

0200h

ظطممسممظمم

3000هؿممسممظضمم

0400h

ظطممسممظمم

4000هؿممسممظضمم

3000h

ؿمم

Betaعؿمم

Wordعجممسممحمم

1000h

ممممطاممعاممعاممظؿظامممسممحممظممظممظممؼؿممؼم

(ممطغام

Aقق)

a- MOV DI , [SI] b- MOV DI , [DI]c- ADD AX , [SI] d- SUB BX, , [DI]e- LEA BX ,Beta [BX] f- ADD, SI], [DI]

م

 

g- ADD BH , [BL] h- ADD, AH, [SI] م

c- MOV AX, [BX + DI + beta]

.سممظؿؼممظؿظ

Aمم

C

 A DW 1,2,3B DB 4,5,6

C LABEL word 

Msg DB „ABC‟

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 142/169

لفمم

مم Aممص

BXؿممسممحممظؿمم

CAممعممعممظؿظممقممم.م

ؿل

ممفل

ممممممؿؼممظممظ

a- MOV AH , BYTE PTR Ab- MOV AX , word PTR B

 

c- MOV AX , Cd- MOV AX , Msge- MOV AH , BYTE PTR C

3لفم.م

ممكؿد

BPم لؿكممعم)ظمم مم

pushمم

pop)

/ممممؿمم

Aمم دؿؾممضمم

غلممAم/مم

5اؿمم

ممظ Cمم

مممم

ST_ARRاممؼاؿمماممىامم

ممممظمم

ممضممممج

ST_ARRظممظؿظممممظمم

ST_ARR+2ػمم

4ظؼممعصممCحػم.م

 Aؿممسمم

10سممعممظمم

wordمم

Bؿممسممسممعمم

Byteظمم

Aم/مذؾعممظممظؿظممظمم

ممعممسممطممممم(مA A [ I ]غممم

صمم

 A[1 + 1]ػم)مخممظممممممظممظ

 A [ 10]ظمم

. A[1]مم

م/مفل

مممم

DXممممظؿممهؿممسممظضمسممظم

مم

 A.

/جام

م Aمص

Bظادم.فال

مما

SIعذامظقام

„E‟ممجاممممظداظم Cم.مممC

ؼجممممظدظمميمم

'E‟

ممظضمممم

1

مممم

مم

cf 

5AFind_ijطؿممCج?ممؼلم.م

ؼمم جاممساممحاممظاممضامظمم

I , Jجامممم

اممؼاممجا?مم داؿؾم _ ممعممعممىمممممم jظممضممIظممضممم

ؿم

Iمفل

مم AXممؿ

iمفل

ممBXمماسممسNممفال

ممCxماسماحمم

لفمم

مممم

ممؼؾظ

DXؿم.م

ممممظممحممسممج مم

ممؼ

DX.

:ملؾؽتا ة

6ممطؿ ممCج?ممؼلم.م

BUBBLEظممؼمم دؿؾمم ممعاممعاممياممظامم

مما ظمماعخممكؿادماد مماص

Bubble Sortمم داؿؾممساممحامم

?اجمماؼ

لفمم

ممممظSIممفل

ممممظممسBX.

لؿكممخممدلممعممضممؿؼممسممخغممحاممصامم امم

ممل ممؼممعغ ممؿط A

ممظممتممBubbleضمم ?ممج?م.محممصمBLANKص مم

ممسممسؾ ممضممظمم

ؾ .

ػ تـؾلام:

? 1 2 6 5 3 7 1 2 3 5 6 7 

زقعم

:عم

مم

Bubbleؿظسممظقممم

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 143/169

مم

م:ظJع2ظCNؾؿد A [J]ع A [j - 1]مطممC A [ J ] < A[ J – 1]

ممضمم

ممممسممطAممممظمم ممؿد

N

غ ظـمم

م:ظJع2ظCN-1ؾؿد A [J]ع A [j - 1]طممC A [J ] < A[ J – 1]

ؿدممضمم

ممممسممط

Aممظمممم

N-1

:

مم

N - 1C A[ 2] < A [1]ممطم:م

دؿؾممظؼم

 A [ 2 ]

 A [ 1 ]

.صممظؿؼمظؿظ

:

CLASS 

DB „Ali „ , 67 , 54 , 9 ,8 , 31 

DB „HASSAN  „ , 30 , 50 , 59 ,42 , 53 

DB „AHMED „ , 65 , 73 , 85 ,18 , 90 

مممم

?

ممؼممؿؼممح

7

حم

قممظمم عممغقؿعممممػحAممظممجظممدؿعممظظممدممسؾ ممؼممعغ ممؿطA

8A100طؿمم غعممؼؿعممعممعمم م.م

شاممعصاممممظؾؼاممؼاممظغاعممسمم ممضام

لؿكممخممحمم

ممل(ح _ حم)ما

مما مماحمماطمم ?اضمم ممعغظممؼ

ؾ عممؿسؾرم.مؿعممسممظممسممعغظممكؿل

ممل ممؼممظمم ESC.

ػ تـؾلام:

?A A

?D AD?B ABD?a ABDa

?<esc> 

9APRINTHEXطؿممCج?ممؼلم.م

ظممؼلؿكممعمم

XLATلفمم

ممؼؿممسؾظ

BXمم

سممدلظممظم.ماعمماعممسمددممضممخممكؿل

ممل مم?جممج

4خغامم

دؿكممج?مظمم

IN_HEXةاممضامم ا?ممجا?م.مظممضامم ؿ ؿاممممجا?ممظلا م

PRINTHEXخظمممم ؼممظغعم

Cظؾسممظضممظممتمم

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 144/169

ذاعلصػل

دلمماعتلم

String Instructions

م

م

ممؿدمم?ىممػممظممعممعؿغممظممعم.ماعمماعؿغمماغصمماغممط

ظممسممغممعممعمميمم ظؿظممظؼممسممعممعممظممغؿعممعمم

ظؿظ ممظممع

Aممظؼمم ـصمم

ممص

ممػ

>مم

ممعممعممغمم Aممظدمملغ

م

>لدممطم

Aظؾقمسمحمعم

ؼمAحممدل>مم

عغممدلمعمظعمAؼ<مم

ممػممظمممم ػممبفسممعاممعاممظامم لاؿكممAاممظغامم

قممممى?ممظل ممظممػممظمم ؿممطؿ مم

ممؿك

ماعمماعممس

محظمدؿكمAعمخم ظممAممؼاؿمم اػممػامم اعممحاممصاممامم

دممدظممظممعAممكؿدمم.

ا

DF:

Control FlagsمموممػممAحمم ممظؿقممؿمػمماممواممظاممدام

لفمم

ممكؿدممؿؼممحممظممع

Aصممظؿعممعمم

DI , SIسممظؿعممعامم

ظم.اظمماعممعؿظممؿؼرممػم.ماػمممماؼؾظمماعمماعمماعؿظمماعC

لفمم

ممنممظي

DI

ASIممحممظام ظؿاظمصامم

Aظمم

Cؿعامؼاؿؼمم

ميممظؿظممممػمميظممؼاؿمماممظاضم

Cلفمظؿم

مؼؿممؼ

0

مم

ؾظ

DF.

C1ممتممممظضممممظؾممبممظممAممظؿعممعممظاممؼاؿممساممظؼامم

دظممفلعممؼؿممغ

Cؼؿمم

.

ضظممممؿؼمعممكؿد ممومم مممم

CLD ; clear Direction flag

ؼؿممممظضمم

1ممظؾمم دؿكممعم

STD ; set Direction flag

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 145/169

خممؾظممممعممػممة مم.

م

ةؾؾدؼن

:Moving String

ظؿظممؼؿظممؼظممطمم

C:

String1 DB „Hello‟String2 DB 5 Dup ( ? )

 

غممسممغلكممعممظممممممظاممظؿاظممػامماثممساممساعممغؼامم

A

ممؿظدممعممسممAممظدممعممكلغعغظمم.

ؼلؿكممعامم

MOVSBعامم اممعاعمم

Aمػامم

.ؼلاؿكممعاممظاممؿؼام

ظااطممممظاامم

DS:SIممظااطممممظاامم CES:DI

ممؼااؿمم ااممؿؼاامم

م

.لفم

ممؼؿممؼمم ع

Aممغمميممؼؿمم

DI:SIممطمم

Cحمم

مسمظممغلامدلا.م0مموممؿممسممظضمم ـط(1)اسما ـ

م

لد(2)ظؿظمؿ:MOV AX ,@DATA 

MOV DS, AXMOV ES, AXLEA SI , String1

 

LEA DI , String2CLDMOVSB

MOVSB: 

ؼؿممعمم

MOVSB.AممAعمغؿظممؼؿعممعممعضممممظطممممضممحػم

ةابل

REP:

ؼؿعممعم

MOVSBصممحممغخممعم.ماسمماممؿاؼمميممعممسممظ

ممظؿعممعم

ممي(عمم مم ممس

MOVSBلفم(م

مم

CX مم

ظمعمم ممؿؼ

REP MOVSB

ظممؼؿمم ممعم

MOVSBس

N

ممع.ؼؿمضؿ

CXؿاؼمعمطم

صم معم

MOVSBضمؾ مؿح

CX=0.مسمم لظممظؿظمم ؿطممممظؿظ

ظ

CLDLEA SI , String1LEA DI , String2MOV CX, 5REP MOVSB

 

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 146/169

ام:

ؿمم

ممل ممؼممعغ ممعمم ?جممؿطAString1ؿمم

ممظ CString 2ظامم امم

دع

.

لفمم

ممن

SIؿمممم

ممؼغممظ Cممؼ(اصمماحمماخAم)م

DIؼاممCظامم

غمممميام ظـممؿ

ممؼم

.ةامم اممظاممغام

SIم

(ضاظما

1ا م

وم)ضمؼغممAمملغممم

DIا

2مطمعمحامغاممداؿممCغاممؿؼ ام

بمم

1مم ممعم

MOVSBممغؼممؼ مم ام

1.LEA SI, String1 + 4LEA DI, String2

STDMOV CX, 5MOVE:

MOVSBADD DI , 2LOOP MOVE

م

MOVSW:

عـممعمم

MOVSBؼؿممغلامظممممػمميظمم

WORDطعامم اممسامم

Byteم

لافمم

ممؼ

DS: SIلافمم

مما

مماسمماظ

Cؼامم

ES:DIظامم

Cؼامم

ؿل

م

.لفم

ممؼؿممغ

Cمم

Aؼؿممؼمم

DI, SIبمم

2مم

ا مماضمملح

ومم

(ؼممممحظم

DF = مغممؼمم

Aممحظمم

DF = 1)

ام:

ظؿظمم

مم:

 ARR DW 10,20,40,50,60, ? 

ممCخممظضمم

30ػممؼمم ممظاضمم

لافم.20 , 40

مم Aمماص

DSم

ESظممعممظؾغمم

Cؼمم

.

:

ؼؿممغممضمم

60 , 50,40غممحمم ممظممممCخممظضمخم

30م

STD 

LEA SI , ARR + 8h ; SI Points to 60 

LEA DI , ARR +0Ah ; DI Points to ? 

MOV CX,3REP MOVSWMOV WORD PTR [DI], 30

 

نوStoring String:

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 147/169

ؼلاؿكممعامم

STOSBلافمم

مماؼؿمماظ

 ALممظاطممممظاممامم

لفمم

ES:DI.ؼؿممؼممؿؼممظمممفل

DIحممCممطغامم

DF=0م

ممطغمم

Cغمم

Cؼؿمم

DF=1

ممصممعامم ـ

STOSWلافمم

مماؼؿممؼاكؿ مماؼ

 AXظاممظاطممسامم

C

لفمم

ممممظ

ES: DIلفم.مم

ممؼؿممغمم AممؼممؿؼDIحلمم

ومم ممضم.

ممميممؼكؿظ

„ A „ؿمم

ممؼ م

String1

LEA DI, String1MOV AL, ‘A‘

CLDSTOSB

قءودالةنصة

:

عممضمم

1رممضمم

مم

?غمم

21hممحممحاممصام

? ممم

?اضمما

ؼممسممعمميمم دؿكممعمم

STOSB.

ممظؿظممؼلامم

READ_STRممم

?ا مماؼممماؼممايمماعمماس

ظطمم ؿممسمميمم ظممسممعؿممخمم

Carriage Return.

لفمم

ممم مظدظم

?ضم

مؿظمحممسمممم

?جمم

?غممؿؼ

DIؼامم

ممخ

Cمم سممسمميممظمتمم

?جمفل

مم

BX

مم

.لاؿكممم

ممخ

Aمم

Cخامحاماامسامعؿامظااامم

CBack_Spaceؼاؿممحامميااممعاممظدااظمم

ػمم?جممعخ:

Chars_Read = 0Read a CharacterWhile character is Not a carriage Return Do

If character is a Back_Space ThenChars_Read = Chars_Read - 1Remove Previous character from String

Else

Store character in StringChars_Read = Chars_Read + 1 

End_IfRead a character

End_While

: مظؿفمREAD_STR PROC NEAR;READS AND STORES A STRING;INPUT: DI ODFFSET OF THE STRING;OUTPUT: DI OFFSET OF THE STRING; BX=NUMBER OF CHARACTERS READ

PUSH DX

PUSH DICLD

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 148/169

  XOR BX , BXMOV AH , 1INT 21H

WHILE1:CMP AL , 0DHJE END_WHILE1

;IF CHARACTER IS BACHSPACECMP AL , 8H

JNE ELSE1DEC DIDEC BXJMP READ

ELSE1:STOSBINC BX

READ:INT 21HJMP WHILE1

END_WHILE1:POP DIPOP AXRET

READ_STR ENDP

م

نؿLoad String:

ؼلؿكممعامم

LODSBلافمم

مماقؿظ

 ALبقؿؼاممظاطممممظاممامم

لفمم

DS:SIلفم.مم

ممغمم AممؼممؿؼSIعممباممم مم

1ظامم

مموم

ممضمملح

.

لفممLODSWؼلؿكممعمم

ممقؿظ

 AXبقؿؼاممظاطممممظاممامم

لفمم

DS:SIمم

.لفم

ممغمم

Aؼؿممؼمم

SIمم ممعممبمم

2ظمم

ممممج

ممظمملحومم.

:رباسةنلشاذة

لام

ممظاؿظمم

?اج

Disp_Str لافم

مماظ

Cؼامم ؾسامظداظممؼامم

SIسامم

لفمم

ممممجعممؿسؾرمم

ممي

BXمم

.For count times Do

Load a String Character into AlMove it to DLOutput Character

End_For

فؿظمم مم?جممػممػ

DISP_STR Proc; inputs SI : offset of the String; BX : No of Characters to Display; Outputs None

PUSH AX PUSH BX

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 149/169

PUSH CXPUSH DXPUSH SIMOV CX, BXJCXZ P_EXITCLDMOV AH , 2h

TOP:LODSBMOV DL , AL 

INT 21hLOOP TOP

P_EXIT:POP SIPOP DX 

POP CXPOP BXPOP AX

 

RETDISP_STR ENDP 

نبل

Scan String:

ؼلؿكمعم

SCASBلافمم

مما مماظماػمممضمم ميمم

Aظؿطممعم

 ALؼممعممؼممؿؼممظطممسممظم.م

ES:DIلفمعممؿؼممم

 ALم

عم م مفؿظمؼممؿؼممؾظممصممؿؼممفؿظممضمملحم.Aماؼمؿاؼ

لفم

مؼؿمغ

DI

ومم

مضمملح

.غاممظعاممػامم ظـمماظ

SCASWلافمم

مماعمماعؿ مماػ

 AXاممسامم

 ALم

ظؿممعمػم

SCSAB.Aصممى?ممظؿظمعممظغع

String1 DB ‘ABC’ :MOV AX, @ DATAMOV ES, AXLEA DI , String1 

MOV AL, ‘B’

CLD 

SCASB ;Scan first byteم

 SCASB ; Scan second Byteم

 

اممػاممراممظاضماممAممظ0مم ممعممممؼمم ممظممؼلام

41hػميم

„A‟عمظضم

42hػميمم

„B‟. 

ؿظمملؿظممظممظمم ممصمؿدمغ ظـمم

مم.

لفمم

ممممظممغ

مميممسممممؿؼممغمممحمسمقؾظممس

CXمم

معؼؿم

REPNZ SCASB

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 150/169

لفم

مؼؿمعمحمطمرمؿؼمح

 AXفل

مؼؿمغ CCXاؿحماح

مAم مضم

ميمسم ـظمؿؼ

CXايماسما ـظماسماسماظماظ

.

ام

:

طؿامم غاعممؼامملاممساممياممظلاطمم

AConsonantsيام

ؿقطمم

Vowels.دظ

:

initialize Vowels_Count and Consonant_Count to zeroRead and Store a String

Repeatload a String CharacterIF it is a Vowel Then

Increment Vowel_Countelse if it is a Consonant Then

Increment Consonant_CountEnd_IF

Until End of stringDisplay Vowels_Count and Consonant_Count

ظؿظمقظمسمعغظمؼ

.MODEL SMALL

.STACK 100H

.DATASTRING DB 80 DUP(0)VOWELS DB 'AEIOU'CONSONANTS DB 'BCDFGHJKLMNPQRSTVWXYZ'OUT1 DB 0DH,0AH,'VOWELS= $'OUT2 DB ‘CONSONANTS= $' VOWELCT DW 0CONSCT DW 0

.CODEMAIN PROC

; initialize DS

MOV AX,@DATAMOV DS,AXMOV ES,AXLEA DX,STRINGCALL READ_STRMOV SI,DICLD

REPEAT:LODSBLEA DI,VOWELSMOV CX ,5REPNE SCASBJNE CK_CONST

INC VOWELCTJMP UNTILCK_CONST:

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 151/169

LEA DI,CONSONANTSMOV CX,21REPNE SCASBJNE UNTILINC CONSCT

UNTIL:

DEC BXJNE REPEAT;OUTPUT NO OF VOWELSLEA DX,OUT1MOV AH ,9INT 21HMOV AX,VOWELCTCALL OUTDEC;OUTPUT NO OF CONSONANTSLEA DX,OUT2MOV AH ,9INT 21HMOV AX,CONSCT

CALL OUTDEC;EXIT TO DOSMOV AH,4CHINT 21H

MAIN ENDPINCLUDE PROCFILE.ASMEND MAIN 

ص لـةناؼم

Compare String:

ؼلؿكممعممم

COPSBعممؿؼمظطمES:DIظممؿؼممظطمممظمم

ظمم

DS:SIكؿمممؼؿممؼمظؿفمم

مم

ؾظممضممظظممؾ ممؿؼ

.مم ام

لفممم

ممؼؿممؼهممؿؼممع

DI , SIممومم

ممضمملح

.

ظـممظمػممعظممغ

CMPSWحمم ؿعممعممم

Words.String1 DB ‘ACD’

م

 

String2 DB ‘ABC’ MOV Ax, @ DATAMOV DS, AxMOV ES, Ax CLDLEA SI, String1LEA DI, String2

ممم

 

CMPSB ;sub ‘A’ from ‘A’

CMPSB ;sub ‘B’ from ‘B’CMPSB ;sub ‘C’ from ‘D’

ؼؿممسممدؿكممظؿمم عمم

REPE(Repeal While equalم

سممعغم(م

مم

Cممظؿممعؿلؼؿممممؼؿممظؿضمم

Aمم

رممغ

ممسمم ممؿؼممحممظ

.صممAممؼممظممضممغؿCممممؼؿلممAحممي

ممظؼممعؿؼمم

Aممصمم ـط

STR1مم

STR2مم

10محام

.اممام

ضظمفل

مممم

BXC1ممطممظممعؿ ممممظاضمم

لافمم

مم

 AXم

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 152/169

CSTR1ممطممظممغممم ظـممظممؾضممؾ مضظمم

2اغمم ظـمماظممطممC

ممظممؾضممؾ .MOV CX,10 LEA SI, STR1

LEA DI, STR2CLDREPE CMPSBJL STR1_FIRSTJG STR2_FIRSTMOV AX, 0JMP EXIT

STR1_FIRST:MOV AX, 1 JMP Exit

STR2_FIRSTMOV AX,2

EXIT:

نخ سفنسبل

:

ممعممرؼممظؿقؼممAممغممطؾممؿممسممغمممم خام طـAممظػمCمم اـع

ظؿظممؼؿظممسA:SUB1 DB „ABC‟SUB2 DB „CAB‟MAINST DB „ABABCA‟

ممظمم

Aصمم

SUB1ممظممحمعجممخممظم

Aممعمم

?ؾظمممملظ

SUB1 ABC

MAINST ABABCAغ ظـمميممعممغ

مم

?ؾ ممممظ ظـمميمممم ممجممظ

SUB1 ABCMAINST ABABCA

غممغصممػممحؿامم ا?ممعامم

ممعممممسمم ؿعممشممممي

ظ ظـممي

SUB1 ABCMAINST ABABCA

ػمحثمم ممؼمم

SUB1سؾممسممغمممم

SUDSTRINGسممظممظؾمم

ممغؿممظممظؾممممحاثمم ا ممطعاممؼامم

Cمم مم ممثمممم

C

ظممCمم Aغممسمميممؼمم.مظممظممشممعجممممظممظؾمم

ام

STOPح

STOP = MAINST + Length of MAINST - Length of sub string 

ع

ممػممػ

Prompt the use to enter SUBSTRead SUBSTPrompt the User to enter MAINST

READ MAINST 

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 153/169

If(Length of MAINST=0) Or (Length of SUBST= 0) Or SUBST longer thanMAINST)Then

SUBST Is Not substring of MAINSTElse

Compute STOPStart = Offset of MAINSTRepeat

Compare corresponding chars in MAINST (from START on) andSUBST

if All chars match thenSUBST Found in MAINST

elseSTART = START + 1

END_IFUntil (SUBST found in MAINST or (START > STOP)

END_IF

Display Resultsم

م

ظممعممعؿظممعAممؼممظؿظممى:

متصلؿؾؽل

غلم

ES:DIDS:SIMOVSBMOVSW

غع

ES:DIDS:SICMPSBCMPSW

ؼ

ES:DI AL OR AXSTOSBSTOSW

ه

 AL OR AXDS:SILODSBLODSW

ES:DI AL or AXSCASBSCASW(عل)م

 

وا:

لفم-1

مم Aممص

SIممظضمم

100hممظطممممظمم

100hضمممظم

10h

لفمم

مم

Aصمم

DIممظضمم

200hممظطممممظمم

101hممظضمم

15h

لفمم

مم Aممص

 AXاممظاضمم

4142hممظاطممممظامم

200hاممظاضمم

20h

ADFممظؾمممظطممممظمم0ممظضم

201hظضممم

25h

لؿممظممظممؼؿممظؿعممعممممطممعممعممظؿظاممامم

مم

مم

ظممىؼممظلفمم

DL , SI

a –  MOVSB b- MOVSW c- STOSBd - STOSW e- LODSB f- LODSW

م

 

.صممظؿؼممظؿظ

:

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 154/169

STRING1 DB „FGHIJ‟STRING2 DB „ABCDE‟

DB 5 DUP (?)

ظمم ممؼممعغ ممعمم?جممؿطAمماظمماممغا ظـمماظمماؼغمممم

 ABCDEFGHIZ

. لظمم ـ

ممممظممؼؾؿ ممؼممعغ ممعمم

?جممؿط

A

4عـ0غممؼؿمم يممظؼمط.م

STR DB „this is an ASCIIz String‟ ,  

طؿممCج?ممؼلمم

Lengthلافمؼلؿؾممم

ممظممحمم

DXؼامم جام

لفم

ممظمر

CX.

كؿممطؿممسممعممعمم مم ؿممطممعمظؿظ.5

ممغظمم Aمكؿد:

a - MOVSB b- STOSB c- LODSB

d- SCASB e- CMPSB6

م

.صممظؿؼممظؿظ

:

String DB „ TH *S* AR‟

ضمم ؿ مم غعممؼمم ؾسممظدظممظل مم ممدؿؾمميمم

„ *‟يمم

'E „

7:صممظؿؼممظؿظ.م

String1 DB „TH I S I S A T E S T‟ String2 DB 11 DUP (?)

ظممعممصل

ممظ

Cغم م ظـمظ

Cممعمم غعممؼمم لممظمممم

?جممؿط

.

:ملؾؽتا ة

8ام.م عـمماىممغممؿظممػوممعممA ممظممىممعمسممظػ

" MADAM I

 AM ADAM‟ممعممىم

ممضظممصل

ممؾؿدممؿؼ

.

امم

مماعمماعمماعمماؿسؾرمماةم مغمم? ممؼممعغ ممؿطA(اعم)مؼادمم

عؿؿظمم

.ممعمموػ

?ضممممظممظممعممظممػممؼقؿ مؼمظم

.

9

م

.ؼؿممسممرؾسممضممبقممىممظممعـممىم

: 12312465

131

ؼممعغ مم ؿطمم

ممؿحممؼمم ممحظممضAممسم?10ةام.مخغام

ممظ ممضممػممسؾر

10طؿمم غعممؼمم ?ممغممهؼممAؼممؼ ممAؼممضؾممظؿظ.م

11طؿممCج?ممؼلام.م

INSERTظاممؼامم خاممظامم

STRING1ظامخاممم

غمم ظـ

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 155/169

STRING2.ممعممم

خ:مSIؿممسممسممحممظممم

DIغم ظـممظممحممسممسممؿ

BXؿممسممرممظممم

CXغم ظـممظممرممسممؿ

 AXممCخممم

ممحممسممسممؿصممظ

اج:DIؿممسممسممحممظدظممىؼم

مممممممممممم

BXؿممسممرممظممىؼم

طؿمم غعممؼمم ?ممغاممضامماقم

NINSERTغا?ممجا?مم

اممظامم

ؼىممظممسؾر

م

م

م

12م

.ممؼلم

Cطؿمم

DELETEظممؼمممم

Nحممعاممغاممعاممعاممامم

ظممعمم ظمم ظممعم.

خ

:

م

DI

ؿممسممسممحممظم

ممممممممم

BXرممظم

CXممعلقم

مميممس

SIممعم

?ؿ مميمم

ممظممحممس

اجم:DIسممحممظممىؼ

BXرممظممىؼم

امم

ممايمماسمماعممال

مما

ممايممظمم ? ممؼممعغ ممؿطA

قلعم

?جمم

?غممة

DELETEةممرؾسممظممىؼم

.

م

 

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 156/169

شساصػل

طبؼاسؿؾة

Practical Applicationsم

م ماممAشام ?مفؿظمظمصمكؿل مظمظم عـم مؿدمظمػم

م م ممؿظمغمعؼمظمع

مكؿد مغمؾؿظمػ

م

بطتل:اظ لـؿعولغشتلاظنةفعم

عمضمػمظ

مكؿدمؿؼمؾؿ

30h

ر

م

?

ظ

Int 21h

اؿظمغم

C

ظمهمضم

م عـملطمضمظمقظمضظمسمؾسمػ6.22اػماؿظماغمCمAمؼمظ

مؼؿ22ظمظ6لMinor ظمددم

?ظمػم م

ػظمظم مزؿح

لفم

ممػفؿ مع

م مALAHحمؿسؾرمؿظمطظممؼؿعم.;====================================================================; program: DosVer.asm; purpose: gets the DOS Version using;interrupt 21h function 30h

; purpose: gets the DOS Version using interrupt 21h

function 30h; input : None; output : Minor and Major versions; usage : OUTDEC procedure in procfile.asm; update :;====================================================================.MODEL SMALL.STACK 100H.DATA

CR EQU 0DHLF EQU 0AHMAJOR DB '?'MINOR DB '?'MSG DB 'GET DOS VERSION:INT 21H FUNCTION 3OH',CR,LF,'MS-DOS

Version ','$'

MSG1 DB CR,LF,'MAJOR VERSION NUMBER IS :$'MSG2 DB CR,LF,'MINOR VERSION NUMBER IS :$'

.CODEMAIN PROC

;initializationMOV AX,@DATAMOV DS,AX;get dos versionMOV AH,30HINT 21HMOV MAJOR,ALMOV MINOR ,AH;display results

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 157/169

  LEA DX,MSGMOV AH,9hINT 21HLEA DX,MSG1MOV AH,9hINT 21H

XOR AX,AXMOV AL,MAJORCALL OUTDECLEA DX,MSG2MOV AH,9hINT 21HXOR AX,AXMOV AL,MINORCALL OUTDEC;return to dosMOV AH,4CHINT 21H

MAIN ENDP

Include Procfile.asmEND MAIN 

نالبطتل:لوا ةفعم

عمضممم

مكؿدمؿؼمؾؿظمػم2Ahر

م ?ظInt 21hعمظمؼ مصعمصمؿؼمظ

:ظمطمػمعممى?مظؿظم;====================================================================; program: sysDate.asm; purpose: gets the year,month,day,and day of the week; from the system using interrupt 21h function 2Ah; Calling Registers : AH = 2A

; Return registers:; CX : year(1980 - 2099); DH : month(1 - 12); DL : day(1 - 31); AL : day of the week (0 =Sunday, 1 =Monday,etc ); usage : OUTDEC procedure in procfile.asm; update : 27/11/2000;====================================================================.MODEL SMALL.STACK 100H.DATA

CR EQU 0DHLF EQU 0AH

MSG DB 'GET SYSTEM DATE :INT 21H FUNCTION 2A',CR,LFDB 'YEAR :$'YEAR DW '?'MSG2 DB CR,LF,'MONTH :$'MONTH DB '?'MSG3 DB CR,LF,'DAY :$'DAY DB '?'MSG4 DB CR,LF,'DAY OF WEEK:','$'Dweek DB '?'SUN DB 'Sunday $'MON DB 'Monday $'TUES DB 'Tuesday $'WEDN DB 'Wednesday $'

THURS DB 'Thursday $'FRID DB 'Friday $'SAT DB 'Saturday $'

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 158/169

.CODEMAIN PROC

;initializationMOV AX,@DATAMOV DS,AX;get system date

MOV AH,2AHINT 21H;assign values of dateMOV YEAR,CXMOV MONTH,DHMOV DAY,DLMOV Dweek,AL;MOV DL,dWEEKMOV AL,2HINT 21H;display values of dateLEA DX,MSG

MOV AH,09HINT 21H;yearMOV AX,CXCALL OUTDEC;monthLEA DX,MSG2MOV AH,09HINT 21HXOR AX,AX ;clear AH and ALMOV AL,MONTHCALL OUTDEC;dayLEA DX,MSG3MOV AH,09HINT 21HXOR AX,AXMOV AL,DAYCALL OUTDEC; display the equivalent day of weekLEA DX,MSG4MOV AH,09HINT 21HCMP Dweek,0JE ZEROCMP Dweek,1JE ONECMP Dweek,2JE TWOCMP Dweek,3JE THREECMP Dweek,4JE FOURCMP Dweek,5JE FIVECMP Dweek,6JE SIXJMP END_CASE

ZERO:LEA DX,SUN

JMP DISPLAY_ONE:

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 159/169

  LEA DX,MONJMP DISPLAY_

TWO:LEA DX,TUESJMP DISPLAY_

THREE:

LEA DX,WEDNJMP DISPLAY_FOUR:

LEA DX,THURSJMP DISPLAY_

FIVE:LEA DX,FRIDJMP DISPLAY_

SIX:LEA DX,SAT

DISPLAY_:MOV AH,09HINT 21H

END_CASE:MOV AH,4CHINT 21H

MAIN ENDPInclude procfile.asmEND MAIN

لالبطتل

:ملةفعم

عمضممم

مكؿدمؿؼمؾؿظمػم2Chر

م ?ظInt 21hعاظماصعمؼرمسمؿؼمظ

ظؿظمقظمسمظمظممج

مسلظمع

:;====================================================================; program: sysTime.asm; purpose: gets the hour,minutes,seconds,and hundredth of seconds; from the system using; calling registers: AH = 2Ch; return registers: CH =Hour(O - 23); CL =Minutes(O - 59); DH =Seconds(O - 59); DL =Hundredths of seconds(O - 99); input : None; output : hour,minutes,seconds,and hundredth of seconds; usage : OUTDEC procedure in procfile.asm; update : 28/11/2000

;====================================================================.MODEL SMALL.STACK 100H.DATA

CR EQU 0DHLF EQU 0AHMSG DB 'GET SYSTEM TIME :INT 21H FUNCTION 2C',CR,LF,'$'TM DB ?

.CODEMAIN PROC

;initializationMOV AX,@DATAMOV DS,AX

;print msgLEA DX,MSG

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 160/169

  MOV AH,09HINT 21H;get system timeMOV AH,2cHINT 21H;assign values of time

MOV BX,DX ; store sec and hundred of secs from DXXOR AX,AX ; ax:=zeroMOV AL,CH ;hourCMP AL,12dJG GREATMOV TM,'a'jmp CONTINUE

GREAT:SUB AL,12MOV TM,'p'

CONTINUE:CALL OUTDECMOV DL,':'

MOV Ah,02HINT 21HAND AX,0 ;ax:=zeroMOV AL,CL ;minutesCALL OUTDECMOV DL,':'MOV Ah,02HINT 21HMOV AX,0 ;ax:=zeroMOV AL,BH ;secondsCALL OUTDECMOV DL,'.'MOV Ah,02HINT 21HMOV AX,0 ; ax:=zeroMOV AL,Bl ;hundred of secondsCALL OUTDEC;print spaceMOV DL,' 'MOV AH,02HINT 21HMOV DL,TMMOV AH,02HINT 21H;return to dosMOV AH,4CHINT 21H

MAIN ENDPInclude ProcFile.asmEND MAIN 

م

لبطتل

:واتلغ

ؿؼمؾؿظمػمممضمع

مكؿد2Bhر

م ?ظInt 21hعاظما ماؼرمسمؿؼمظ

ظمظمسمظقمظؿظم

:TITLE Setdate.asm

;====================================================================; Purpose: sets the System date using interrupt 21h; function 2Bh

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 161/169

; Calling Registers :; AH = 2B H; CX : year(1980 - 2099); DH : month(1 - 12); DL : day(1 - 31); Return Registers :

; AL = 00 if success to change the system date; usage : INUNDEC procedure in procfile.asm; update : 27/11/2000;====================================================================.MODEL SMALL.STACK 100H.DATA

LF EQU 0DHCR EQU 0AHprompt DB LF,CR,'Enter The Day : $'MSG_M DB LF,CR,'Enter The Month : $'MSG_Y DB LF,CR,'Enter The Year(1980..2099) : $'MSGSUC DB LF,CR,'Your Date Is Changed.$'

MSGFAIL DB LF,CR,'Your Date Is Not Changed.'DB LF,CR,'Do You Want To Try Again Y/N? $'MSGINV DB LF,CR,'Invalid Date...'

DB LF,CR,'Do You Want To Try Again Y/N? $'year DW '?'month DB '?'day DB '?'

.CODEMAIN PROC

MOV AX,@DATAMOV DS,AX

begin :; Display Prompy MessageMOV AH,9LEA DX , promptINT 21H; Read the DayCALL INUNDECCMP AL , 1JL beginCMP AL , 31DJG beginMOV DAY , AL

@month :MOV AH , 9LEA DX , MSG_MINT 21H; Read the MonthCALL INUNDECCMP AL , 1JL @MONTHCMP AL , 31DJG @MONTH;CALL INUNDECMOV MONTH , AL

@YEAR :MOV AH,9LEA DX , MSG_YINT 21H; Read the Year

CALL INUNDECCMP AX , 1980D

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 162/169

  JL @YEARCMP CX , 2099DJG @YEAR; Set Date using Function 2BhMOV CX , AX ; CX = The YearMOV DH , MONTH ; DH = The Month

MOV DL , DAY ; DL = The DayMOV AH , 2BHINT 21H;IS DATE CHANGED ?CMP AL , 00HJNE AGAINMOV AH , 9HLEA DX , MSGSUCINT 21HJMP EXIT

again:MOV AH , 9HLEA DX , MSGFAIL

INT 21Hanswer: ;ANSWER Y/NMOV AH , 1HINT 21HCMP AL , 'Y'JE beginCMP AL , 'y'JE beginCMP AL , 'n'JE EXITCMP AL , 'N'JE EXITJMP ANSWER

exit:MOV AH , 4CHINT 21H

MAIN ENDPinclude procfile.asmEND MAIN 

م

مابطتل

:ملغ

عمضمم

مكؿدمؿؼمؾؿظمػم2Dhمر

م ?ظInt 21h مصمؿؼمظسدممعظم

ظمظمسمظقمظؿظم

:TITLE Settime.asm;====================================================================; Purpose: sets the System time using interrupt 21h; function 2Dh; Calling Registers :; AH = 2D H; CH : Hours (0..23); CL : Minutes (0..59); DH : Seconds (0..59); Return Registers :; AL = 00 if success to change the system time; usage : INUNDEC procedure in procfile.asm

; update : 27/11/2000;====================================================================.MODEL SMALL

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 163/169

.STACK 100H

.DATALF EQU 0DHCR EQU 0AHPROMPT DB LF,CR,'Enter The Hour(0..23) : $'MSG_M DB LF,CR,'Enter The Minute(0..59) : $'

MSG_S DB LF,CR,'Enter The Second(0..59) : $'MSGSUC DB LF,CR,'Your time is changed.$'MSGFAIL DB LF,CR,'Your Time Is Not Changed.'

DB LF,CR,'Do You Want To Try Again Y/N? $'MSGINV DB LF,CR,'Invalid Time...'

DB LF,CR,'Do You Want To Try Again Y/N? $'HOUR DB '?'MINUTE DB '?'

.CODEMAIN PROC

MOV AX,@DATAMOV DS,AX

begin :

; DISPLAY PROMPT MESSAGEMOV AH , 9LEA DX , promptINT 21H; Read The HourCALL INUNDECMOV HOUR , ALCMP AL , 23DJG begin

@minute:MOV AH , 9LEA DX , MSG_MINT 21H; Read the MinuteCALL INUNDECCMP AL , 59DJG @minuteMOV MINUTE , AL

@second :MOV AH,9LEA DX , MSG_SINT 21H; Read The SecondCALL INUNDECCMP AL , 59DJG @second; Set Time using Function 2DhMOV DH , AL ; DH = SecondsMOV CL , MINUTE ; CL = MinutesMOV CH , HOUR ; CH = HourMOV AH , 2DHINT 21H;IS DATE CHANGED ?CMP AL , 00HJNE AGAINMOV AH , 9HLEA DX , MSGSUCINT 21HJMP EXIT

again:

MOV AH , 9HLEA DX , MSGFAIL

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 164/169

  INT 21Hanswer: ;ANSWER Y/N

MOV AH , 1HINT 21HCMP AL , 'Y'JE begin

CMP AL , 'y'JE beginCMP AL , 'n'JE EXITCMP AL , 'N'JE EXITJMP ANSWER

exit:MOV AH , 4CHINT 21H

MAIN ENDPinclude procfile.asmEND MAIN 

م

البطتل:ؿتلةغؾ ةلةلاعلةلاغلي ةناؼم

مطؿمحمسمظذمعمAمظذممظؿ مصمعؾذمظامسام

مؾؿظمػم

م ممظطم

م

مم ؿظمؼر

(ظمعمذظمطمظحممػSVGAعكؿل

ظقامعؿؾساASCIIحامؼاؿمطؿ امظامظاا(B8000hعم ؾاAمعامظامظؼامى

مظمدؿمرؾسؿمسAttributeميم

مظميمظمسمؾسمػ.

ؿ ام حام

معاظمافؿظم م ؿ

معظمسدمغ

ممذظمعمؿداظ

غمدؿكم غعم

مػممؿدمفؿظمظمعغظمظظمسلظمؾلغم

دؾظمظم عـمخ

ؼؿم مػا(مطمعمؼؿمع?مظذم يم)CZظAؼمب?مظذم يمعمم

ظمسم

9ؾضمعظمصبمدمغمظمعاعم

?اؿغما معاظمصعمعغظمم

?ؾظ

ؿظممعغظمضؿدمظمعظمCمؿظ.

م

لةؼوطل:ابعلاؽدابلةغلتداWrite:

program displayrun;uses crt,Dos;varhs, ms, ss, hunds,he, me, se, hunde : Word;ch:char;BX, Counter:integer;

beginclrscr;TextColor(blue);TextBackground(white);GetTime(hs,ms,ss,hunds);FOR BX:= 1 TO 9 DOfor ch:='A' to 'Z' do

for counter :=1 to 2000 dowrite(ch);

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 165/169

  GetTime(he,me,se,hunde);writeln;writeln('Started at ',hs,':',ms,':',ss,'.',hunds);writeln('Finished at ',he,':',me,':',se,'.',hunde);writeln('Run time is ',he-hs,':',me-ms,':',se-ss,'.',hunde-hunds);repeat until keypressed;

end. 

م

غم ظـمؼظ

:مدؾظمظمكؿدذؾعمطظمعمعؿظمؾظ

:program displayrun;

uses crt,Dos;varhs, ms, ss, hunds,he, me, se, hunde : Word;ATRIB,ch:BYTE;BX, Counter:integer;

beginclrscr;

TextColor(blue);TextBackground(white);GetTime(hs,ms,ss,hunds);ATRIB:=$17;FOR BX:= 1 TO 9 DOfor ch:=65 to 90 dofor counter :=0 to 2000 doBEGINMEM[$B800:2*COUNTER]:=CH;MEM[$B800:2*COUNTER+1]:=ATRIB;END;

{ write(ch);}GetTime(he,me,se,hunde);

writeln;writeln('Started at ',hs,':',ms,':',ss,'.',hunds);writeln('Finished at ',he,':',me,':',se,'.',hunde);writeln('Run time is ',he-hs,':',me-ms,':',se-ss,'.',hunde-hunds);

end. 

م

م ظـ ظـمؼظ

:فؿظمظمكؿد

:TiTle Disp_asm : Fill The screen & Compute Runtime

.MODEL SMALL

.STACK 100H

.DATA

printCh dw '?'MSGS DB 0DH,0AH,'Start Time is $'Hs DB '?'Ms DB '?'Scs DB '?'HSs DB '?'MSGe DB 0DH,0AH,'Finish Time is $'He DB '?'Me DB '?'Se DB '?'HSe DB '?'MSGR DB 0DH,0AH,'Run Time is $'

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 166/169

.CODEMAIN PROC

;initializationMOV AX , @DATAMOV DS , AX; Get start time

MOV AH,2CHINT 21HMOV Hs , CHMOV Ms , CLMOV Scs , DHMOV HSs , DLMOV AX,0B800h ;color active display pageMOV DS,AXMOV AH,17HMOV BX,9

DISPLAY_ALL:MOV AL,41h

AGAIN:

MOV DI,0MOV CX,2000d;fill active display pageFILL_BUF:

MOV [DI],AXADD DI,2LOOP FILL_BUF ;loop until done

ADD AX,01HCMP AL,'Z'JLE AGAINDEC BXJNZ DISPLAY_ALL; Get finish timeMOV AX , @DATAMOV DS , AXMOV AH,2CHINT 21HMOV He , CHMOV Me , CLMOV Se , DHMOV HSe , DL

; display start timeMOV AH , 9

LEA DX , MSGsINT 21HXOR AX , AX

MOV AL , HsCALL OUTDECMOV DL , ':'

MOV AH , 2INT 21H;

XOR AX , AXMOV AL , MsCALL OUTDECMOV DL , ':'MOV AH , 2INT 21H;

XOR AX , AX

MOV AL , ScsCALL OUTDEC

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 167/169

  MOV DL , '.'MOV AH , 2INT 21H;XOR AX , AXMOV AL , HSs

CALL OUTDECMOV DL , ':'MOV AH , 2INT 21H; display finish timeMOV AH , 9LEA DX , MSGeINT 21HXOR AX , AXMOV AL , HeCALL OUTDECMOV DL , ':'MOV AH , 2

INT 21H;XOR AX , AXMOV AL , MeCALL OUTDECMOV DL , ':'MOV AH , 2INT 21H;XOR AX , AXMOV AL , SeCALL OUTDECMOV DL , '.'MOV AH , 2INT 21H;XOR AX , AXMOV AL , HseCALL OUTDECMOV DL , ':'MOV AH , 2INT 21H; display run time

MOV AH , 9LEA DX , MSGR

INT 21HXOR AX , AXMOV AL , HeSUB AL , Hs

CALL OUTDECMOV DL , ':'

MOV AH , 2INT 21HXOR AX , AXMOV AL , MeSUB AL , MsCALL OUTDECMOV DL , ':'MOV AH , 2INT 21H

XOR AX , AXMOV AL , Se

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 168/169

  SUB AL , ScsCALL OUTDECMOV DL , '.'MOV AH , 2

INT 21HXOR AX , AX

MOV AL , HSeSUB AL , HSsCALL OUTDEC

; dos exitMOV AH,4CHINT 21H

MAIN ENDPInclude procfile.asm

END MAIN

غ

:

عمظمؿظمعمغعمسAمق

معظم م.عغظمػمعضAمؿدمظ

=ظمسم ممػمعم

=ؿظممع

 

7/17/2019 Elebda3.Net 7893

http://slidepdf.com/reader/full/elebda3net-7893 169/169

 

ج

ج1 – م

مد:Assembly Language Programming and Organization of the IBM PC

ظم

مد:Ytha YuCharless Marut

Mc-Graw-Hillم:ظذم

2-ج

مد:DOS Programmer‟s Reference

ظم

مد:Terry R. Dettmann

ظذم

QUE

3-ج

مد:Advanced Assembly Language

ظم

مد:Steven Holzer 

Brdy Publishingم:ظذم

4-ج

مد:Structured Computer organization