برنامه نویسی

معرفی با مثال هایی از 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

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

می توانید تمرین های بیشتری را در مخزن دریافت کنید


تشکر کنید، لایک کنید و اگر مفید بود/علاقه داشتید به اشتراک بگذارید 😁🖖


نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا