معرفی با مثال هایی از Emu8086

🔗مطالب مرتبط
می توانید مخزن مربوطه را در موارد زیر بیابید:
🐱🏍گیت هاب
می توانید با من در ارتباط باشید:
🧬لینکداین
رزومه 🧾
در اینجا ما یک معرفی کوتاه با نمونه های زیادی از اسکریپت های Emu8086 خواهیم داشت.
[WARNING ⚠️] این سطح پایینی از برنامه نویسی است، بنابراین توصیه می کنم اینقدر الهام بگیرید. 😁 Emu808 چیست؟
EMU8086 شبیه ساز است که به شما امکان می دهد برنامه های نوشته شده به زبان اسمبلی را روی رایانه ویندوزی اجرا و آزمایش کنید. این یک ابزار نرمافزاری است که میتواند سختافزار و نرمافزار یک ریزپردازنده، بهویژه ریزپردازنده اینتل 8086 را که در کامپیوتر اصلی IBM استفاده میشد، شبیهسازی کند.
از شبیه ساز می توان برای نوشتن، اشکال زدایی و آزمایش برنامه ها برای معماری 8086 استفاده کرد. این محیطی را فراهم می کند که شبیه به سخت افزار واقعی برنامه اجرا می شود و به برنامه نویسان اجازه می دهد کدی را توسعه دهند که برای پلتفرم سخت افزاری خاص بهینه شده است.
EMU8086 در بین دانشجویان و علاقه مندان به یادگیری برنامه نویسی زبان اسمبلی و همچنین مهندسی معکوس و نرم افزارهای دیباگ محبوب است. همچنین شامل یک اسمبلر داخلی است که به کاربران اجازه می دهد برنامه ها را مستقیماً در شبیه ساز بنویسند و مونتاژ کنند.
مونتاژ چیست؟
زبان اسمبلی یک زبان برنامه نویسی سطح پایین است که برای نوشتن برنامه هایی که توسط ریزپردازنده کامپیوتر اجرا می شوند استفاده می شود. این یک نمایش نمادین از کد زبان ماشین است که می تواند توسط CPU (واحد پردازش مرکزی) یک کامپیوتر اجرا شود.
برنامههای زبان اسمبلی معمولاً برای کنترل مستقیم سختافزار استفاده میشوند، زیرا میتوان از آنها برای دستکاری تک تک بیتها و بایتهای حافظه رایانه و رجیسترهای CPU استفاده کرد. برخلاف زبانهای برنامهنویسی سطح بالا مانند جاوا یا پایتون که خواندن و نوشتن آسانتر هستند اما برای اجرا به مترجم یا کامپایلر نیاز دارند، برنامههای زبان اسمبلی با استفاده از کدهای یادگاری نوشته میشوند که با دستورالعملهای خاص CPU مطابقت دارند.
نوشتن برنامهها به زبان اسمبلی میتواند چالشبرانگیز باشد، زیرا برنامهنویسان باید درک خوبی از سختافزار زیربنایی داشته باشند و بتوانند کدی را بنویسند که هم کارآمد و هم مختصر باشد. با این حال، زبان اسمبلی می تواند در شرایطی که عملکرد بالا یا کنترل سطح پایین سخت افزار مورد نیاز است، مانند سیستم های جاسازی شده، سیستم عامل ها یا درایورهای دستگاه مفید باشد.
مثال ها
خوب، اکنون چند نمونه را خواهیم دید. اگر می خواهید این برنامه ها را اثبات کنید می توانید Emu8086 را دانلود کنید به یاد داشته باشید که این فقط برای سیستم های ویندوز است.
1️⃣نمونه ساده انتقال داده ها
; Perform a program that exchanges the contents
; of two decimal values defined in data1 and data2
.data
data1 db 11
data2 db 22
.code
EXCHANGE:
MOV AL, data1
MOV AH, data2
MOV data1, AH
MOV data2, AL
END:
HLT
2️⃣مثال ساده (نه واقعا) از ضرب دو عدد به صورت تعاملی
; Make the multiplication of two numbers entered by keyboard,
; to store the result in the result variable
; print the result on the screen
INCLUDE 'EMU8086.INC'
org 100h
.data
Result db ?
.code
INIT_VAR:
MOV Result, 0
GET_VALUES:
CALL CLEAR_SCREEN
CALL PTHIS
DB "SET A MULTIPLIER: ",0
CALL SCAN_NUM
MOV BL, CL
CALL CLEAR_SCREEN
CALL PTHIS
DB "SET A MULTIPLICATOR: ",0
CALL SCAN_NUM
MOV AL, CL
MULTIPLY:
ADD Result, BL
DEC AL
JZ SHW_RESULT
JMP MULTIPLY
SHW_RESULT:
CALL CLEAR_SCREEN
CALL PTHIS
DB "RESULT IS: ", 0
MOV AL, Result
CALL PRINT_NUM
END:
DEFINE_PTHIS
DEFINE_SCAN_NUM
DEFINE_PRINT_NUM
DEFINE_PRINT_NUM_UNS
DEFINE_CLEAR_SCREEN
HLT
3️⃣بسیار ساده (قطعاً نه واقعاً) مثالی از یک ماشین حساب
; Perform a program that works as a calculator of 2 whole numbers,
; and allow the 4 basic operations. The keyboard must be entered by the
; numbers and the operation to be performed. Then print the result obtained.
INCLUDE "EMU8086.INC"
ORG 0x100h
.DATA
OPTION DB 0
VALUE1 DB 0
VALUE2 DB 0
RESULT DB 0
.CODE
START:
GET_OPERATION:
CALL PTHIS
DB "SET A OPTION. 1-SUM, 2-SUBSTRACTION, 3-MULT, 4-DIVISION: ",0
MOV CX, 0
CALL SCAN_NUM
MOV OPTION, CL
GET_NUMS:
CALL CLEAR_SCREEN
CALL PTHIS
DB "SET VALUE 1: ",0
MOV CX, 0
CALL SCAN_NUM
MOV VALUE1, CL
CALL CLEAR_SCREEN
CALL PTHIS
DB "SET VALUE 2: ",0
MOV CX, 0
CALL SCAN_NUM
MOV VALUE2, CL
SELECT_OPT:
MOV AL, OPTION
SUB AX, 1
JZ SUM
MOV AL, OPTION
SUB AX, 2
JZ RESTA
MOV AL, OPTION
SUB AX, 3
JZ MULT
MOV AL, OPTION
SUB AX, 4
JZ DIVISION
JMP NO_VALID
NO_VALID:
CALL CLEAR_SCREEN
CALL PTHIS
DB "OPTION NO VALID",0
JMP END
SUM:
MOV AX, 0
MOV AL, VALUE1
ADD AL, VALUE2
MOV RESULT, AL
CALL CLEAR_SCREEN
CALL PTHIS
DB "RESULT DE SUM: ",0
MOV AX, 0
MOV AL, RESULT
CALL PRINT_NUM
JMP END
RESTA:
MOV AX, 0
MOV AL, VALUE1
SUB AL, VALUE2
MOV RESULT, AL
CALL CLEAR_SCREEN
CALL PTHIS
DB "RESULT DE RESTA: ",0
MOV AX, 0
MOV AL, RESULT
CALL PRINT_NUM
JMP END
MULT:
MOV AX, 0
MOV BX, 0
MOV AL, VALUE1
MOV BL, VALUE2
IMUL BL
MOV RESULT, AL
CALL CLEAR_SCREEN
CALL PTHIS
DB "RESULT DE MULT: ",0
MOV AX, 0
MOV AL, RESULT
CALL PRINT_NUM
JMP END
DIVISION:
MOV AX, 0
MOV AL, VALUE1
MOV BL, VALUE2
IDIV BL
MOV RESULT, AL
CALL CLEAR_SCREEN
CALL PTHIS
DB "RESULT DE DIVISION: ",0
MOV AX, 0
MOV AL, RESULT
CALL PRINT_NUM
JMP END
END:
HLT
DEENDE_PTHIS
DEENDE_PRINT_NUM
DEENDE_PRINT_NUM_UNS
DEENDE_SCAN_NUM
DEENDE_CLEAR_SCREEN
می توانید تمرین های بیشتری را در مخزن دریافت کنید
تشکر کنید، لایک کنید و اگر مفید بود/علاقه داشتید به اشتراک بگذارید 😁🖖