0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

單片機(jī)匯編語言的結(jié)構(gòu)/數(shù)據(jù)類型/匯編指令

科技觀察員 ? 來源:英銳恩 ? 作者:英銳恩 ? 2023-07-07 12:28 ? 次閱讀

開發(fā)匯編語言是為了為機(jī)器級(jí)代碼指令提供助記符或符號(hào),匯編語言程序由助記符組成,因此應(yīng)將它們翻譯成機(jī)器代碼。負(fù)責(zé)這種轉(zhuǎn)換的程序稱為匯編程序。匯編語言通常被稱為低級(jí)語言,因?yàn)樗苯优c CPU 的內(nèi)部結(jié)構(gòu)一起工作。要用匯編語言編程,程序員必須知道 CPU 的所有寄存器

不同的編程語言,如 C、C++、Java 和各種其他語言,被稱為高級(jí)語言,因?yàn)樗鼈儾惶幚?CPU 的內(nèi)部細(xì)節(jié)。相比之下,匯編器用于將匯編語言程序翻譯成機(jī)器代碼(有時(shí)也稱為目標(biāo)代碼或操作碼)。類似地,編譯器將高級(jí)語言翻譯成機(jī)器代碼。例如,要用 C 語言編寫程序,必須使用 C 編譯器將程序翻譯成機(jī)器語言。

一、匯編語言的結(jié)構(gòu)

匯編語言程序是一系列語句,它們要么是 ADD 和 MOV 等匯編語言指令,要么是稱為指令的語句。

一個(gè)指令告訴CPU做什么,而指令(又稱偽指令)給出指令匯編。例如,ADD 和MOV 指令是CPU 運(yùn)行的命令,而ORG 和END 是匯編指令。當(dāng)使用 ORG 指令時(shí),匯編器將操作碼放置到內(nèi)存位置 0,而 END 指示到源代碼的結(jié)尾。程序語言指令由以下四個(gè)字段組成:

[ label: ] mnemonics [ operands ] [;comment ]

其中,上面方括號(hào)“[ ]”表示該字段是可選的。

標(biāo)簽字段允許程序通過名稱來指代一行代碼。標(biāo)簽字段不能超過一定數(shù)量的字符。該助記符和操作數(shù)的字段一起執(zhí)行程序的實(shí)際工作和完成的任務(wù)。像 ADD A , C & MOV C, #68 這樣的語句,其中 ADD 和 MOV 是產(chǎn)生操作碼的助記符;“A,C”和“C,#68”是操作數(shù)。這兩個(gè)字段可以包含指令。指令不生成機(jī)器代碼,僅由匯編程序使用,而指令則被翻譯成機(jī)器代碼供 CPU 執(zhí)行。

二、創(chuàng)建和運(yùn)行8051程序

這里我們將討論匯編語言的基本形式。創(chuàng)建和運(yùn)行匯編語言程序的步驟如下:

首先,我們使用編輯器鍵入類似于上述程序的程序??梢允褂盟?Microsoft 操作系統(tǒng)附帶的 MS-DOS EDIT 程序等編輯器來創(chuàng)建或編輯程序。編輯器必須能夠生成 ASCII 文件。匯編程序在下一步中使用源文件的“asm”擴(kuò)展名。

“asm”源文件包含在步驟1中創(chuàng)建的程序代碼。它被發(fā)送到8051匯編器。然后,匯編器將匯編語言指令轉(zhuǎn)換為機(jī)器代碼指令,并生成一個(gè)“.obj”文件(目標(biāo)文件)和一個(gè)“.lst”文件(列表文件)。它也被稱為源文件,這就是為什么一些匯編程序要求此文件具有“src”擴(kuò)展名的原因?!發(fā)st”文件是可選的。它對(duì)程序非常有用,因?yàn)樗谐隽怂械牟僮鞔a和地址以及匯編程序檢測(cè)到的錯(cuò)誤。

匯編程序需要稱為鏈接的第三步。鏈接程序獲取一個(gè)或多個(gè)目標(biāo)文件,并生成一個(gè)擴(kuò)展名為“abs”的絕對(duì)目標(biāo)文件。

接下來,“abs”文件被饋送到一個(gè)名為“OH”(對(duì)象到十六進(jìn)制轉(zhuǎn)換器)的程序,該程序創(chuàng)建一個(gè)擴(kuò)展名為“.hex”的文件,準(zhǔn)備燒入 ROM。

