那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

匯編學習入門之第一個匯編程序

jf_78858299 ? 來源:硬件底褲 ? 作者:酸奶蓋子 ? 2023-02-14 15:10 ? 次閱讀

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

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

一、常用的命令

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

例:

MOV AX,0x10

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

圖片

將上述上圖抽象出來便有以下關系:

MOV 目的,源

既:

MOV reg/mem,reg/mem/Imm

其中:

reg 寄存器

mem 內存

imm立即數

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

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

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

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

現代不是計算機剛問世的時期,現代工程師要追求最優解。

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

例:

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

MOV AX,0x10       ;0x10復制給AX寄存器

   MOV CX,0x00       ;0x00復制給CX寄存器

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

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

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

其中:

nasm 執行程序

10_01.asm 源文件

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

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

編譯后將.bin文件打開得到如下圖數據:

圖片

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

將.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

現在所有東西都一目了然,在.bin文件中:

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

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

  • 二、Helloworld

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

為此,helloworld雖遲但到!

1、建立helloworld.asm

圖片

2、輸入以下指令

org 07c00h ;程序起始位07c00h

mov ax,cs

    mov ds,ax

    mov es,ax

    call DispStr    

    jmp $     ;死循環

DispStr:;字符串調用函數

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字節二進制代碼

dw 0xaa55  ;結束標志

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.-.

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 匯編程序
    +關注

    關注

    0

    文章

    58

    瀏覽量

    16208
  • 編譯
    +關注

    關注

    0

    文章

    661

    瀏覽量

    33042
  • 匯編代碼
    +關注

    關注

    0

    文章

    24

    瀏覽量

    7567
收藏 人收藏

    評論

    相關推薦

    匯編程序和反匯編程序簡要設計

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

    51 系列匯編程序設計的優化1

    51 系列匯編程序設計的優化1
    發表于 05-15 14:55 ?24次下載

    匯編程序編寫

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

    PCF8563匯編程序

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

    EMC系列單片機反匯編程序

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

    匯編程序100例

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

    AD和DA轉換的c程序和對應的匯編程序

    有關AD和DA轉換的c程序和對應的匯編程序
    發表于 11-19 16:43 ?27次下載

    51單片機匯編程序

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

    DSP匯編程序優化方法的探討

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

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

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

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

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

    匯編程序設計的教程課件免費下載

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

    微機的匯編語言及匯編程序設計學習課件免費下載

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

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

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

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

    單片機入門匯編程序--直流電機的單片機控制(15kvaups電源技術協議)-該文檔為單片機入門匯編程序--直流電機的單片機控制總結文檔,是
    發表于 09-22 14:37 ?38次下載
    單片機<b class='flag-5'>入門</b><b class='flag-5'>匯編程序</b>--直流電機的單片機控制
    大发888游戏注册送98| 川宜百家乐官网注册号| 江山百家乐官网的玩法技巧和规则 | 网上的百家乐官网怎么才能赢| 天津太阳城橙翠园| 百家乐官网最好的投注方法| 百家乐l路单| 金溪县| 永利高百家乐进不去| 金宝博娱乐城返水| 线上百家乐官网手机版| 娱乐城送38| 百家乐官网冼牌机| 大发888娱乐场 b8| 爱赢百家乐官网的玩法技巧和规则 | 百家乐游戏软件出售| 爱拼| 做生意讲究风水吗| 必胜娱乐城| 在线百家乐3d| 百家乐官网筹码免运费| 威尼斯人娱乐城送钱| 百家乐官网打鱼秘籍| 大发888游戏客户端| 马德里百家乐官网的玩法技巧和规则| 元游棋牌游戏下载| 百家乐注码管理| 博士百家乐官网现金网| 澳门百家乐然后赢| 百家乐官网轮盘| 大发888娱乐场老虎机| 百家乐官网技巧网址| 象棋赌博网| 新锦江百家乐娱乐平台| 视频百家乐官网平台出租| 大发888下载删除| 百家乐娱乐城棋牌| 电子百家乐官网博彩正网| 博狗百家乐的玩法技巧和规则| 女神百家乐官网娱乐城| 金沙娱乐城|