wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1773|回復(fù): 2
收起左側(cè)

Keil匯編進(jìn)階指南(4) - 與C共舞

[復(fù)制鏈接]
ID:1080301 發(fā)表于 2024-11-30 00:11 | 顯示全部樓層 |閱讀模式
與C共舞

我們?cè)谥暗膬?nèi)容學(xué)習(xí)了段的聲明以及相關(guān)變量?jī)?nèi)存的聲明,現(xiàn)在我們要開(kāi)始最重要的一節(jié)課——匯編和C的混合編程
首先是在C中調(diào)用匯編
我們?cè)趨R編的學(xué)習(xí)中知道了匯編代碼的跳轉(zhuǎn)和調(diào)用都是依賴所謂的標(biāo)記來(lái)進(jìn)行,我們還是拿LCD1602的驅(qū)動(dòng)舉例

  1. <div class="blockcode"><blockquote>LCDWRCOM:
  2.                 CLR LCD_RS;寫(xiě)命令
  3.                 SJMP GOON
  4.         LCDWRDAT:
  5.                 SETB LCD_RS;寫(xiě)數(shù)據(jù),這個(gè)沒(méi)有jmp,應(yīng)該更快一些
  6.         GOON:
  7.                 SETB LCD_EN;兩段代碼合一,這種技巧很常見(jiàn),甚至編譯器都這么優(yōu)化
  8.                 MOV LCD_BUS,R7;注意,根據(jù)文檔,單個(gè)char會(huì)直接傳入R7,多看文檔
  9.                 MOV R6,#10H;等待LCD
  10.                 DJNZ R6,$
  11.                 CLR LCD_EN
  12.                 CLR LCD_RS
  13.                 RET
復(fù)制代碼


  1. LCDINIT:
  2.                 CLR LCD_RW
  3.                 CLR LCD_EN
  4.                 MOV R7,#38H
  5.                 CALL LCDWRCOM
  6.                 MOV R7,#0CH
  7.                 CALL LCDWRCOM
  8.                 MOV R7,#06H
  9.                 CALL LCDWRCOM
  10.                 MOV R7,#01H
  11.                 CALL LCDWRCOM;啟動(dòng)序列,別處抄的
  12.                
  13.                 MOV R7,#0FH
  14.         LCDFINWAIT:
  15.                 MOV R6,#0FFH
  16.                 DJNZ R6,$
  17.                 DJNZ R7,LCDFINWAIT;LCD需要一段時(shí)間準(zhǔn)備
  18.                
  19.                 RET
復(fù)制代碼




我們可以知道,上面有三個(gè)程序,一個(gè)是LCDWRCOM,一個(gè)是LCDWRDAT,以及LCDINIT,這三個(gè)都是程序的入口,我們要做的就是把入口聲明告知C編譯器,有這么個(gè)東西
我們以LCDINIT為例
首先,LCDINIT是一個(gè)沒(méi)有輸入輸出的函數(shù),所以一般來(lái)說(shuō)它在C語(yǔ)言里的聲明是這樣的
  1. void lcdinit();
復(fù)制代碼
其次,我們?cè)贑文件中調(diào)用的是別的文件中的函數(shù),我們需要extern來(lái)表明,這個(gè)函數(shù)是從外部薅過(guò)來(lái)的(函數(shù)入口在別的文件)
最終,我們寫(xiě)在頭文件里的聲明函數(shù)是這樣的
  1. extern void lcdinit();
復(fù)制代碼

還記得我說(shuō)過(guò)傳到匯編編譯器的名字不分大小寫(xiě)嗎?這里就體現(xiàn)出來(lái)了,你只要名字對(duì)上就可以,它能找到認(rèn)出來(lái)
光這樣還不行,匯編語(yǔ)言的入口實(shí)際上是不符合C編譯器的命名規(guī)則的,所以我們需要在匯編里做些操作,讓匯編編譯器知道,這個(gè)入口是可以被外界使用的,這里就要用到PUBLIC,具體用法是這樣的
PUBLIC 標(biāo)記名