三、數(shù)據(jù)類型

8051單片機(jī)包含單一的 8 位數(shù)據(jù)類型,每個(gè)寄存器也是 8 位大小。程序員必須分解大于 8 位(00 到 FFH,或十進(jìn)制的 255)的數(shù)據(jù),以便 CPU 可以處理這些數(shù)據(jù)。

DB(定義字節(jié))

DB 指令是匯編程序中使用最廣泛的數(shù)據(jù)指令。它用于定義 8 位數(shù)據(jù)。它還可用于定義十進(jìn)制、二進(jìn)制、十六進(jìn)制或 ASCII 格式的數(shù)據(jù)。對(duì)于十進(jìn)制,十進(jìn)制數(shù)后的“D”是可選的,但對(duì)于“B”(二進(jìn)制)和“Hl”(十六進(jìn)制)是必需的。

要指示 ASCII,只需將字符放在引號(hào)中('like this')。匯編器會(huì)自動(dòng)為數(shù)字/字符生成 ASCII 代碼。DB 指令是唯一可用于定義大于兩個(gè)字符的 ASCII 字符串的指令;因此,它應(yīng)該用于所有 ASCII 數(shù)據(jù)定義。下面給出了一些 DB 的例子:

ORG  500H

DATA1: DB 28 ;DECIMAL (1C in hex)

DATA2: DB 00110101B ;BINARY (35 in hex)

DATA3: DB 39H ;HEX

ORG 510H

DATA4: DB "2591" ;ASCII NUMBERS

ORG 520H

DATA6: DA "MY NAME IS Michael" ;ASCII CHARACTERS

ASCII 字符串周圍可以使用單引號(hào)或雙引號(hào)。DB 還用于以字節(jié)大小的塊分配內(nèi)存。

四、匯編指令

8051 的一些指令如下:

ORG (origin) - origin 指令用于指示地址的開頭。它采用十六進(jìn)制或十進(jìn)制格式的數(shù)字。如果在數(shù)字后提供 H,則數(shù)字被視為六進(jìn)制,否則為十進(jìn)制。匯編程序?qū)⑹M(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù)。

EQU (equate) - 用于定義一個(gè)常量而不占用內(nèi)存位置。EQU 將一個(gè)常量值與一個(gè)數(shù)據(jù)標(biāo)簽相關(guān)聯(lián),以便該標(biāo)簽出現(xiàn)在程序中,它的常量值將替換該標(biāo)簽。在執(zhí)行指令“MOV R3,#COUNT”時(shí),寄存器 R3 將加載值 25(注意 # 符號(hào))。使用 EQU 的好處是程序員可以改變一次,匯編器會(huì)改變它的所有出現(xiàn);程序員不必搜索整個(gè)程序。

END 指令- 它表示源 (asm) 文件的結(jié)尾。END 指令是程序的最后一行;END 指令之后的任何內(nèi)容都被匯編程序忽略。

五、匯編語言中的標(biāo)簽

匯編語言中的所有標(biāo)簽必須遵循以下規(guī)則:

每個(gè)標(biāo)簽名稱必須是唯一的。匯編語言編程中用于標(biāo)簽的名稱由大小寫字母、數(shù)字 0 到 9 和特殊字符如問號(hào) (?)、句點(diǎn) (.)、@、下劃線 (_)、和美元($)。第一個(gè)字符應(yīng)該是字母字符;它不能是一個(gè)數(shù)字。保留字不能用作程序中的標(biāo)簽。例如,ADD 和 MOV 字是保留字,因?yàn)樗鼈兪侵噶钪浄?/p>

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6030

    文章

    44489

    瀏覽量

    631975
  • 匯編語言
    +關(guān)注

    關(guān)注

    14

    文章

    409

    瀏覽量

    35693
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    單片機(jī)編程之匯編語言基礎(chǔ)-常用指令和程序模式

    單片機(jī)編程分為單片機(jī)C語言編程和單片機(jī)匯編語言編程兩種類型
    發(fā)表于 07-26 10:18 ?1.5w次閱讀
    <b class='flag-5'>單片機(jī)</b>編程之<b class='flag-5'>匯編語言</b>基礎(chǔ)-常用<b class='flag-5'>指令</b>和程序模式

    單片機(jī)編程之匯編語言基礎(chǔ)-PIC單片機(jī)匯編指令

    PIC單片機(jī)匯編語言編程教程,其中PIC單片機(jī)的兩條偽指令為:EQU(標(biāo)號(hào)賦值偽指令)ORG(地址定義偽
    發(fā)表于 07-26 11:32 ?3052次閱讀

    MCS-51單片機(jī)指令系統(tǒng)和匯編語言程序?qū)嵗?/a>

    MCS-51單片機(jī)指令系統(tǒng)和匯編語言程序?qū)嵗? 介紹MCS-51的指令系統(tǒng)和匯編語言編程,了解處理器的軟件資源3.1 MCS-51
    發(fā)表于 03-18 22:28 ?457次下載
    MCS-51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>指令</b>系統(tǒng)和<b class='flag-5'>匯編語言</b>程序?qū)嵗? />    </a>
