freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

dsp課件第六章匯編語言(已修改)

2025-01-17 19:13 本頁面
 

【正文】 第 6章 匯編語言 匯編語言格式 TMS320匯編語言源程序由源語句組成 。 源語句包括匯編指令 、 偽指令 、 宏指令 。 源語句的一般格式為 [標(biāo)號(hào) ][:] 助記符 [操作數(shù) 1, 操作數(shù) 2, … ] [。注釋 ] 標(biāo)號(hào)域 助記符域 操作數(shù)域 注釋域 注: “ [ ]” 表示該項(xiàng)可缺省 。 例 SYM1 .set 2 ; 符號(hào) SYM1等于 2 BEGIN: LDP SYM1 ; 將 2裝入 DP .word 016h ; 初始化一個(gè)字為 16h 標(biāo)號(hào)域 標(biāo)號(hào)包含 1~ 32個(gè)字母 、 數(shù)字 、 字符 (A~ Z, a~ 2, 0~ 9, —及 $), 可識(shí)別符號(hào)的大小寫 , 且規(guī)定第一個(gè)字符不能是數(shù)字 。 標(biāo)號(hào)可以后隨冒號(hào) (: ), 冒號(hào)并不作為標(biāo)號(hào)的一部分被處理 。 如果不使用標(biāo)號(hào) , 則第一個(gè)字必須是空格或分號(hào)或星號(hào) 。 當(dāng)選用標(biāo)號(hào)時(shí) , 其值是段程序計(jì)數(shù)器 (SPC)的當(dāng)前值 , 標(biāo)號(hào)指向與它們相關(guān)聯(lián)的語句 。 例如 , 如果用 .word偽指令初始化幾個(gè)字 , 那么標(biāo)號(hào)將指向第一個(gè)字 。 行號(hào) SPC 目標(biāo)代碼 源語句 10 0040 000A START: .word 0Ah,3,7 0041 0003 0042 0007 標(biāo)號(hào)也可以單獨(dú)出現(xiàn)在行中 , 此時(shí)它指向下一行中的指令 。 如: 3 0050 HERE: 4 0050 0003 .word 3 ; 此行 SPC無增量 助記符域 助記符是源語句中的關(guān)鍵部分 , 不能缺省 , 它表示本指令的操作類型 。 助記符不能從源語句的第一列開始 , 如果從第一列開始 , 將被解釋為標(biāo)號(hào) 。 助記符包括下列操作碼之一: (1)匯編指令 (例如 ABS, MPY,SPH); (2)偽指令 (例如 .data, .fist, .set); (3)宏指令 (例如 .macro, .mexit)。 操作數(shù)域 操作數(shù)域是跟在助記符域后面的操作數(shù)列表 , 可缺省 。 如果多于兩個(gè)操作數(shù) , 則只用逗號(hào)隔開 。 操作數(shù)可以是常數(shù) 、 符號(hào)和表達(dá)式 。 注釋域 注釋域可以從源語句行的任一列開始并直至本行的末尾 , 即僅包括注釋的源語句是有效的 。 如果它從第一列開始則可以用分號(hào) (; )或星號(hào) (*)開始;在行的其他地方開始的注釋 , 必須以分號(hào)開始 。 上述各個(gè)域必須用一個(gè)或多個(gè)空格分開。 1 常數(shù)、字符串和符號(hào) (1)二進(jìn)制整數(shù):以字母 B(或 b)結(jié)尾 , 由二進(jìn)制數(shù)字 (0, 1)組成的數(shù)字串 。 數(shù)字串長度長度最多可達(dá) 16個(gè)二進(jìn)制數(shù)字 , 如 01000110B。 (2)八進(jìn)制整數(shù):以字母 Q(或 q)結(jié)尾 , 由八進(jìn)制數(shù)字 (0~ 7)組成的數(shù)字串 。 數(shù)字串長度最多可達(dá) 6個(gè)八進(jìn)制數(shù)字 , 如 100000Q。 (3)十進(jìn)制整數(shù):以字母 D(或 d)結(jié)尾 (也可缺省 ), 十進(jìn)制整數(shù)由 0~ 9數(shù)字組成 ,范圍從 32678~ 65535, 如 30000。 (4)十六進(jìn)制整數(shù):以字母 H(或 h)結(jié)尾 , 由十六進(jìn)制數(shù)字 0~9和 A~ F(或 a~ f)組成的數(shù)字串 。 數(shù)字串長度最多可達(dá) 4個(gè)十六進(jìn)制數(shù)字 。 (5)字符常數(shù):包含在單引號(hào)中的一個(gè)或兩個(gè)字符的串 。 每個(gè)字符表示為 8位ASCII碼 , 如 ‘ a’定義字符 a, 并在內(nèi)部用 61H表示 。 (6)匯編時(shí)間常數(shù):用 .set偽指令對符號(hào)進(jìn)行賦值 , 賦值的內(nèi)容不同 , 匯編時(shí)符號(hào)所表達(dá)的含義也就不同 。 常數(shù) 例如 , 用 .set向符號(hào)賦值 , 則符號(hào)成為常數(shù) , 為了在表達(dá)式中使用此常數(shù) , 賦予它的值必須是絕對值 。 SHIFT .set 3 LACC *, SHIFT,AR1 也可用 .set將寄存器名賦予符號(hào)常數(shù) , 此時(shí)符號(hào)與寄存器為同一詞 , 如: AUXR1 .set AR1 LACC *, 0, AUXR1 字符串 字符串是包含在雙引號(hào)內(nèi)的一串字符 , 雙引號(hào)是字符串的一部分 。 串的最大長度是變化的 , 并由每一個(gè)使用字符串的偽指令定義 。 字符在內(nèi)部被表示為 8位 ASCII字符 , 如: “ sample program”定義 13個(gè)字符的字符串 sample program。 字符串用于下列場合: (1).copy “filename”中的文件名; (2).sect “section name”中的段名; (3).byte “chasing”中數(shù)據(jù)初始化偽指令; (4).string偽指令的操作數(shù) 。 字符串與字符常數(shù)不同,字符常數(shù)代表一個(gè)單獨(dú)的整數(shù)值,而字符串是字符的列表。 符號(hào) 符號(hào)被用做標(biāo)號(hào) 、 常數(shù)及替代符號(hào) 。 符號(hào)名最多可由 32個(gè)字母和數(shù)字混合組成 (A~Z, a~z, 0~9, $和 _)。 符號(hào)的第一個(gè)字符不能是數(shù)字 ,符號(hào)內(nèi)不能有空格 。 用戶定義的符號(hào)分大小寫 , 例如匯編時(shí) ABC, Abc及 abc被識(shí)別為 3個(gè)不同的符號(hào) 。 表達(dá)式由運(yùn)算符 、 常數(shù)和符號(hào)組成 。 有效表達(dá)式值的范圍是 32768~ +32767。 2 表達(dá)式和運(yùn)算符 表達(dá)式內(nèi)使用的運(yùn)算符的優(yōu)先級見下表: 高 組 運(yùn)算符 說明 優(yōu)先級 1 + ~ 取正 取負(fù) 求反 低 2 * / % 171。 187。 乘 除 求模 左移 右移 3 + ^ | amp。 加 減 按位邏輯異或 按位邏輯或 按位邏輯與 4 = = =或 == != 小于 大于 小于或等于 大于或等于 等于 不等于 宏指令 為了簡化匯編語言源程序的書寫,常常將一些頻繁出現(xiàn)的程序段定義為宏指令。 TMS320系列 DSP匯編器支持宏語言。使用宏的過程要經(jīng)過以下 3個(gè)步驟。 (1)定義宏:用戶在使用宏之前必須先定義宏 。 在程序的任何地方都可以定義一個(gè)宏 。 一般是在源文件開始處定義 , 或者在 .include/ .copy文件中定義 , 或者在宏庫中定義 。 宏定義語句格式如下: 宏名 .macro[形式參數(shù) 1][, 形式參數(shù) 2]… [, 形式參數(shù) n] . . [.mexit] .endm (2)調(diào)用宏:在定義了宏以后 , 就可以在源程序中將宏的名字作為操作碼來調(diào)用 。 格式: 宏名 [實(shí)參數(shù) 1][, 實(shí)參數(shù) 2] [, 實(shí)參數(shù) n] (3)展開宏:匯編器在對源文件進(jìn)行匯編時(shí) , 對調(diào)用的宏進(jìn)行展開 。 在展開過程中 , 匯編器用宏體取代宏調(diào)用語句 , 宏體中的形式參數(shù) (替代符號(hào) )用實(shí)際參數(shù)代替 。 ① 如果某個(gè)形式參數(shù)沒有對應(yīng)的實(shí)參數(shù)為其賦值 , 該形式參數(shù)將被空串(“ ” )代替 。 ② 如果實(shí)參數(shù)的個(gè)數(shù)多于形式參數(shù) , 則余下的實(shí)參數(shù)將賦給最后一個(gè)形式參數(shù) (用逗號(hào)隔開 )。 ③ 如果要把一串變量賦給一個(gè)形式參數(shù) , 或者把一個(gè)逗號(hào) (或分號(hào) )傳給一個(gè)形式參數(shù) , 就必須用引號(hào)將它們引起來 。 ④ 匯編時(shí) , 匯編器先用實(shí)參數(shù)代替形式參數(shù)并展開宏 , 然后把源語句匯編為目標(biāo)代碼 , 并輸出到列表文件中 。 例 宏定義: parms .macro x,y,z a=x b=y c=z .endm 調(diào)用宏: 匯編時(shí)展開宏 parms 100,200 ; a=100 ; b=200 ; c= “ ” parms “100,200,300”,55,66,77 ; a=“100,200,300” ; b=55 ; c= 66,77 通用目標(biāo)文件格式 CCS開發(fā)環(huán)境可以看成是一個(gè)大的軟件包 , 里面包含了源代碼編輯器 , 以及工程文件組織 、 編譯和調(diào)試等一切功能模塊 。 該軟件包里 , shell程序可以完成 3個(gè)功能:編譯 、 匯編和鏈接 。 shell程序缺省在 C盤安裝時(shí) , 被安裝在 C:\ti\c2400\cgtool子目錄下 , 對應(yīng)的文件名為 。 ( 1) 編輯器:包括分析器 、 優(yōu)化器 、 代碼產(chǎn)生器 。 把 C語言程序編譯成匯編語言程序 。 ( 2) 匯編器:把匯編語言源代碼或 C語言已經(jīng)編譯成匯編語言代碼進(jìn)行匯編 , 以產(chǎn)生 COFF目標(biāo)文件 。 ( 3) 鏈接器:將文件鏈接 , 產(chǎn)生可執(zhí)行的目標(biāo)文件 。 使用匯編器可以將匯編語言源程序匯編為目標(biāo)文件 , 用 鏈 接器將若干個(gè)目標(biāo)文件連接成 —個(gè)可被芯片執(zhí)行的可執(zhí)行文件 。 這些目標(biāo)文件的格式稱為通用目標(biāo)文件格式 ( COFF,Common Object File Format)。 通用目標(biāo)文件格式的核心是使程序員在編寫 DSP程序時(shí)基于代碼塊和數(shù)據(jù)塊的概念,而不是一條條指令或一個(gè)個(gè)數(shù)據(jù),基于這種文件格式編寫的 DSP程序可讀性強(qiáng)、可移植性好。 在 COFF文件中,將 代碼塊和數(shù)據(jù)塊稱為 Section,編譯器 /匯編器和鏈接器都提供了有關(guān)的命令來創(chuàng)建塊和對塊進(jìn)行處理,編譯器 /匯編器創(chuàng)建的塊的名稱有些是已經(jīng)定義好的,程序員也可以自己定義塊名。 塊 目標(biāo)文件的最小單位被稱為塊 , 它是在存儲(chǔ)器中占有連續(xù)空間的一塊代碼或數(shù)據(jù) 。 目標(biāo)文件中的每一個(gè)塊都是獨(dú)立的 。 一般地 , COFF目標(biāo)文件應(yīng)包含3個(gè)缺省的塊: .text塊:通常包含可執(zhí)行代碼 。 .data塊:通常包含已初始化的數(shù)據(jù) 。 .bss塊 :通常為未初始化的變量保留空間。 此外,匯編器和連接器允許用戶建立和鏈接自定義的塊,這些塊與 .text, .data類似。所有的塊可以分為兩類: 已初始化塊:包含程序代碼和數(shù)據(jù) 。 如 .text和 .data及 用 .sect或 .asect匯編器命令創(chuàng)建的塊 。 未初始化 塊 :為未初始化數(shù)據(jù)在存儲(chǔ)器映像中保留空間。 .bss段和用 .usect匯編器命令創(chuàng)建的塊 是未初始化的段。 匯編器對塊的處理 匯編器對塊的處理功能主要是確定匯編語言程序的各部分屬于哪個(gè) 特 定 的 塊 。 匯 編 器 有 六 個(gè) 命 令 來 完 成 這 種 功能: .bss, .usect , .text , .data , .sect及 .asect 。 其中 .bss和 .usect 命令創(chuàng)建未初始化塊 , 而 .text , .data , .sect及 .asect 命令則建立已初始化塊 。 如果在程序中未用任何命令來指示 ,匯編器將把所有程序塊或數(shù)據(jù)塊統(tǒng)一匯編至 .text 中 。 ( 1)未初始化塊 未初始化塊主要用來在存儲(chǔ)器中保留空間 , 它們通常分配在 RAM中 。這些塊在目標(biāo)文件中沒有
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1