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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2236|回復: 0
收起左側

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

[復制鏈接]
ID:270150 發(fā)表于 2018-1-2 13:44 | 顯示全部樓層 |閱讀模式
   實例: movl     %eax,    %ebx        #32位的EAX寄存器值傳送給32為的EBX寄存器值
       movx,其中 x 可以是下面的字符:
            1l用于32位的長字值
            2w用于16位的字值
            3b用于8位的字節(jié)值
testAddr    .usect         "MtCtrlP1",               1
MtCtrlP1段保留一個字
輔助寄存器(XAR0~XAR7)
間接尋址方式:
   mov   acc,     #0
   movl  @xid,    acc
執(zhí)行結果: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
使得符號對連接器可見,變?yōu)閷φ麄工程可用的全局變量
.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個字節(jié),用指定的數據對存儲單元進行初始化
label:  .byte  expr    ;label是程序標號,expr可以是-128~255的數字,也可是字符
a:  .byte  #1  ;等價于C中的char a=1;
.short
在存儲器中分配2個字節(jié),用指定的數據對存儲單元進行初始化
a: .short 0x1234
.word / .long
在存儲器中分配4個字節(jié),用指定的數據對存儲單元進行初始化
a: .word 0x12345678
.long
在存儲器中分配個字節(jié),用指定的數據對存儲單元進行初始化
.quad
在存儲器中分配8個字節(jié),用指定的數據對存儲單元進行初始化
a: .quad 0x12345678 ;等價于C中的long a=0x1234567812345678
.float
在存儲器中分配4個字節(jié),用指定的浮點數據對存儲單元進行初始化
a: .float 1.11
.space/.skip
用于分配一塊連續(xù)的存儲區(qū)域并初始化為指定的值,如果后面的填充值省略不寫則在后面填充為0;
label: .spacesize,expr     ;expr可以是4字節(jié)以內的浮點數
a:  space 8, 0x1
.string
定義一個字符串,默認是string8,還有string16,string32,string64
a: .space "hello world!"
.rept
重復執(zhí)行接下來的指令,以.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        表示匯編結束

回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: www.黄色com| 午夜影院福利 | 毛片av在线| h片在线观看 | 中文字幕欧美日韩 | www.国产精品.com | 91精品国产日韩91久久久久久 | 欧美性猛交99久久久久99按摩 | 欧美三级韩国三级日本三斤在线观看 | 国产一区二区在线播放 | 精品一区二区三区视频 | 中文字幕免费看 | 亚洲欧美国产毛片在线 | 69视频在线观看 | 国产中文字幕一区二区 | 国产欧美一区二区三区视频在线观看 | 欧美成人精品 | 日韩高清精品免费观看 | 日韩综合精品 | 国产欧美精品一区二区三区 | 亚洲国产精品久久久久 | 人人射人人干 | 婷婷四房综合激情五月 | 日韩精品一区二区在线 | av狠狠干 | 午夜影院在线 | 免费看的黄色片 | 日韩精品视频在线播放 | 午夜黄色影院 | 亚洲综合影院 | 看片地址 | 91午夜理伦私人影院 | 日韩国产欧美 | 黄色一级视频网站 | 日韩国产一区二区三区 | 日韩在线不卡视频 | 欧美激情精品 | av免费网站 | 成人动漫在线看 | 黄色a毛片| 日韩免费观看 |