一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

匯編學(xué)習(xí)入門之第一個匯編程序

jf_78858299 ? 來源:硬件底褲 ? 作者:酸奶蓋子 ? 2023-02-14 15:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

經(jīng)過理論鋪墊,現(xiàn)在正式進入語言實際操作和效果展示,該篇文章主要是介紹常用命令與命令的慣常用法;編寫、編譯一般的匯編程序;閱讀機器碼。

  • 注意:本文匯編程序是X86環(huán)境下的,移植其他平臺可能產(chǎn)生錯誤。*

一、常用的命令

匯編代碼主要由助記符和操作數(shù)組成,格式通常如下

例:

MOV AX,0x10

上述例子只是一個簡單的舉例,事實上,mov指令還有能在多種用法,如下圖所示。

圖片

將上述上圖抽象出來便有以下關(guān)系:

MOV 目的,源

既:

MOV reg/mem,reg/mem/Imm

其中:

reg 寄存器

mem 內(nèi)存

imm立即數(shù)

又可以在名稱后面跟數(shù)字表示位數(shù),如imm32 就是可以操作32位數(shù)據(jù)。

必須明確,源操作數(shù)位數(shù)必須與目的操作數(shù)位數(shù)相同。

注:學(xué)習(xí)更多指令語法參考文末百度云書籍。

對機器而言這種編碼組織形式是高效的,作為人類這種高效無疑增加了復(fù)雜性。

現(xiàn)代不是計算機剛問世的時期,現(xiàn)代工程師要追求最優(yōu)解。

經(jīng)過工程師迭代,在匯編語言基礎(chǔ)上開發(fā)出來的編譯器普遍具有偽指令、標(biāo)號等功能以便源文件具有較高可讀性。

例:

Start:;標(biāo)號聲明該段代碼代號,標(biāo)號不會參與編譯過程

MOV AX,0x10       ;0x10復(fù)制給AX寄存器

   MOV CX,0x00       ;0x00復(fù)制給CX寄存器

  ADD AX,CX           ;AX寄存器值加上CX寄存器值

將上述程序存放起來,命名為10_01.asm,.asm為匯編源文件,使用NASM編譯。

編譯命令:nasm -f bin .\\10_01.asm -o .\\10_01.bin

其中:

nasm 執(zhí)行程序

10_01.asm 源文件

-f bin 指定輸出文件格式為.bin

注:更多指令語法參考文末百度云書籍。

編譯后將.bin文件打開得到如下圖數(shù)據(jù):

圖片

為研究方便,再對輸出文件進行反匯編。

將.bin文件在0x7c00處反編譯

使用命令:ndisasm -o 0x7c00 .\\10_01.bin >> .\\10_01-1.asm

得到:

00007C00B81000 mov ax,0x10

00007C03B90000 mov cx,0x0

00007C06 01C8 add ax,cx

現(xiàn)在所有東西都一目了然,在.bin文件中:

B8為mov AX指令所對應(yīng)的機器碼,因為AX寬16位,而0x10為8位所以補兩個0湊夠16位,X86立即數(shù)先低位后高位存放0010在內(nèi)存中便是1000;B9同理。

01為add指令機器碼,C8代表AX,CX兩個寄存器值相加。

  • 二、Helloworld

現(xiàn)在了解了簡單的匯編語言,我們必須要查看一下效果。

為此,helloworld雖遲但到!

1、建立helloworld.asm

圖片

2、輸入以下指令

org 07c00h ;程序起始位07c00h

mov ax,cs

    mov ds,ax

    mov es,ax

    call DispStr    

    jmp $     ;死循環(huán)

DispStr:;字符串調(diào)用函數(shù)

mov ax,BootMessage

    mov bp,ax               ;串地址

    mov cx,11               ;串長度

    mov ax,01301h      ;AH = 13,AL = 01h

    mov bx,000ah  ;黑底綠字

    mov dl,0

    int 10h      ;10h號中斷

    ret

    BootMessage:db "Helloworld!"

    times 510 - ($-$$)db  0

;生成一串512字節(jié)二進制代碼

dw 0xaa55  ;結(jié)束標(biāo)志

3、編譯

nasm -f bin .\\helloworld.asm -o .\\helloworld.bin

4、效果

圖片

上述源碼看客們可以先行閱讀,下一篇推文對源碼進行解析。

參考文獻:

[1]Nasm.[EB/OL]. http://www.bytekits.com/nasm/intro.html.

[2] 蹦蹦騎士.[EB/OL].https://www.cnblogs.com/alwaysking/p/7623781.html#:~:text=%E7%BC%96%E

[3] 萬一.[EB/OL]. https://www.cnblogs.com/del/archive/2010/03/16/1687665.html.-.

