পঞ্চম অধ্যায়
5.1 Define (i) Assembly language (ii) Assembler and (iii) Linker (iv) IDE.
অ্যাসেম্বলি ভাষাঃ
অ্যাসেম্বলি ভাষাঃ যে ভাষায় বিভিন্ন সংকেত বা নেমোনিক ব্যবহার করে প্রোগ্রাম লেখা হয় তাকে অ্যাসেম্বলি ভাষা বলে।অ্যাসেম্বলি ভাষায় প্রোগ্রাম লেখার জন্য ০ ও ১ ব্যবহার না করে বিভিন্ন সংকেত ব্যবহার করা হয়। এই সংকেতকে বলে সাংকেতিক কোড (Symbolic Code) বা নেমোনিক (mnemonic) এবং এটি সর্বোচ্চ পাঁচটি লেটারের সমন্বয়ে হয়, যেমন- SUB(বিয়োগের জন্য), MUL(গুণের জন্য), ADD(যোগের জন্য), DIV(ভাগের জন্য) ইত্যাদি। এই বৈশিষ্ট্যের জন্য এই ভাষাকে সাংকেতিক ভাষাও বলা হয়। অ্যাসেম্বলি ভাষা দ্বিতীয় প্রজন্মের এবং নিম্নস্তরের ভাষা। দ্বিতীয় প্রজন্মের কম্পিউটারে এই ভাষা ব্যাপকভাবে প্রচলিত ছিল। এই ভাষায় লেখা প্রোগ্রাম অনুবাদের প্রয়োজন হয় এবং অনুবাদক প্রোগ্রাম হিসেবে অ্যাসেম্বলার ব্যবহৃত হয়।
অ্যাসেম্বলার
অ্যাসেম্বলার : অ্যাসেম্বলি ভাষায় লিখিত প্রোগ্রামকে মেশিন ভাষায় অনুবাদ করার জন্য যে অনুবাদক প্রোগ্রাম ব্যবহার করা হয়,তাকে অ্যাসেম্বলার বলা হয়। এটি অ্যাসেম্বলি ভাষায় লিখিত প্রোগ্রামকে যান্ত্রিক ভাষায় রূপান্তর করে। অর্থাৎ নেমোনিক কোডকে মেশিন ভাষায় অনুবাদ করে। প্রোগ্রামের কোথায় কোনো ভুল থাকলে Error Message দেয়।
অ্যাসেম্বলার এর কাজ :
১। নেমোনিক কোডকে(ADD,LOAD etc) মেশিন ভাষায় অনুবাদ করে।
২। সাংকেতিক ঠিকানাকে মেশিন ভাষায় লেখার ঠিকানায় রূপান্তর করে।
৩। প্রোগ্রামে কোনো ভুল থাকলে Error Message দেয় ।
৪। সব নির্দেশ ও ঠিকানা প্রধান মেমোরিতে রাখে।
Linker
আপনি ইতিমধ্যে এমন ফাংশন দেখেছেন যা নামের সাথে অন্য ফাংশনগুলিকে কল করে, যা অন্য কোনও ফাইল বা লাইব্রেরিতে অবস্থিত। প্রথম পাসের সময় প্রতীক টেবিলের জন্য এই অন্যান্য লেবেলের ঠিকানা নির্ধারণের জন্য এসেমব্লারের কোনও উপায় নেই। দ্বিতীয় পাসের সময় এসেম্বলিংর কেবলমাত্র যা করতে পারে তা হ'ল এই নির্দেশকে একত্রিত করার সময় ঠিকানার জন্য পর্যাপ্ত মেমরির জায়গা রেখে দেওয়া। পুরো প্রোগ্রামটি তৈরি করতে প্রকৃত ঠিকানাটি পরে পূরণ করতে হবে। বাহ্যিক মেমরি অবস্থানগুলিতে এই উল্লেখগুলি পূরণ করা লিঙ্কার প্রোগ্রামের কাজ।
integrated development environment (IDE)
ইন্টিগ্রেটেড ডেভেলপমেন্ট এনভায়রনমেন্ট (আইডিই) একটি সফ্টওয়্যার স্যুট যা সফ্টওয়্যার লিখতে ও পরীক্ষার জন্য প্রয়োজনীয় বেসিক সরঞ্জামগুলিকে একত্রিত করে।
অ্যাসেম্বলি ভাষায় প্রতিটি নির্দেশের চারটি অংশ থাকে। যথা-
ক. লেবেলঃ প্রোগ্রামের একটি নির্দিস্ট স্থানকে চিহ্নিত করতে লেবেল ব্যবহৃত হয়। লেবেল ব্যবহারের ফলে প্রোগ্রাম একটি নির্দিস্ট স্টেটমেন্ট থেকে অপর একটি নির্দিস্ট স্টেটমেন্টে জাম্প করতে পারে। লেবেল লেখার ক্ষেত্রে এক বা দুইটি আলফানিউমেরিক ক্যারেক্টার ব্যবহৃত হয় এবং ক্যারেক্টারের মাঝে কোন ফাঁকা থাকা যাবে না।লেবেল হিসেবে কোন নেমোনিক ব্যবহার করা যাবে না। লেবেলের শেষে কোলন(:) দিতে হয়। যেমন- BB: ।
খ. অপ-কোডঃ অপ-কোডকে অপারেশন কোডও বলা হয়। অপ-কোডে নির্দেশ নেমোনিক থাকে। এই নেমোনিকগুলো ভিন্ন ভিন্ন কম্পিউটারে ভিন্ন ভিন্ন হতে পারে। কিছু নির্দেশ নেমোনিক ও তাদের ব্যবহার দেখানো হল-
গ. অপারেন্ডঃ অপকোড যার উপর কাজ করে তাকে অপারেন্ড বলে। এটি সাধারণত মেমোরির অ্যাড্রেস বা সরাসরি ডেটা হতে পারে।
ঘ. কমেন্টঃ প্রোগ্রামে কোন নির্দেশের কী কাজ তা বর্ননা আকারে লেখা হয় যাকে কমেন্ট বা মন্তব্য বলে। এটি প্রোগ্রাম নির্দেশের কোন অংশ নয়। প্রোগ্রাম নির্দেশগুলোর কমেন্ট থাকলে পরবর্তীতে প্রোগ্রামের পরিবর্তন করা সহজ হয় বা অন্য কোন প্রোগ্রামারের পক্ষে প্রোগ্রাম নিয়ে কাজ করা সহজ হয়।
অ্যাসেম্বলি ভাষার সুবিধা:
১। অ্যাসেম্বলি ভাষা সহজে বুঝা যায় এবং এই ভাষায় প্রোগ্রাম রচনা করা যান্ত্রিক ভাষার তুলনায় অনেক সহজ।
২। প্রোগ্রাম রচনা করতে সময় এবং শ্রম কম লাগে।
৩। প্রোগ্রামের ত্রুটি বের করে তা সমাধান করা এবং প্রোগ্রাম পরিবর্তন করা সহজ।
অ্যাসেম্বলি ভাষার অসুবিধা:
১। এই ভাষার সবচেয়ে বড় অসুবিধা হচ্ছে এক ধরনের কম্পিউটারের জন্য লেখা প্রোগ্রাম অন্য ধরনের কম্পিউটারে ব্যবহার করা যায় না। অর্থাৎ যন্ত্র নির্ভর ভাষা।
২। প্রোগ্রাম রচনার সময় প্রোগ্রামারকে মেশিন সম্পর্কে ধারণা থাকতে হয়।
৩। অনুবাদক প্রোগ্রামের প্রয়োজন হয়।
5.3 State the meaning of CPU Instruction and Assembler directives.
=
Assigns a value to a symbol (same as EQU)
EQU
Assigns a value to a symbol (same as =)
5.5 Mention the steps to create and execute assembly language program.
অ্যাসেম্বলি ভাষাঃ
অ্যাসেম্বলি ভাষাঃ যে ভাষায় বিভিন্ন সংকেত বা নেমোনিক ব্যবহার করে প্রোগ্রাম লেখা হয় তাকে অ্যাসেম্বলি ভাষা বলে।অ্যাসেম্বলি ভাষায় প্রোগ্রাম লেখার জন্য ০ ও ১ ব্যবহার না করে বিভিন্ন সংকেত ব্যবহার করা হয়। এই সংকেতকে বলে সাংকেতিক কোড (Symbolic Code) বা নেমোনিক (mnemonic) এবং এটি সর্বোচ্চ পাঁচটি লেটারের সমন্বয়ে হয়, যেমন- SUB(বিয়োগের জন্য), MUL(গুণের জন্য), ADD(যোগের জন্য), DIV(ভাগের জন্য) ইত্যাদি। এই বৈশিষ্ট্যের জন্য এই ভাষাকে সাংকেতিক ভাষাও বলা হয়। অ্যাসেম্বলি ভাষা দ্বিতীয় প্রজন্মের এবং নিম্নস্তরের ভাষা। দ্বিতীয় প্রজন্মের কম্পিউটারে এই ভাষা ব্যাপকভাবে প্রচলিত ছিল। এই ভাষায় লেখা প্রোগ্রাম অনুবাদের প্রয়োজন হয় এবং অনুবাদক প্রোগ্রাম হিসেবে অ্যাসেম্বলার ব্যবহৃত হয়।
অ্যাসেম্বলার
অ্যাসেম্বলার : অ্যাসেম্বলি ভাষায় লিখিত প্রোগ্রামকে মেশিন ভাষায় অনুবাদ করার জন্য যে অনুবাদক প্রোগ্রাম ব্যবহার করা হয়,তাকে অ্যাসেম্বলার বলা হয়। এটি অ্যাসেম্বলি ভাষায় লিখিত প্রোগ্রামকে যান্ত্রিক ভাষায় রূপান্তর করে। অর্থাৎ নেমোনিক কোডকে মেশিন ভাষায় অনুবাদ করে। প্রোগ্রামের কোথায় কোনো ভুল থাকলে Error Message দেয়।
অ্যাসেম্বলার এর কাজ :
১। নেমোনিক কোডকে(ADD,LOAD etc) মেশিন ভাষায় অনুবাদ করে।
২। সাংকেতিক ঠিকানাকে মেশিন ভাষায় লেখার ঠিকানায় রূপান্তর করে।
৩। প্রোগ্রামে কোনো ভুল থাকলে Error Message দেয় ।
৪। সব নির্দেশ ও ঠিকানা প্রধান মেমোরিতে রাখে।
Linker
আপনি ইতিমধ্যে এমন ফাংশন দেখেছেন যা নামের সাথে অন্য ফাংশনগুলিকে কল করে, যা অন্য কোনও ফাইল বা লাইব্রেরিতে অবস্থিত। প্রথম পাসের সময় প্রতীক টেবিলের জন্য এই অন্যান্য লেবেলের ঠিকানা নির্ধারণের জন্য এসেমব্লারের কোনও উপায় নেই। দ্বিতীয় পাসের সময় এসেম্বলিংর কেবলমাত্র যা করতে পারে তা হ'ল এই নির্দেশকে একত্রিত করার সময় ঠিকানার জন্য পর্যাপ্ত মেমরির জায়গা রেখে দেওয়া। পুরো প্রোগ্রামটি তৈরি করতে প্রকৃত ঠিকানাটি পরে পূরণ করতে হবে। বাহ্যিক মেমরি অবস্থানগুলিতে এই উল্লেখগুলি পূরণ করা লিঙ্কার প্রোগ্রামের কাজ।
integrated development environment (IDE)
ইন্টিগ্রেটেড ডেভেলপমেন্ট এনভায়রনমেন্ট (আইডিই) একটি সফ্টওয়্যার স্যুট যা সফ্টওয়্যার লিখতে ও পরীক্ষার জন্য প্রয়োজনীয় বেসিক সরঞ্জামগুলিকে একত্রিত করে।
5.2 Mention the fields of an assembly language instruction.
অ্যাসেম্বলি ভাষায় প্রতিটি নির্দেশের চারটি অংশ থাকে। যথা-
- লেবেল
- অপ-কোড
- অপারেন্ড
- কমেন্ট
ক. লেবেলঃ প্রোগ্রামের একটি নির্দিস্ট স্থানকে চিহ্নিত করতে লেবেল ব্যবহৃত হয়। লেবেল ব্যবহারের ফলে প্রোগ্রাম একটি নির্দিস্ট স্টেটমেন্ট থেকে অপর একটি নির্দিস্ট স্টেটমেন্টে জাম্প করতে পারে। লেবেল লেখার ক্ষেত্রে এক বা দুইটি আলফানিউমেরিক ক্যারেক্টার ব্যবহৃত হয় এবং ক্যারেক্টারের মাঝে কোন ফাঁকা থাকা যাবে না।লেবেল হিসেবে কোন নেমোনিক ব্যবহার করা যাবে না। লেবেলের শেষে কোলন(:) দিতে হয়। যেমন- BB: ।
খ. অপ-কোডঃ অপ-কোডকে অপারেশন কোডও বলা হয়। অপ-কোডে নির্দেশ নেমোনিক থাকে। এই নেমোনিকগুলো ভিন্ন ভিন্ন কম্পিউটারে ভিন্ন ভিন্ন হতে পারে। কিছু নির্দেশ নেমোনিক ও তাদের ব্যবহার দেখানো হল-
নেমোনিক | ব্যবহার |
LDA | প্রধান মেমোরির ডেটা অ্যাকিউমুলেটরে লোড করা। |
STA | অ্যাকিউমুলেটরের ডেটাকে একটি নির্দিস্ট অবস্থানে সংরক্ষণ করা। |
CLR | অ্যাকিউমুলেটর খালি করা। |
ADD | অ্যাকিউমুলেটরের সাথে অপারেন্ডের মান যোগ করে যোগফল অ্যাকিউমুলেটরে রাখা। |
SUB | অ্যাকিউমুলেটর থেকে অপারেন্ডের মান বিয়োগ করে বিয়োগফল অ্যাকিউমুলেটরে রাখা। |
MUL | অ্যাকিউমুলেটরের সাথে অপারেন্ডের মান গুন করে গুণফল অ্যাকিউমুলেটরে রাখা। |
DIV | অ্যাকিউমুলেটরের মানকে অপারেন্ডের মান দ্বারা ভাগ করে ভাগফল অ্যাকিউমুলেটরে রাখা। |
JMP | শর্তহীনভাবে প্রোগ্রামের নির্দিস্ট লেভেলে জাম্প করতে। |
INP | ডেটা বা নির্দেশ গ্রহণ করে মেমোরির নির্দিস্ট অবস্থানে রাখা। |
OUT | মেমোরির নির্দিস্ট অবস্থানের ডেটা আউটপুটে প্রদর্শন। |
STP | প্রোগ্রামকে থামানো। |
গ. অপারেন্ডঃ অপকোড যার উপর কাজ করে তাকে অপারেন্ড বলে। এটি সাধারণত মেমোরির অ্যাড্রেস বা সরাসরি ডেটা হতে পারে।
ঘ. কমেন্টঃ প্রোগ্রামে কোন নির্দেশের কী কাজ তা বর্ননা আকারে লেখা হয় যাকে কমেন্ট বা মন্তব্য বলে। এটি প্রোগ্রাম নির্দেশের কোন অংশ নয়। প্রোগ্রাম নির্দেশগুলোর কমেন্ট থাকলে পরবর্তীতে প্রোগ্রামের পরিবর্তন করা সহজ হয় বা অন্য কোন প্রোগ্রামারের পক্ষে প্রোগ্রাম নিয়ে কাজ করা সহজ হয়।
অ্যাসেম্বলি ভাষার সুবিধা:
১। অ্যাসেম্বলি ভাষা সহজে বুঝা যায় এবং এই ভাষায় প্রোগ্রাম রচনা করা যান্ত্রিক ভাষার তুলনায় অনেক সহজ।
২। প্রোগ্রাম রচনা করতে সময় এবং শ্রম কম লাগে।
৩। প্রোগ্রামের ত্রুটি বের করে তা সমাধান করা এবং প্রোগ্রাম পরিবর্তন করা সহজ।
অ্যাসেম্বলি ভাষার অসুবিধা:
১। এই ভাষার সবচেয়ে বড় অসুবিধা হচ্ছে এক ধরনের কম্পিউটারের জন্য লেখা প্রোগ্রাম অন্য ধরনের কম্পিউটারে ব্যবহার করা যায় না। অর্থাৎ যন্ত্র নির্ভর ভাষা।
২। প্রোগ্রাম রচনার সময় প্রোগ্রামারকে মেশিন সম্পর্কে ধারণা থাকতে হয়।
৩। অনুবাদক প্রোগ্রামের প্রয়োজন হয়।
5.3 State the meaning of CPU Instruction and Assembler directives.
CPU Instruction
সিপিইউ নির্দেশনা এমন একটি কম্পিউটারের অংশ যা প্রোগ্রামিংয়ের সাথে সম্পর্কিত, যা মূলত মেশিনের ভাষা। ইন্সট্রাকশন সেটটি প্রসেসরের কমান্ড সরবরাহ করে, এটির কি করা দরকার তা তা জানাতে। নির্দেশিকাতে ঠিকানা মোড, নির্দেশাবলী, নেটিভ ডেটা টাইপ, রেজিস্টার, মেমরি আর্কিটেকচার, বাধা এবং ব্যতিক্রম হ্যান্ডলিং এবং বহিরাগত I / O রয়েছে।
Assembler directives
এসেম্বলারের নির্দেশাবলী হ'ল পিআইসি উত্স কোডে সন্নিবেশ করা কমান্ড যা এসেম্ব্লিংারের ক্রিয়াকলাপ নিয়ন্ত্রণ করে। এগুলি নিজেই প্রোগ্রামের অংশ নয় এবং মেশিন কোডে রূপান্তরিত হয় না। প্রোগ্রামিং ল্যাঙ্গুয়েজ সম্পর্কে ভাল জ্ঞান অর্জন করা হলেই অনেক একত্রিতকারী নির্দেশাবলী ব্যবহৃত হয়
5.4 Mention the commonly used Assembler directives.
Assigns a value to a symbol (same as EQU)
EQU
Assigns a value to a symbol (same as =)
ORG
বর্তমান উত্সকে নতুন মান হিসাবে সেট করে। এটি প্রোগ্রাম সেট করতে বা সমাবেশের সময় ঠিকানা নিবন্ধ করার জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, ওআরজি 0100 এইচ 0100h ঠিকানায় শুরু করে পরবর্তী কোডগুলি একত্রিত করতে এসেম্বলবারকে বলে।
DS
পরিমাণে মুক্ত স্থান নির্ধারণ করে। কোনও কোড উত্পন্ন হয় না। এটি কখনও কখনও ভেরিয়েবল স্পেস বরাদ্দ করার জন্য ব্যবহৃত হয়।
IF <expression>
Assembles code if expression evaluates to TRUE.
Assembles code if expression evaluates to TRUE.
IFNOT <expression>
Assembles code if expression evaluates to FALSE.
Assembles code if expression evaluates to FALSE.
ELSE
Assembles code if preceeding evaluation is rejected
Assembles code if preceeding evaluation is rejected
.ENDIF
Ends conditional evaluation.
Ends conditional evaluation.
Assembler Directive Examples
Include 'C:\PICTOOLS\16C877.inc' | ; loads default symbols |
; for the targeted device. | |
FUSES _WD_OFF&_LP_OSC | ; specify multiple fuse settings |
; using the '&' operator. | |
FUSES _CP_ON | ; Specifies 1 fuse setting per line. |
Digit = 43h | ; Assign value 43h to Digit |
Max EQU 1Ah | ; Assign value 1Ah to Max |
ORG 10h | ; Set assembly address to 10h |
Count DS 2 | ; Define 2 bytes at 10h & 11h |
; Bytes can be referred to | |
; later as Count and Count+1 | |
ID 1234h | ; Set 16C5x ID to 1234h |
ID 'ABCD' | ; Set newer PIC ID to 'ABCD' |
INCLUDE 'KEYS.SRC' | ; Include KEYS.SRC file at |
; point of insertion | |
RESET Start | ; Set 16C5x reset jump to |
; location at Start | |
Start mov Count,#00 | ; This will be executed |
; when PIC is reset | |
EEORG 10h | ; Set EEPROM address to 10h |
EEDATA 02h,88h,34h | ; Store 3 bytes in EEPROM |
এখন যে কোনও অ্যাসেম্বলি ভাষা প্রোগ্রামের মূল ফর্মটি দেওয়া হয়েছে, এটি কীভাবে তৈরি করা হয়, একত্রিত হয় এবং চালনার জন্য প্রস্তুত হয়? কার্যনির্বাহী সংসদীয় ভাষা প্রোগ্রাম তৈরির পদক্ষেপগুলি নিম্নরূপরেখানো হয়েছে।
1. প্রথমে আমরা প্রোগ্রামটি 2-1 এর মতো প্রোগ্রামে টাইপ করতে একটি সম্পাদক ব্যবহার করি। অনেক দুর্দান্ত সম্পাদক বা ওয়ার্ড প্রসেসর উপলব্ধ যেগুলি প্রোগ্রাম তৈরি এবং / বা সম্পাদনা করতে ব্যবহৃত হতে পারে। একটি বহুল ব্যবহৃত সম্পাদক হ'ল এমএস-ডস ইডিট প্রোগ্রাম (বা উইন্ডোজে নোটপ্যাড), যা সমস্ত মাইক্রোসফ্ট অপারেটিং সিস্টেমের সাথে আসে। লক্ষ্য করুন যে সম্পাদককে অবশ্যই একটি ASCII ফাইল তৈরি করতে সক্ষম হতে হবে। অনেক সমাবেশকারীর জন্য, ফাইলের নামগুলি সাধারণ ডস কনভেনশন অনুসরণ করে, তবে উত্স ফাইলটিতে আপনি কোন এসেম্বলার ব্যবহার করছেন তার উপর নির্ভর করে "asm" বা "src" এক্সটেনশন রয়েছে। কনভেনশনটির জন্য আপনার এসেম্বলারকে পরীক্ষা করে দেখুন উত্স ফাইলের জন্য "asm" এক্সটেনশনটি পরবর্তী পদক্ষেপে কোনও এসেম্বলারের দ্বারা ব্যবহৃত হয়।
2.পদক্ষেপ 1 এ তৈরি প্রোগ্রাম কোডযুক্ত "asm" উত্স ফাইলটি একটি 8051 এসেমব্লারকে খাওয়ানো হয়। একত্রিতকারী নির্দেশাবলী রূপান্তর করে
Figure 2-2. Steps to Create a Program |
3.এসেমব্লারদের একটি তৃতীয় ধাপ প্রয়োজন যা লিঙ্কিং বলে। লিঙ্ক প্রোগ্রামটি এক বা লাগে
আরও অবজেক্ট ফাইল এবং এক্সটেনশন "অ্যাবস" সহ একটি নিখুঁত অবজেক্ট ফাইল তৈরি করে
এই অ্যাবিএস ফাইলটি 8051 প্রশিক্ষক দ্বারা ব্যবহার করা হয় যার একটি মনিটর প্রোগ্রাম রয়েছে।
4.এরপরে, "অ্যাবস" ফাইলটিকে "ওএইচ" নামে একটি প্রোগ্রামে খাওয়ানো হয় (হেক্স কনভার্ট করার উদ্দেশ্যে বস্তু)
এর), যা এক্সটেনশান "হেক্স" সহ একটি ফাইল তৈরি করে যা রমে জ্বলতে প্রস্তুত।
এই প্রোগ্রামটি সমস্ত 8051 এসেম্বেলারদের সাথে আসে। সাম্প্রতিক উইন্ডোজ ভিত্তিক একত্রিত
বিলাররা পদক্ষেপগুলি 2 থেকে 4 এক ধাপে একত্রিত করে।
5.6 Identify the files in assembly language program.
- File Descriptor
- File Pointer
- File Handling System Calls
- Creating and Opening a File
- Opening an Existing File
- Reading from a File
- Writing to a File
- Closing a File
- Updating a File
5.7 Explain the step-by-step action of the 8051 upon applying power on it.
.......................................................coming soon
5.8 Describe simple assembly language program for the 8051.
LED programs with 8051 Microcontrller
1. WAP to toggle the PORT1 LEDs
ORG 0000H
TOGLE: MOV P1, #01 //move 00000001 to the p1 register//
CALL DELAY //execute the delay//
MOV A, P1 //move p1 value to the accumulator//
CPL A //complement A value //
MOV P1, A //move 11111110 to the port1 register//
CALL DELAY //execute the delay//
SJMP TOGLE
DELAY: MOV R5, #10H //load register R5 with 10//
TWO: MOV R6, #200 //load register R6 with 200//
ONE: MOV R7, #200 //load register R7 with 200//
DJNZ R7, $ //decrement R7 till it is zero//
DJNZ R6, ONE //decrement R7 till it is zero//
DJNZ R5, TWO //decrement R7 till it is zero//
RET //go back to the main program //
END
TOGLE: MOV P1, #01 //move 00000001 to the p1 register//
CALL DELAY //execute the delay//
MOV A, P1 //move p1 value to the accumulator//
CPL A //complement A value //
MOV P1, A //move 11111110 to the port1 register//
CALL DELAY //execute the delay//
SJMP TOGLE
DELAY: MOV R5, #10H //load register R5 with 10//
TWO: MOV R6, #200 //load register R6 with 200//
ONE: MOV R7, #200 //load register R7 with 200//
DJNZ R7, $ //decrement R7 till it is zero//
DJNZ R6, ONE //decrement R7 till it is zero//
DJNZ R5, TWO //decrement R7 till it is zero//
RET //go back to the main program //
END
No comments