elebda3.net 7893
DESCRIPTION
Assembly Language Programming and MicroprocessorsTRANSCRIPT
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م
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
مممظاعمظؿعام
مخمغؾظمعمعؿظمم مفل
مػمكؿدمؿؼ
لفعؾذمعمػ
م
.
Aم
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م
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م
مظممع
مصممخم?عمعمخ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
Xم
<000A
م ظؿظمصمظمػمم
1256:000A
م
م
– لظم?ىممػؾ مظمؼظمغمؾ
م
محمضم Aمص
XAمنمظ
ممؼؿظ
X+10h>1240<1256A
X+12400=1256A
Xم
<016A
م ظؿظمصمظمػمم
1240:016A
طظممظمغمظCمؼمغظمAمA 1256A = 1256:000A = 1240:016A
م ـ
ممطمحمضمؼظمظمصبم
مضمصعمؼ
Aم
معظؿظ
:
ام
مظؿقؼمظم
مسمػمع
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مؼؿفػ
Aم
معمغمغصمظؿظ مصممظم
?غ
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صم
د
مؿظممطمسمعظمبم
ملؿطمؿؼمعغظمد 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اظماضمظحماؼمؿاؼ
ذ
Cم
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م
A(ع
)ظمغمعم م
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مع
5م
AXMOV AX , 5
AXسمؿه
5-ASUB AX , Aم
م
AMOV A , AX
معم
Cم
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مم
مطمؼكؿظمطمفيمػمؼم
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م
Aم م
small.اقظماسمؼ
ظؿظ:
.MODEL SMALL
.STACK 100H
.DATA
; م ظـمؿمؼ مؼمػ
.CODEMAIN PROC
;عمؿظ
?جمخ
MAIN ENDP
;ػمؿ م?جم
END MAIN
@ ENDخمدممظغعممطمغؼمظغعم.عؿؾسم دمج?مظلممظغع
خاخاؿؾعINPUT &OUTPUT INSTRUCTIONS
عمكؿد مج
مجمعمضظم
معؿؼكؿاد ماظماخماخمغ
عم
INاعمخ
Cم
?عمصم
?ظ
OUTاخ
Cم
?اعمما ؿظ
.اػمكؿادمؿاؼ
اجمسامم
مىمعمعؿظمسدمػم
مطم 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 ; ;لفم
معميمح
C
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ظم ؼمظلمىؼمرؾسميمظمتمظمسمةمغؿ?مظام
ؿظمغمظ
C.
ةذاشلؾسةلادازDisplay String
1مظغعمظل متمدؿكمظزمضم
م ?غمعاضم
21hؾؿادمكؿال ماػ
مطظمظزمضم
محظمعمح2ذظمسمحمسؾظمػ.
عمضم
مكؿدمؿؼمذظمسمعطمظدمزم ـ
مػم
9
قةمخ9:ذاشلؾسةلاداز
خ
:حمس
Offsetلفظؾؼمظدظم
مممؿ
DXمم
(ي مظدظمؿ م
Aم
"$)م
"
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ؿلغممغم
مسم ـمضمظ
Cؼ
لفم
ممفؿظ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-حمعم
?ؿ مطظممغمظؿظمغؾظم
Aم
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م
? مؼمعغ مؿط
( 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م م م
مظحم مظيم
م م معغظم م
?ة
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‟(صمؿؼ
ؾظ
)ظممغ
مظ
Cم
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غم
Aم
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)مظمطم لم
م محمميظؿمػمظضم
Aم
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
طمضممؼمػمظضم
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ظمغمنمضمدظم
(ظ
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
لفم
مد مسؾؿع( عـ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جؼمغ
Aم
غم
معم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
صمظغعمؼم
.
مةةمسم
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مؼمضمة م
معح
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مAم:
DEC CX
JNZ loop
loopؼؿمػمظؿمCمظمفل
مضم مم CCXمل.
تػر دونذاة ل وةاذإ رػت ل :
ذم
Cعم م م
Aعم م ذمؼزم
Aمطم عـع
JGعمزؼ
JAاؿؼمعم
Aدؿكم
عغظمخمضمعمعؿظمؼرمس.اػماعمسمطمAمؿ مضم لظمىمAمح
مظؿام اzf , sf , ofظم ؿمسم ممحمAمظؿم ذمؼؿعمعمظؾم
ذمؼؿمس
Cم
ؾظم
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م
مظ
.
لفمدظؾم
مؼؿمغطم
Cم
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مهمطمعمظرمم @ مح""مغؿفمظم
ام:مطمحصمطؾض
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م
Cؼم
CXفل
مضمؾ مم
Cمحمب
CX<ظمظ
Cمؼؿمظؿم
destination_label(ظمؾلؼم
Aظمبظمم
م
126اض
Aخغمطقم
)اػما مؿاؼ
لفم
مضم مؿحمظ
CXعاغظمعميمعم
?ؿغمؿؼمػسمظمظ
Cم
.كؿاد
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محم
A
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-ظمعمع م
Aض
.
.زمظؿف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خم
Aم
Cمظمؿ معغظمؼ
لؿكمAمضمشمعلم مؼمظغعم زمدظC.(غ?مظغعم
مخم C
خم
Aظمعم
)
11-معظمط
10سممسمددمضمخ
Cلؿكمم
مصم
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مؼمعلفم
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غمدؿكم
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م
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
لفم
مم
محمعمسممؿؼمحمغخمعم طـ
Aم
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 ;حمم
Aض
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ؼم ظـممظممممظؿظملظممممؼظمممسؾ ممعغظممؼ.
لم
ممضمم
Cخ
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م
عممظسمؼؿمم ممظم
(جمم
Cم
)ظممؼممػم
مظغعممظسمم دؿكعمم
.
م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مؼؿمم
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
وا:
1م
/لفم
ممؼؿمم
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ةلاتلمػـ سـاضفح
:
Aم
/ممطمم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]لاتلممكػ ـ:
Aم
/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م
ممسممرممػم(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ظممظؼممخممعممظؾغمم
Cم
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طذممممظممممصمم اممظامممخاممحاممؼاؿممضا?مم
ممممظضمظممة
2م
(ممسؾممسممطم
ممسمم
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عم
Aم
م
مظ
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
B
2 + 2 = 4
2BACh C
ALPHA + 4
0789h
D -2 + 4 = 2 1084h
E ALPHA + 3 + 1 0789h
F
معؿم ؼمشمقق
G
فل
مكؿدمم
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طممسمم ؼممظممضم.م
م
2م
.طممسمم ؼممظممضم
A j
م
3م
.ظممغممممؼسمم مم ممغخممط
1ظؿؾممممظغممنممAممسمم ؼممظممضم.م
Iػم
ممم
A + (I - 1) + N S
2.ضمظممؼ ممسمم
Aظؿؾممممظغممنمم
jػ
ممممممم
A + ( j - 1) Sم
3م
.غمم ممسؼممعؿفؼم
ممسممصممممممسممعممؼظمم
ممسممػمممممم
N x S
ػساؼلةن عـل
indexed-based:
ممسممؾسممػممعظممحممسممؼممظممػمم
1(BXؿؼممعلفممظس.م
ABP(م
2(SIؿؼممعلفممظدم.م
(ADIمم
3م
.ؿ
ممحممسممفلعممؼؿخ
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مم
ممظممسممؼقؿظ
2م
.لفم
ممممظممظممسممطظممؼؿمم
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]
2م
.سممظؿؼممظؿظ
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مم دؿؾممضمم
غلمم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 ]
7م
.صممظؿؼمظؿظ
:
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
م
2م
.صممظؿؼممظؿظ
:
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
3م
. لظمم ـ
ممممظممؼؾؿ ممؼممعغ ممعمم
?جممؿط
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