</div>                            <div   id=

    51單片機(jī)匯編語言教程:單片機(jī)數(shù)據(jù)傳遞類指令

    51單片機(jī)匯編語言教程:9課單片機(jī)數(shù)據(jù)傳遞類指令
    發(fā)表于 01-19 15:25 ?0次下載

    51單片機(jī)匯編語言教程_單片機(jī)尋址方式與指令系統(tǒng)

    51單片機(jī)匯編語言教程:8課單片機(jī)尋址方式與指令系統(tǒng)
    發(fā)表于 01-19 15:25 ?0次下載

    51單片機(jī)匯編語言教程_單片機(jī)并行口結(jié)構(gòu)

    51單片機(jī)匯編語言教程:6課單片機(jī)并行口結(jié)構(gòu)
    發(fā)表于 01-19 15:26 ?0次下載

    51單片機(jī)匯編語言教程_單片機(jī)匯編課程簡(jiǎn)介

    51單片機(jī)匯編語言教程:1課單片機(jī)匯編課程簡(jiǎn)介
    發(fā)表于 01-19 15:27 ?0次下載

    51單片機(jī)匯編語言指令教程匯集1

    51單片機(jī)匯編語言指令教程通俗易懂 適合初學(xué)者。
    發(fā)表于 05-20 11:05 ?8次下載

    PIC單片機(jī)指令系統(tǒng)和匯編語言程序設(shè)計(jì)

    PIC單片機(jī)指令系統(tǒng)和匯編語言程序設(shè)計(jì),快來下載吧
    發(fā)表于 09-01 18:17 ?0次下載

    PIC8位單片機(jī)匯編語言常用指令的識(shí)讀

    PIC8位單片機(jī)匯編語言常用指令
    發(fā)表于 12-07 15:04 ?2次下載

    AVR單片機(jī)結(jié)構(gòu)匯編語言簡(jiǎn)析

    學(xué)單片機(jī)那么久了,感覺想要深入,還得看匯編語言,至少得了解單片機(jī)內(nèi)部結(jié)構(gòu)。 下面就以ATmega16為例,介紹一下AVR單片機(jī)結(jié)構(gòu)
    發(fā)表于 12-03 17:37 ?1282次閱讀
    AVR<b class='flag-5'>單片機(jī)</b><b class='flag-5'>結(jié)構(gòu)</b>和<b class='flag-5'>匯編語言</b>簡(jiǎn)析

    單片機(jī) | 基礎(chǔ)匯編語言編程實(shí)例

    單片機(jī)匯編語言編程
    的頭像 發(fā)表于 06-05 18:04 ?1w次閱讀

    pic單片機(jī)的各種匯編語言指令解析

    因此,熟練 pic 單片機(jī)編程尤為重要。為保證大家能準(zhǔn)確、熟練掌握 pic 單片機(jī)的使用,本文特帶來 pic 單片機(jī)的各種匯編語言指令的講解
    發(fā)表于 03-06 09:31 ?2397次閱讀

    51單片機(jī)匯編語言指令的資料合集免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是51單片機(jī)匯編語言指令的資料合集免費(fèi)下載。
    發(fā)表于 11-03 08:00 ?8次下載

    MCS-51單片機(jī)匯編語言程序設(shè)計(jì)

    文章目錄前言一、匯編的方法1.手工匯編:2.機(jī)器匯編:二、偽指令一、匯編語言指令
    發(fā)表于 11-05 12:21 ?32次下載
    MCS-51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>匯編語言</b>程序設(shè)計(jì)