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

正文內(nèi)容

第7章匯編語言程序設(shè)計-預覽頁

2025-08-13 12:28 上一頁面

下一頁面
 

【正文】 RETF[D] 將 RTN寄存器中的返回地址加載到 PC, 并使能可屏蔽中斷。 無條件返回是無條件執(zhí)行 返回操作 。 STM 123H, AR0 LD 456H, AR1 CALL new LD AR1, 16, A new: MPY AR0, AR1, A RET ; 將操作數(shù) 123H裝入 AR0 ; 將操作數(shù) 456H裝入 AR1 ; 調(diào)子程序 new ; 將 AR1的內(nèi)容左移 16位后裝入 A ; AR0與 AR1的內(nèi)容相乘 ,結(jié)果放入 A中 ; 子程序返回 C54x的重復操作是使 CPU重復執(zhí)行一條指令或一段指令。 利用重復指令可實現(xiàn)比 BANZ指令更快的循環(huán)程序。 該數(shù)值保存在 16位重復計數(shù)器 RC中,這個值只能由重復指令( RPT或 RPTZ) 加載,而不能編程設(shè)置 RC寄存器中的值。 .bss x, 8 STM x, AR1 LD 0, A RPT 7 STL A,*AR1+ .bss x, 8 STM x, AR1 RPTZ A, 7 STL A, *AR1+ 注意: ① 對 x[8]中的 8個元素置 0,重復次數(shù)為 7,即執(zhí)行 1次 STL A, ?AR1+指令后,再重復執(zhí)行 7次; ② RPTZ指令設(shè)定重復次數(shù)后,再對累加器清零。 用于塊程序重復操作指令為 RPTB和 RPTBD。 塊程序重復指令的特點是對任意長程序段的循環(huán)開銷為 0。 .bss x, 8 begin: LD 1,16,B STM 7,BRC STM x,AR4 RPTB next1 ADD *AR4,16,B,A STH A,*AR4+ next: LD 0,B … 。數(shù)組首地址 x送入 AR4 。B清 0 注 意 ① 塊結(jié)束地址 REA通常取 程序塊最后一條指令的下一條指令地址 1; ② 重復次數(shù)為 7次 ③ RPTB指令可以響應中斷。 硬件中斷由設(shè)備的一個信號產(chǎn)生 , 包括兩種類型: ①外部硬件中斷由外部中斷口的信號觸發(fā); ②內(nèi)部硬件中斷由片內(nèi)外設(shè)的信號觸發(fā)。有些中斷有兩個名稱。 2 .中斷寄存器 (1) 中斷標志寄存器 IFR 中斷標志寄存器 IFR是一個存儲器映像寄存器 ,當一個中斷出現(xiàn)時 ,IFR中的相應的中斷標志位置 1,直到 CPU識別該中斷為止。 當狀態(tài)寄存器 ST1中的 INTM位為 0時,全局中斷允許。 ( 1) 接受 中斷請求 一個中斷可由硬件器件或軟件指令 提出請求。 3.中斷響應過程 外部硬件中斷由外部中斷口的信號發(fā)出請求,而內(nèi)部硬件中斷由片內(nèi)外設(shè)的信號發(fā)出中斷請求。 對于硬件可屏蔽中斷,只要滿足以下 3種條件后CPU才能響應中斷。 當 INTM=0, 所有可屏蔽中斷被使能。 滿足上述條件后, CPU響應中斷,終止當前正進行的操作,指令計數(shù)器 PC自動轉(zhuǎn)向相應的中斷向量地址,取出中斷服務程序地址,并發(fā)出硬件中斷響應信號 IACK,而清除相應的中斷標志位。 使用堆棧操作指令可以將這些寄存器傳送到堆棧中,或者從堆棧中取出。 C54x的中斷向量地址是由 PMST寄存器中的IPTR(9位中斷向量指針 )和左移 2位后的中斷向量序號所組成。 若對 IPTR重新賦值,中斷向量可以映射到程序存儲器的其他地址。當前 XF輸出電平標志。t0_cout=1000,所以定時時間: 1ms(1000=1s TIM0 .set 0024H 。非屏蔽中斷 nop nop nop SINT17 .space 4*16 。外中斷 2中斷 rete nop nop TINT: bd timer 。軟件中斷 SINT7 .space 4*16 。串口 1接收中斷 nop nop nop XINT1: rete 。初始化 TIM,PRD READA PRD0 STM 669h,TCR0 。定時器 0中斷服務子程序 timer: ADDM 1,*(t0_cout) 。 C54x支持軟件堆棧 , 在用戶指定的存儲區(qū)開辟一塊存儲區(qū)作為堆棧存儲器 。 保留區(qū)的高地址賦給 SP, 作為堆棧的棧底 若程序中要使用堆棧,必須先進行設(shè)置,如: 設(shè)置好堆棧后,就可以使用堆棧了,如: CALL pmad ; (SP)1→SP,(PC)+ 2→TOS , pmad→PC RET ; (TOS)→PC,(SP)+ 1→SP 2. 堆棧區(qū)大小的確定 ① 先開辟一個較大的堆棧區(qū),用已知數(shù)充填 ,如 : LD 9224, B STM length, AR1 MVMM SP, AR4 loop: STL B, *AR4 BANZ loop, *AR1 堆棧區(qū)的大小可以按照以下步驟來確定: ; 堆棧區(qū)要充填的數(shù) 0DBF8h加載 B ; 設(shè)置循環(huán)次數(shù) ; 設(shè)置數(shù)據(jù)指針 AR4, SP→AR4 ; 循環(huán),充填數(shù)據(jù) 數(shù)據(jù) RAM D D D … … D D SP→ D DBF8 DBF8 DBF8 … … DBF8 DBF8 DBF8 AR4→ length 2. 堆棧區(qū)大小的確定 ① 先開辟一個較大的堆棧區(qū),用已知數(shù)充填 。 用過的棧區(qū) C54x有 10條數(shù)據(jù)傳送指令,共分為四類: (1) 數(shù)據(jù)存儲器之間的數(shù)據(jù)傳送 MVDK Smem, dmad MVKD dmad, Smem MVDD Xmem, Ymem 2字 2周期 2字 2周期 1字 1周期 數(shù)據(jù)塊傳送 (2) 數(shù)據(jù)存儲器與 MMR之間的數(shù)據(jù)傳送 MVDM dmad, MMR MVMD MMR, dmad MVMM MMRx, MMRy 2字 2周期 2字 2周期 1字 1周期 (3) 程序存儲器和數(shù)據(jù)存儲器之間的數(shù)據(jù)傳送 MVPD pmad, Smem MVDP Smem, pmad READA Smem WRITA Smem 2字 3周期 2字 4周期 1字 5周期 1字 5周期 (4) 從 PA口讀 /寫數(shù)據(jù) PORTR PA, Smem PORTW Smem, PA 2字 2周期 2字 2周期 數(shù)據(jù)傳送指令的特點: ① 傳送速度比加載和存儲指令要快; ② 數(shù)據(jù)傳送不通過累加器; ③ 可尋址程序存儲器; ④ 與 RPT結(jié)合,可實現(xiàn)數(shù)據(jù)塊傳送。x[20]={1,1,1,1,1,1,1,1,1,1 MVPD TBL,*AR1+ 。讀程序存儲器 PROM中 20個數(shù)據(jù)存入 DATA STM DATA,AR1 ST 19,BRC RPTB LOOP2 ADD 1,A,A LOOP2: READA *AR1+ ; 該指令為單字指令 WAIT: NOP B WAIT 2. 建立匯編源程序 ? 點擊 CCS C5000 圖標 , 進入 CCS 環(huán)境 , 再點擊File→ New→ Source File菜單命令 , 打開一個空白文檔 ,將匯編源程序逐條輸入 。 4. 創(chuàng)建一個新工程 ? 在 Project 菜單中選擇 New 項 , 彈出 Project Creation( 工程創(chuàng)建 ) 窗口 , 如圖 76所示 。 ? 逐層打開如圖 77所示 。 如果沒有錯誤 , 將產(chǎn)生 ;如果有錯 , 在監(jiān)視窗口以紅色字體顯示出錯行 , 用鼠標雙擊該行 , 光標跳將至源程序相應的出錯行 。 ? 點擊 Debug→ Run菜單命令運行程序 , 單步執(zhí)行程序則點擊 Debug→ StepInto菜單命令 , 或按 F8鍵 。 返回本節(jié) 定點數(shù)的基本算術(shù)運算 ? 加法、減法和乘法運算 ? 定點除法運算 返回首頁 DSP中數(shù)據(jù)的表示方法 ( 1) 數(shù)的定標 采用小數(shù)運算時, 設(shè)定小數(shù)點在 16位中的位置稱為定標。 在具體的定點程序中,必須根據(jù)具體情況適當選擇合適的定標。 正數(shù): 乘以 32 768, 整數(shù)轉(zhuǎn)換成 16進制數(shù); 負數(shù): 其絕對值乘以 32 768, 整數(shù)取反加 1。 ? C54x中提供了多條用于減法的指令 , 如 SUB、SUBB、 SUBC和 SUBS。 解 : x=, 采用 進制碼為 5A00H; y=, 采用 為 B000H。 乘數(shù)在 C54x的乘法指令中很靈活 , 可以是 T寄存器 、 立即數(shù) 、 存儲單元和累加器 A或 B的高 16位 。 而且要將 32位乘積保存到數(shù)據(jù)存儲器 , 就要耗費兩個機器周期以及兩個字的程序和RAM單元 。為了提高精度,還可以使用 RND或 MPYR指令對低 16位做四舍五入處理后再保存高 16位。 返回本節(jié) ? 例如: = 。 20x1 v2 .set 036H 。 _c_int00 b start nop nop start: LD x1 , DP ST v1 , x1 ST v2 , y1 。 save A(low 16 bits) z1 NOP 。 x1 T MPY y1 ,A 。 * * * * * * * * * * test MPY ((fraction) * * * * * * * * * * * * * 。 x2*y2 B, and y2 T STH B , z4 。其中數(shù)據(jù)均為小數(shù) *** 。 條件減法指令: SUBC Smem, src 功能: (src)(Smem)15→ALU 輸出端 若 ALU輸出 ?0,則 (ALU輸出 )1+1→src 否則 (src)1→src 重復指令: RPT K 功能: RC=K,重復執(zhí)行下條指令 K+1次。 .word 8*32768/10 。商符號送 B (num) AH → B, 即分子分母 → B, 取符號。取分子絕對值 RPT 14 SUBC den,A 。 ()的程序 運行結(jié)果: 被除數(shù) 除 數(shù) 商 (十六進制 ) 商 (十進制 ) 4*32 768/100() 8*32 768/100() 0xC000 128 1 024 0xF000 2. |被除數(shù) ||除數(shù) | 例 : 編寫 16384247。 .title .mmregs .def start,_c_int00 .bss num,1 .bss den,1 .bss quot,1 .data table .word 4*32768/10 。 start: STM num,AR1 RPT 1 MVPD table,*AR1+ 。(在累加器 B中 )
點擊復制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1