所以最終的代碼是這樣的
  1. PUBLIC LCDINIT

  2. LCDINIT:
  3. CLR LCD_RW
  4. CLR LCD_EN
  5. MOV R7,#38H
  6. CALL LCDWRCOM
  7. MOV R7,#0CH
  8. CALL LCDWRCOM
  9. MOV R7,#06H
  10. CALL LCDWRCOM
  11. MOV R7,#01H
  12. CALL LCDWRCOM;啟動(dòng)序列,別處抄的

  13. MOV R7,#0FH
  14. LCDFINWAIT:
  15. MOV R6,#0FFH
  16. DJNZ R6,$
  17. DJNZ R7,LCDFINWAIT;LCD需要一段時(shí)間準(zhǔn)備

  18. RET
復(fù)制代碼

C語(yǔ)言中

  1. extern void lcdinit();
復(fù)制代碼

這樣,我們就完成了C語(yǔ)言調(diào)用匯編
但是對(duì)于有傳入形參的函數(shù),情況稍微復(fù)雜一些,C51傳遞參數(shù)有些不同,它是寄存器傳參,參數(shù)放置在從R7開(kāi)始的寄存器,然后才輪得到內(nèi)存(可以關(guān)掉這個(gè)選項(xiàng),但是內(nèi)存能省則省),如果是一個(gè)char,那就R7,兩個(gè)那就R7和R6,三個(gè)那就765,一個(gè)int就是R7和R6,以此類推,至于內(nèi)存?zhèn)鲄ⅲ憧梢钥纯词謨?cè),一般來(lái)講,超過(guò)四五個(gè)形參的我建議直接傳指針進(jìn)去
其次,匯編語(yǔ)言中的標(biāo)記的前面必須帶有一個(gè)下劃線,比如ABC要變?yōu)開(kāi)ABC
這里回收上一節(jié)埋下的伏筆,實(shí)際上內(nèi)存段的標(biāo)記也可以public


  1. ?DT?LCDMEM SEGMENT DATA
  2.                 PUBLIC LCDMEM
  3.                 RSEG ?DT?LCDMEM
  4.         LCDMEM:
  5.                 DS 32
復(fù)制代碼
C語(yǔ)言中是這樣的
  1. extern unsigned char LCDMEM[32];
復(fù)制代碼


好了,C調(diào)用匯編已經(jīng)學(xué)會(huì)了,我們現(xiàn)在要倒反天罡,讓匯編也揩一下C語(yǔ)言的油
這一次,我們直接扒keil一開(kāi)始給的StartUp.A51里面的例子
從116行開(kāi)始
  1. ?C_C51STARTUP   SEGMENT   CODE
  2. ?STACK          SEGMENT   IDATA

  3.                 RSEG    ?STACK
  4.                 DS      1

  5.                 EXTRN CODE (?C_START)
  6.                 PUBLIC  ?C_STARTUP

  7.                 CSEG    AT      0
  8. ?C_STARTUP:     LJMP    STARTUP1

  9.                 RSEG    ?C_C51STARTUP
復(fù)制代碼

好了,那個(gè)?C_START就是我們的目標(biāo),它就是我們調(diào)用C語(yǔ)言的方法(也是STARTUP以后跳轉(zhuǎn)主函數(shù)的入口)
EXTRN CODE (函數(shù)名)
實(shí)際上還能用EXTERN,兩者的區(qū)別就是EXTERN只能把PUBLIC過(guò)的標(biāo)記薅過(guò)來(lái)用(順便一提,變量也可以薅過(guò)來(lái)用,只需要把CODE改成DATA)
我們這次不寫(xiě)函數(shù)給匯編調(diào)用,我們?cè)赟tartUp.A51上搞事情,眾所周知,StartUp.A51先于主函數(shù)運(yùn)行,所以它一定會(huì)跳轉(zhuǎn)到主函數(shù),我們使個(gè)壞把主函數(shù)改成mian(我不太確定是不是有副作用,就僅僅整活用吧)
所以我們需要改成
  1. EXTRN CODE (mian)
復(fù)制代碼

好了,還有最后一步,我們可以在StartUp.A51的尾部看見(jiàn)這個(gè)
  1.                 LJMP    ?C_START

  2.                 END
復(fù)制代碼

把它也改了,然后……
  1. StartUp.A51
  2. ……
  3. EXTRN CODE (mian)
  4. ……
  5. LJMP mian
  6. END

  7. main.c

  8. void mian(){
  9. ……
  10. }
復(fù)制代碼
順便一說(shuō),提示找不到?C_START也可以用這招

最后,匯編里面調(diào)用函數(shù)用CALL,這個(gè)應(yīng)該不用多說(shuō)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:1138341 發(fā)表于 2024-12-2 18:52 | 顯示全部樓層
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