[4]INTEl.[EB/OL]. https://css.csail.mit.edu/6.858/2015/readings/i386.pdf.-.

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

    關(guān)注

    0

    文章

    58

    瀏覽量

    16461
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    679

    瀏覽量

    33967
  • 匯編代碼
    +關(guān)注

    關(guān)注

    0

    文章

    24

    瀏覽量

    7646
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    匯編程序和反匯編程序簡要設(shè)計

    匯編程序和反匯編程序,可以由機器語言得到匯編語言 不是所有都會默認(rèn)從0000H開始,保險起見,還是要在開頭用ORG 0000H,然后加條跳轉(zhuǎn)指令到
    發(fā)表于 12-01 06:34

    51 系列匯編程序設(shè)計的優(yōu)化1

    51 系列匯編程序設(shè)計的優(yōu)化1
    發(fā)表于 05-15 14:55 ?24次下載

    匯編程序編寫

     匯編程序編寫 匯編程序舉例􀂊GISR5: ;優(yōu)先級INT5中斷人口􀂊CLRC INTM ;開總中斷(因為進中斷就自動關(guān)閉總中斷)&
    發(fā)表于 03-30 15:55 ?31次下載

    PCF8563匯編程序

    剛寫的PCF8563匯編程序,請教高手?。?!;***************************************************************;PCF8563時鐘
    發(fā)表于 08-19 17:41 ?90次下載

    EMC系列單片機反匯編程序

    本文提供的EMC系列單片機反匯編程序,希望對你學(xué)習(xí)有所幫助!
    發(fā)表于 06-03 15:32 ?34次下載

    匯編程序100例

    匯編程序100例,方便初學(xué)者快速的入門,加快掌握匯編語言。
    發(fā)表于 11-17 15:22 ?97次下載

    AD和DA轉(zhuǎn)換的c程序和對應(yīng)的匯編程序

    有關(guān)AD和DA轉(zhuǎn)換的c程序和對應(yīng)的匯編程序
    發(fā)表于 11-19 16:43 ?27次下載

    51單片機匯編程序

    51單片機匯編程序包。
    發(fā)表于 01-06 14:12 ?16次下載

    DSP匯編程序優(yōu)化方法的探討

    DSP匯編程序優(yōu)化方法的探討
    發(fā)表于 10-20 10:41 ?5次下載
    DSP<b class='flag-5'>匯編程序</b>優(yōu)化方法的探討

    lcd1602匯編程序,LCD1602匯編顯示程序代碼

    匯編語言書寫的程序翻譯成與等價的機器語言程序的翻譯程序。匯編程序輸入的是用
    發(fā)表于 10-20 15:34 ?1.5w次閱讀
    lcd1602<b class='flag-5'>匯編程序</b>,LCD1602<b class='flag-5'>匯編</b>顯示<b class='flag-5'>程序</b>代碼

    單片機入門匯編程序太陽跟隨系統(tǒng)的程序資料免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是單片機入門匯編程序太陽跟隨系統(tǒng)的程序資料免費下載。
    發(fā)表于 02-20 17:58 ?7次下載
    單片機<b class='flag-5'>入門</b><b class='flag-5'>匯編程序</b><b class='flag-5'>之</b>太陽跟隨系統(tǒng)的<b class='flag-5'>程序</b>資料免費下載

    匯編程序設(shè)計的教程課件免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是匯編程序設(shè)計的教程課件免費下載包括了:匯編語言與匯編器,匯編語言程序規(guī)范,偽指令及應(yīng)用,宏指令及應(yīng)用,
    發(fā)表于 03-16 17:08 ?17次下載
    <b class='flag-5'>匯編程序</b>設(shè)計的教程課件免費下載

    微機的匯編語言及匯編程序設(shè)計學(xué)習(xí)課件免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是微機的匯編語言及匯編程序設(shè)計學(xué)習(xí)課件免費下載包括了:1 概述,2 偽指令,3 表達式及運算符,4 宏指令,5 匯編語言
    發(fā)表于 11-02 08:00 ?6次下載
    微機的<b class='flag-5'>匯編</b>語言及<b class='flag-5'>匯編程序</b>設(shè)計<b class='flag-5'>學(xué)習(xí)</b>課件免費下載

    單片機入門匯編程序--直流電機的控制

    單片機入門匯編程序--直流電機的控制(安徽理士電源技術(shù)有限公司招聘)-該文檔為單片機入門匯編程序--直流電機的控制總結(jié)文檔,是份不錯的參考
    發(fā)表于 09-22 14:33 ?11次下載
    單片機<b class='flag-5'>入門</b><b class='flag-5'>匯編程序</b>--直流電機的控制

    單片機入門匯編程序--直流電機的單片機控制

    單片機入門匯編程序--直流電機的單片機控制(15kvaups電源技術(shù)協(xié)議)-該文檔為單片機入門匯編程序--直流電機的單片機控制總結(jié)文檔,是
    發(fā)表于 09-22 14:37 ?38次下載
    單片機<b class='flag-5'>入門</b><b class='flag-5'>匯編程序</b>--直流電機的單片機控制