久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2225|回復: 0
打印 上一主題 下一主題
收起左側

自己總結的匯編學習小筆記-入門

[復制鏈接]
跳轉到指定樓層
樓主
ID:270150 發表于 2018-1-2 13:44 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
   實例: movl     %eax,    %ebx        #32位的EAX寄存器值傳送給32為的EBX寄存器值
       movx,其中 x 可以是下面的字符:
            1l用于32位的長字值
            2w用于16位的字值
            3b用于8位的字節值
testAddr    .usect         "MtCtrlP1",               1
MtCtrlP1段保留一個字
輔助寄存器(XAR0~XAR7)
間接尋址方式:
   mov   acc,     #0
   movl  @xid,    acc
執行結果:xid=0; xid   是32位,不能賦立即數,需通過acc累加器賦值
mov   @_iqr, #0  
iqr是16位,能賦立即數
對定義的變量賦值需要加@,對內部寄存器賦值不需要加@
   mov   acc,     #PWMTPrd<<15
   mov   *(0:CMPR1), ah   ;取ACC的高位
   mov   *(0:CMPR2), ah
   mov   *(0:CMPR3), ah
;AH 16bits High half of ACC 0x0000
;AL 16 bits Low half of ACC 0x0000
LCR  *XARn      使用RPC的間接長調用
LCR  22bitAddr   使用RPC的長調用,PC=22位程序地址
lretr              程序返回
.def _Delay_asm用來定義函數名;
.global  _Delay_asm將函數名全局化,以便在C文件中能夠調用;
.sect".delayasmpage"將函數定位到定義的段中,也可以是.text,可以靈活運用;
_Delay_asm:為函數標號,注意一定在前面加上下劃線_否則C文件不能調用;
LRETR是函數返回,采用了RPC時必須用該指令。
.c28_amode    ; 通知編譯器檢查C28x的語法
file:///C:/Users/buaalp/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg
符號定義偽指令
.global,.local,.set,.equ
.global
使得符號對連接器可見,變為對整個工程可用的全局變量
.global symbol
.local
表示符號對外部不可見,只對本文件可見
.local symbol
.set
給一個全局變量或局部變量賦值,和.equ的功能一樣
.set symbol expr
.set start, 0x40
.set start, 0x50
mov r1, #start      ;r1里面是0x50
.equ
和.set一樣,只是格式不同
symbol .equ  expr
start  .equ, 0x40
start  .equ, 0x50
mov r1, #start      ;r1里面是0x50
數據定義偽指令
.byte,.short,.long,.quad,.float,.string,.asciz,.ascii,.rept
.byte
在存儲器中分配1個字節,用指定的數據對存儲單元進行初始化
label:  .byte  expr    ;label是程序標號,expr可以是-128~255的數字,也可是字符
a:  .byte  #1  ;等價于C中的char a=1;
.short
在存儲器中分配2個字節,用指定的數據對存儲單元進行初始化
a: .short 0x1234
.word / .long
在存儲器中分配4個字節,用指定的數據對存儲單元進行初始化
a: .word 0x12345678
.long
在存儲器中分配個字節,用指定的數據對存儲單元進行初始化
.quad
在存儲器中分配8個字節,用指定的數據對存儲單元進行初始化
a: .quad 0x12345678 ;等價于C中的long a=0x1234567812345678
.float
在存儲器中分配4個字節,用指定的浮點數據對存儲單元進行初始化
a: .float 1.11
.space/.skip
用于分配一塊連續的存儲區域并初始化為指定的值,如果后面的填充值省略不寫則在后面填充為0;
label: .spacesize,expr     ;expr可以是4字節以內的浮點數
a:  space 8, 0x1
.string
定義一個字符串,默認是string8,還有string16,string32,string64
a: .space "hello world!"
.rept
重復執行接下來的指令,以.rept開始,以.endr結束
.rept cnt  ;cnt是重復次數
...
.endr
匯編控制偽操作
流程控制偽指令主要yy.if .else .endif .macro .endm .exitm
.if .else .endif
.if logical-expression
...
.elseif logical-expression2
...
.else
...
.endif
.macro .endm .exitm
該偽指令可以將一段代碼定義為一個整體,稱為宏指令,然后就可以在程序中通過宏指令多次調用該段代碼,而.exitm指令用來退出當前的宏指令,宏指令可以使用一個或多個參數,當宏操作被展開時,這些參數被相應的值替換。
包含在.macro和。endm之間的指令序列稱為宏定義體。在宏定義體的第一行應聲明宏的原型,包含宏名所需的參數,然后就可以在匯編程序中通過宏名來調用該指令序列,在源程序被編譯時,匯編器將宏調用展開,用宏定義中的指令序列代替程序中的宏調用,并將實際參數的值傳遞給宏定義中的形式參數
.macro macroname macargs ...
;code
.endm
雜項
.align      用于使程序當前位置滿足一定的對齊方式
.section    用來定義一個段的偽指令
.data       用來定義一個數據段
.text       用來定義一個代碼段
.include    用來包含一個頭文件   
.arm        定義以下代碼使用arm指令集編譯
.code 32    同.arm
.code 16    同.thumb
.thumb      定義以下代碼使用thumb指令集編譯
.extern     用于聲明一個外部符號,用于兼容性其他匯編
.weak       用于聲明一個弱符號,如果這個符號沒有定義,編譯就忽略,而不會報錯
.end        表示匯編結束

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美一区二区三区精品 | 成人一区二区电影 | 国产精品成人一区二区三区 | 天天综合网7799精品 | 国产精品久久久精品 | 日韩中文一区二区三区 | 午夜影院网站 | 久久精品这里精品 | 国产欧美精品一区 | 99精品99| 日韩欧美日韩在线 | 综合色影院 | 中文字幕av一区 | 亚洲人成一区二区三区性色 | 午夜激情国产 | 99在线视频观看 | 久久伊人精品一区二区三区 | 羞羞视频在线观免费观看 | 91免费在线视频 | 精品视频一区二区 | 久久视频精品在线 | 精品中文字幕在线 | 一区二区三区在线观看视频 | 亚洲一区二区三区四区五区中文 | 在线观看久草 | 一区二区三区四区视频 | 韩国理论电影在线 | 黄色毛片黄色毛片 | 色婷婷精品国产一区二区三区 | 国产一区二区精品在线观看 | 国产精品不卡一区 | 亚洲成人99 | 久久久精品综合 | 在线观看成人小视频 | 午夜精品久久久久久久久久久久 | 97久久精品午夜一区二区 | 日韩α片 | 国产一级电影在线观看 | 欧美三级视频在线观看 | 久久久蜜臀国产一区二区 | 欧美黑人体内she精在线观看 |