ID:624769 發(fā)表于 2024-12-3 23:33 | 顯示全部樓層
你不要想當(dāng)然啊……, 傳參 3個(gè) char 是 R7,R5,R3, 不是 R7R6R5, 算了,給你個(gè)表吧……
傳參.png

最多能通過(guò)通用寄存器 傳3個(gè)參,再多就要用?DT? 聲明了。
而這3個(gè)參有明確規(guī)定,比如 long 只能在 第一,第二位置傳,傳了long, 就只能再傳 指針了。等等一系列的規(guī)定。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
日韩免费精品视频| 欧美污在线观看| 国产亚洲精品久久久久久牛牛| 天堂俺去俺来也www久久婷婷| 国产一二区视频| 国产一区二区在线不卡| 国产精品无码永久免费不卡| 18黄暴禁片在线观看| 91久久国产精品| 亚洲日韩欧美视频一区| 精品免费在线视频| 成人午夜视频福利| 在线看片欧美| 亚洲精品3区| 日韩大片欧美大片| eeuss影院www在线观看| 免费在线播放av| 日韩有码第一页| 日韩成人一区二区三区| 国产精品视频一| 亚洲视频电影图片偷拍一区| 91福利视频久久久久| 日本一区二区不卡视频| 精品亚洲免费视频| 欧美日韩网站| 国产不卡av一区二区| 国产精品无码久久久久| 在线xxxx| 国产毛片在线看| 丁香婷婷自拍| 夜夜夜操操操| 一区二区三国产精华液| 国产男女无套免费网站| 久久国产视频播放| 国产大学生自拍| 能看毛片的网站| 女人另类性混交zo| 久久久久久久久久久综合| 久久草.com| 日韩免费黄色av| 日韩一区视频在线| 日韩精品久久久久久福利| 欧美日韩成人在线| 日韩欧美国产免费播放| 亚洲精品久久久久久国产精华液| 成人免费毛片片v| 视频在线观看国产精品| 99国产精品| 久久爱www成人| 久久精品免视看国产成人| 日韩av毛片| 国产调教视频在线观看| 在线观看高清av| 成人免费淫片95视频观看网站| 欧美人与z0zoxxxx特| 亚洲第一免费看片| 中文字幕在线观看1| 五月天婷婷丁香| 成人片黄网站色大片免费毛片| 精品人妻一区二区乱码| 国产性生活一级片| 男生操女生视频在线观看| 欧美一级黄色影院| 性欧美极品xxxx欧美一区二区| 国产一区亚洲二区三区| 久久久久久久少妇| 亚洲综合欧美激情| wwww.国产| caoporm在线视频| 中文字幕中文在线| 午夜免费福利网站| 亚洲欧美激情一区二区三区| 精品人妻一区二区免费| 在线成人免费av| 精品国产免费久久久久久婷婷| 天天干天天操天天做| 911av视频| 国产麻豆xxxvideo实拍| 实拍女处破www免费看| 中文字幕第24页| 午夜剧场免费在线观看| 青青草av在线播放| 日韩一级在线视频| 中文字幕一区二区三区波野结| 日韩伦人妻无码| jizz国产在线观看| 国产偷人爽久久久久久老妇app | 欧美一区成人| 伊人免费在线| 欧美极品另类| 欧美人与性动交α欧美精品图片| 国产不卡123| **国产精品| 视频一区欧美| 宅男噜噜噜66一区二区| 狠狠色丁香久久婷婷综| 91免费观看国产| 又紧又大又爽精品一区二区| 色呦呦一区二区三区| 欧美一级一级性生活免费录像| 国产视频欧美视频| 久久久久久中文字幕| 国产日韩综合一区二区性色av| 狠狠操狠狠色综合网| 色婷婷一区二区| 亚洲国产精品国自产拍av秋霞| 精品国产拍在线观看| 日韩av手机在线观看| 国产精品久久久对白| 综合操久久久| 午夜久久久精品| 在线观看免费小视频| 视频一区二区三区四区五区| 日本精品999| 黄漫在线观看| 免费av在线电影| 综合久久2023| 最新国产精品视频| 日韩综合一区二区| 欧美激情一区二区在线| 色综合久久中文字幕| 亚洲精品视频播放| 日本久久久久久| 欧美一区亚洲二区| www欧美激情| 亚洲 欧美 变态 另类 综合| va视频在线观看| 九色视频在线观看免费| 国产对白叫床清晰在线播放| 激情中国色综合| 中文字幕一区二区三区欧美日韩| 久久99精品国产麻豆不卡| 中文字幕亚洲区| 日韩你懂的在线观看| 久久免费精品日本久久中文字幕| 国内精品二区| 国产v亚洲v天堂无码久久久| 国产jizz18女人高潮| 亚洲va久久久噜噜噜无码久久| 日本免费看黄| 性网站在线观看| 伊甸园亚洲一区| 国产资源在线一区| 一本一本大道香蕉久在线精品 | 可以在线看的av网站| 黄色性生活一级片| 91精品视频免费在线观看| 国产亚洲欧美久久久久| 一本久中文高清| 3dmax动漫人物在线看| 欧美大片免费观看网址| 欧美激情自拍| 国产人妖乱国产精品人妖| 日韩欧美一级精品久久| 国产精品入口夜色视频大尺度| 69精品丰满人妻无码视频a片| 国产精品九九视频| 国产欧美一级片| 日本特黄a级高清免费大片| 色8久久影院午夜场| 亚洲黄色一区| 亚洲高清久久久| 麻豆成人在线看| 日本一区二区免费高清视频| 夜夜春很很躁夜夜躁| 香蕉视频999| 免费观看成人毛片| 美女在线不卡| 亚洲校园激情春色| 99精品视频免费| 亚洲高清免费观看 | 日本乱人伦aⅴ精品| 久久国产色av| 一区二区三区视频| 亚洲精品国产精品国自| 亚洲天堂久久久| 怡红院av在线| 亚洲国产日韩在线| 精品露脸国产偷人在视频| 热re91久久精品国99热蜜臀| 亚洲精品乱码久久久久久自慰| 天天操天天摸天天干| 丁香综合在线| 久久在线观看| 99麻豆久久久国产精品免费优播| 欧美va在线播放| 极品校花啪啪激情久久| 性欧美精品中出| 国产精品bbw一区二区三区| 涩涩涩在线视频| 日韩黄色免费电影| 91精品国产综合久久久久久| 成人h在线播放| 亚洲国产精品无码久久久久高潮 | 亚洲香蕉成人av网站在线观看| 欧美激情视频一区二区三区| 人妻无码一区二区三区免费| 怡红院视频网站| 欧美成人aaa| 成人av片在线观看| 揄拍成人国产精品视频| 天天综合五月天| 久久久精品福利| 在线观看国产麻豆| 国产精品久久久久久影院8一贰佰| 一区二区三区精品视频| 国产91亚洲精品| 国内精品免费视频| 成人精品一区二区不卡视频| 亚洲精品tv| 久久久久久影视| 久久久伊人日本| 欧美国产日韩另类| 推川ゆうり中文亚洲二区| 美女av在线免费看| 高清视频一区二区| 北条麻妃一区二区三区中文字幕| 北条麻妃在线观看| 男人天堂网在线视频| 理论片午夜视频在线观看| 国产伦精品一区二区三区视频青涩 | 国产精品国产精品| 黑人と日本人の交わりビデオ| 影音av资源| 残酷重口调教一区二区| 狠狠操狠狠色综合网| 成人h视频在线| 亚洲av无一区二区三区| 激情综合网五月激情| 男男gay无套免费视频欧美| √…a在线天堂一区| 欧美在线一级va免费观看| 91传媒理伦片在线观看| 国产精品美女一区二区三区四区| 欧美系列精品| 亚洲国产精品ⅴa在线观看| 最好看的2019年中文视频| 午夜激情福利在线| 国产又爽又黄网站亚洲视频123| 色尼玛亚洲综合影院| 91亚洲精品一区二区乱码| 日本91av在线播放| 久久久久久久久久久久久久久| 人人做人人爽| 欧美日韩亚洲一区二区三区在线| 亚洲成人久久久| 国产一级片黄色| 国产免费一级片| 久草在线成人| 91精品国产一区二区| 免费看欧美黑人毛片| 亚洲成年电人电影网站| 国精产品一区二区三区| 88av看到爽| 中文乱码免费一区二区三区下载| 日韩三级.com| 色婷婷综合久久久久中文字幕 | 中文字幕成人免费视频| 亚洲人成电影院在线观看| 午夜视频福利在线| 粉嫩tv在线播放| 黄色污网站在线观看| 国产精品va| 日韩精品在线观| 99999精品| 8mav模特福利视频在线观看| 激情成人综合| 日韩在线观看免费全| 欧美一区二区免费在线观看| 国产免费福利网站| 日韩精品1区2区3区| 欧美劲爆第一页| 日韩高清dvd碟片| 久草中文在线| 国产精品乱码久久久久久| 精品亚洲一区二区三区四区五区高| 一级黄色片视频| 欧美伦理影视网| aa在线视频| 91免费在线看| 欧美成人自拍视频| 婷婷色一区二区三区| 亚洲高清福利| 国产成人精品免费网站| 亚洲一区二区三区毛片| 亚洲一级特黄毛片| 亚洲综合色婷婷在线观看| 日韩小视频在线观看专区| 99精品视频免费版的特色功能| 一级视频在线观看| 91网站在线观看视频| 久久综合福利| 日韩欧美在线播放视频| 中文字幕乱码一区二区| 欧美a级大片在线| 日韩一区二区麻豆国产| 波多野结衣在线免费观看| 一区 二区 三区| 97久久久精品综合88久久| 精品日韩美女| 网曝门事件国产精品二区| 欧美日韩第一区| 4k岛国日韩精品**专区| 国产成人av免费| 国语一区二区三区| 亚洲日韩第一页| www青青草原| 亚洲欧美在线人成swag| 精品久久久三级丝袜| 色欲av无码一区二区三区| 92久久精品| 欧美亚洲一区二区在线观看| 中文字幕一区二区在线观看视频| 欧洲伦理片一区 二区 三区| 国产精品毛片大码女人| 欧妇女乱妇女乱视频| 国产1区2区视频| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 99热这里只有精品在线播放| 欧洲一区av| 一区二区三区 在线观看视频| 日韩伦理在线免费观看| 国产1区2区3区| 欧美国产精品中文字幕| 亚洲欧美国产va在线影院| 蜜桃传媒视频麻豆第一区免费观看| 欧美性受xxxx黑人xxxx| 久久九九电影| 国产一区二区色| 亚洲精品无码久久久| 影视一区二区| 欧美亚洲一级片| 91亚洲国产成人久久精品麻豆 | 深夜爽爽视频| 成人免费黄色大片| 亚洲 日韩 国产第一区| 午夜高潮免费视频| 国产成人亚洲综合a∨婷婷 | 真实国产乱子伦对白在线| 国产精品一区免费在线| 亚洲人成网站777色婷婷| 国产乡下妇女做爰毛片| 日本欧美韩国国产| 久久久久久亚洲精品中文字幕| www.久久精品.com| 亚洲国产一区二区三区a毛片| 99国精产品一二二线| 日本一卡2卡三卡4卡网站| www.一区二区| 日日摸日日碰夜夜爽av| 日本在线人成| 欧美在线视频你懂得| 国产精品1000部啪视频| 台湾天天综合人成在线| 色青青草原桃花久久综合| 日本黄色中文字幕| 99精品视频精品精品视频 | 亚洲成a人片| 亚洲乱码av中文一区二区| 九九热这里有精品视频| 日韩精品福利一区二区三区| 欧美精品videofree1080p| 亚洲xxx在线| 久久久精品性| 亚洲欧美日韩精品久久久| h动漫在线视频| 亚洲精品一二三区| 在线xxxxx| 天堂久久av| 91av视频在线播放| 成av人免费青青久| 成人动漫中文字幕| a级黄色一级片| 成人免费视屏| 精品国产成人在线影院| 国产又粗又爽视频| 亚洲精品孕妇| 这里只有精品66| 国产无套粉嫩白浆在线2022年| 欧美人体做爰大胆视频| 日韩av一二三区| 禁久久精品乱码| 免费观看黄色的网站| 成人高潮成人免费观看| 亚洲娇小xxxx欧美娇小| 亚洲第一区av| 久久久久久久尹人综合网亚洲| 三年中国中文在线观看免费播放| 飘雪影视在线观看免费观看| 精品国免费一区二区三区| 99视频在线看| 亚洲福利一区| 午夜精品电影在线观看| 国产h在线观看| 精品国产一区二区三区忘忧草| 中文字幕在线观看视频一区| 美国欧美日韩国产在线播放| 免费毛片小视频| 女同一区二区免费aⅴ| 亚洲图片在区色|