<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)匯編偽指令

          51單片機(jī)匯編偽指令

          作者: 時(shí)間:2016-11-22 來源:網(wǎng)絡(luò) 收藏
          0、 ALTNAME

          功能:這一偽指令用來自定義名字,以替換源程序中原來的保留字,替換的保留字均可等效地用于子程序中。

          本文引用地址:http://www.ex-cimer.com/article/201611/319696.htm

          格式:ALTNAME保留字自定義名

          注意:自定義名與保留字之間首字符必須相同。

          1、BIT

          功能:指令用于將一個(gè)位地址賦給指定的符號名。

          指令格式:符號名 BIT 位地址經(jīng)BIT 指令定義過的位符號名不能更改。

          例如:X_ON BIT 60H ;定義一個(gè)絕對位地址

          X_OFF BIT 24h.2 ;定義一個(gè)絕對位地址
          BIT---定義位命令

          格式: 字符名稱 BIT位地址

          功能用于給字符名稱定義位地址。

          SPK BIT P3.7 經(jīng)定義后,允許在指令中用SPK代替P3.7。

          2、 BSEG
          功能:絕對選擇指令指令BSEG選擇絕對位尋址數(shù)據(jù)段

          指令格式如下:BSEG [AT 絕對地址表達(dá)式]

          3、CODE

          功能:用于將程序存儲(chǔ)器ROM 地址賦給指定的符號名。

          指令格式:符號名 CODE 表達(dá)式

          例如:RESET CODE 00H
          4、CSEG
          功能:絕對選擇指令CSEG選擇絕對代碼段;

          指令格式如下:CSEG [AT 絕對地址表達(dá)式]

          5、DATA(BYTE)

          功能:指令用于將一個(gè)內(nèi)部RAM 的地址賦給指定的符號名

          指令格式:符號名 DATA 表達(dá)式

          數(shù)值表達(dá)式的值應(yīng)在0~255 之間,表達(dá)式必須是一個(gè)簡單再定位表達(dá)式。

          例如:REGBUF DATA(BYTE) 40H

          PORT0DATA(BYTE) 80H

          DATA與BYTE的區(qū)別:

          DATA與BYTE是相類似的偽指令。當(dāng)程序運(yùn)行到DATA偽指令定義的符號名時(shí),該符號名將被顯示;而由BYTE定義的符號名不被顯示。
          6、DB
          功能:DB偽指令用于定義一個(gè)連續(xù)的存儲(chǔ)區(qū),給該存儲(chǔ)區(qū)的存儲(chǔ)單元賦值。該偽指令的參數(shù)即為存儲(chǔ)單元的

          值,在表達(dá)式中對變元個(gè)數(shù)沒有限制,只要此條偽指令能容納在源程序的一行內(nèi),其格式為:標(biāo)號: DB 表

          達(dá)式只要表達(dá)式不是字符串,每一表達(dá)式值都被賦給一個(gè)字節(jié)。計(jì)算表達(dá)式值時(shí)按16位處理,但其結(jié)果只取

          低8位,若多個(gè)表達(dá)式出現(xiàn)在一個(gè)DB偽指令中,它們必須以逗號分開。表達(dá)式中有字符串時(shí),以單引號“”

          作分隔符,每個(gè)字符占一個(gè)字節(jié),字符串不加改變地被存在各字節(jié)中,并不將小寫字母轉(zhuǎn)換成大寫字母。

          例如:DB 00H 01H 03H 46H

          DB This is a demo!

          7、DBIT

          功能:在內(nèi)部數(shù)據(jù)區(qū)的BIT 段以位為單位保留存儲(chǔ)空間。

          指令格式:[標(biāo)號:] DBIT 數(shù)值表達(dá)式其操作類似于DB。
          8、DS
          功能:DS為定義存儲(chǔ)內(nèi)容的偽指令,用它定義一個(gè)存儲(chǔ)區(qū),并用指定的參數(shù)填滿該存儲(chǔ)區(qū)。DS偽指令包含兩

          個(gè)變元,第一個(gè)變元定義了存儲(chǔ)區(qū)的長度的字節(jié)數(shù),在匯編時(shí),匯編程序?qū)⑻^這些單元把其它指令匯編在

          這些字節(jié)之后,因此在使用DS偽指令時(shí)第一個(gè)變元不可活力第二個(gè)變元表示在這些單元中真入什么值,第

          二個(gè)變元可以活力活力時(shí)這些字節(jié)將不處理。下例中0173處有一條DS 9,則空出9個(gè)字節(jié),下一第指令被匯

          編到017C處;在017C處空出1BH個(gè)單元,在這些字節(jié)中被27H所填充。DS指令的格式如下:

          標(biāo)號: DS 表達(dá)式1,表達(dá)式2

          表達(dá)式1定義了存儲(chǔ)區(qū)的長度(以字節(jié)為單位)。這個(gè)變元不能省略。表達(dá)式2是可選擇的,它的值低8位

          用以填入所定義的存儲(chǔ)區(qū)。若省略則這部分存儲(chǔ)單元不處理。

          例: 0000 04 INC A

          0001 DS 9

          000A 04 INC A

          000B DS 1BH,27H

          0026 04 INC A

          DS ---預(yù)留存儲(chǔ)區(qū)命令

          格式:〔標(biāo)號:〕 DS 表達(dá)式值
          其功能是從指定地址開始,定義一個(gè)存儲(chǔ)區(qū),以備源程序使用。

          存儲(chǔ)區(qū)預(yù)留的存儲(chǔ)單元數(shù)由表達(dá)式的值決定。

          TMP: DS 1

          從標(biāo)號TEP地址處開始保留1個(gè)存儲(chǔ)單元(字節(jié))。

          9、DSEG
          功能:絕對選擇指令DSEG內(nèi)部絕對數(shù)據(jù)段

          指令格式如下:DSEG [AT 絕對地址表達(dá)式]

          10、DW
          功能:DW為以字節(jié)為單元(十六位二進(jìn)制)來給一個(gè)的存儲(chǔ)區(qū)賦值,

          其格式為: 標(biāo)號: DW 表達(dá)式
          例如: 0000 3035 D46B DW 12341,54379,10110100101110B
          11、END
          功能:END語句標(biāo)志源代碼的結(jié)束,匯編程序遇到END語句即停止運(yùn)行。若沒有END語句,匯編將報(bào)錯(cuò)。END語

          句有一個(gè)參數(shù),可以是數(shù)值0,也可以是表達(dá)式,

          其格式是: 標(biāo)號: END 表達(dá)式

          它的值就是程序的地址并且作為一個(gè)特殊的記錄寫入HEX文件。若這個(gè)表達(dá)式省略,HEX文件中其值就是0。

          12、EQU(=)

          存器名賦給一個(gè)指定符號名。

          指令格式: 符號名 EQU(=)表達(dá)式 符號名 EQU(=) 寄存器名

          經(jīng)過EQU 指令賦值的符號可在程序的其它地方使用,以代替其賦值。

          例如:MAX EQU 2000

          則在程序的其它地方出現(xiàn)MAX,就用2000 代替。

          表達(dá)式必須是一個(gè)簡單再定位表達(dá)式。
          用 EQU 指令賦值以后的字符名,可以用作數(shù)據(jù)地址、代碼地址、位地址或者直接當(dāng)做一個(gè)立即數(shù)使用。
          13、EXTRN

          EXTRN 是與PUBLIC 配套使用的,要調(diào)用其它模塊的函數(shù),就必須先在模塊前聲明。

          指令格式:EXTRN 段類型(符號,符號······)

          例如:EXTRN CODE (TONGXING,ZHUANHUAN)

          調(diào)用外部TONGXING和ZHUANHUAN 程序。

          14、IDATA

          IDATA 指令用于將一個(gè)間接尋址的內(nèi)部RAM 地址賦給指定的符號名。

          指令格式:符號名 IDATA 表達(dá)式

          例如:FULLER IDATA 60H
          15、IF

          條件偽操作格式:

          IF表達(dá)式

          [程序塊1]

          [ELSE]

          [程序塊2]

          ENDIF

          當(dāng)IF指令中的表達(dá)式為真時(shí),被匯編的代碼段是程序塊1;當(dāng)IF指令中的表達(dá)式為假時(shí),被匯編的代碼段是

          程序塊2。在一個(gè)條件結(jié)構(gòu)中,僅有一個(gè)代碼段被匯編,其它的則被忽略。

          16、INCLUDE

          功能:利用此偽指令可將一個(gè)源文件插入到當(dāng)前源文件中一起匯編,最終成為一個(gè)完整的源程序。

          格式:INCLUDE[驅(qū)動(dòng)器名:][路徑名]文件名

          注意:1、文件名中若沒有擴(kuò)展名,則系統(tǒng)默認(rèn)是。ASM(該文件必須是能打開的)。

          2、被插入的源程序中不能包含END偽指令,否則匯編會(huì)停止運(yùn)行。被鏈接文件的每一行,

          在程序清單中以“I“開頭。

          3、鏈接偽指令可有8級嵌套,若要求嵌套的多,則要修改DOS中的CONFIG。SYS文件的FILES參 數(shù)。

          17、ISEG

          功能:絕對選擇指令I(lǐng)SEG內(nèi)部間接尋址絕對數(shù)據(jù)段idata

          指令格式如下:ISEG [AT 絕對地址表達(dá)式]
          18、MACRO

          宏指令格式

          [宏指令名]MACRO[形式參數(shù),。。。]

          代碼段

          ENDM

          宏調(diào)用格式

          [宏指令名][實(shí)在參數(shù),。。。]
          19、LIST
          它們的格式為:

          $LIST
          功能:LIST偽指令使匯編時(shí)主生程序清單,但即使不用該指令,匯編也會(huì)自動(dòng)產(chǎn)生清單。但如果使用了NOLIST偽指令后需要繼續(xù)主生清單則必須使用LIST偽指令。
          20、NAME

          功能:用來給當(dāng)前模塊命名。

          指令格式:NAME 模塊名

          例如:NAME TIMER

          定義一個(gè)模塊名為TIMER 的模塊。
          21、NOCODE

          其格式為$NOCODE

          NOCODE偽指令使得在匯編時(shí),條件匯編程序結(jié)構(gòu)中那些真值為假的條件不產(chǎn)生清單。有關(guān)條件匯編結(jié)構(gòu)在下

          面介紹。如果沒有這條偽指令,匯編將主生所有條件下的清單,不論其真值是否為真。但是假的條件,不產(chǎn)

          生目標(biāo)碼。而NOCODE偽指令使匯編清單中只列出那些由匯編程序用到的部分,因此,當(dāng)使用NOCODE偽指令

          時(shí),程序清單與源程序并非逐行對應(yīng)。
          22、NOLIST

          它們的格式為:
          $NOLIST

          功能:NOLIST偽指令使匯編時(shí)不產(chǎn)生清單,所有包含此偽指令及在這條偽指令之后的語句都不進(jìn)入列表文

          件。當(dāng)不需要任何列表文件,并且不需要顯示程序清單時(shí),可以在啟動(dòng)匯編時(shí)不加.L附加項(xiàng),且在源代碼

          的第一行加上NOLIST指令。使用NOLIST偽指令與附加項(xiàng)/L不同之處是NOLIST偽指令可加在源程序中,與LIST

          偽指令配合使用,使源程序中某些部分不產(chǎn)生清單。而不加附加項(xiàng)/L則不產(chǎn)生任何程序清單。不過,不管有

          無$NOLIST偽指令,程序在匯編時(shí)檢查到的錯(cuò)誤都將在屏幕上顯示出錯(cuò)的源代碼行及錯(cuò)誤信息
          23、PAGE
          功能:PAGE偽指令用于形成新的一中定義一面的行數(shù)。其格式為:$PAGE 表達(dá)式
          若表達(dá)式缺省則開始新的一頁,若有表達(dá)式,則每頁行數(shù)重新定義。匯編開始時(shí)頁長為66行。一頁中除出頁外,剩余55行用于打印源程序,這一格式適用于標(biāo)準(zhǔn)打印紙。如果變元值小于66,頁內(nèi)可打印的源代碼行將相應(yīng)減少。頁長最小值為12。若小于12時(shí),每頁內(nèi)除頁上只打印一行源程序。頁長變元是16位字節(jié),因而每頁最長可定義到65535行,這時(shí)分頁打印變?yōu)檫B續(xù)打印,在屏幕顯示程序清單或在卷筒紙上打印程序清單時(shí),常常使用連續(xù)打印,如果在啟動(dòng)匯編時(shí)用/N選項(xiàng),頁長就是65535。
          24、PUBLIC

          功能:聲明可被其它模塊使用的公共函數(shù)名。

          指令格式:PUBLIC 符號 [,符號,符號[,······]]

          PUBLIC 后可跟多個(gè)函數(shù)名,用逗號格開。每個(gè)函數(shù)名都必須是在模塊內(nèi)定義過的。

          例如:PUBLIC INTER,_OUTER

          其中_OUTER 可供C 調(diào)用。
          25、RSEG

          功能:再定位段選擇指令為RSEG,用于選擇一個(gè)已在前面定義過的再定義段作為當(dāng)前段,

          指令格式:RSEG 段名

          段名必須是在前面聲明過的再定位段。

          例如:

          DATAS SEGMENT DATA :聲明一個(gè)再定位DATA 段

          CODES SEGMENT CODE ;聲明一個(gè)再定位CODE 段

          BSEG AT 60H RSEG CODES ;選擇前面聲明的再定位CODE 段作為當(dāng)前段。


          絕對段選擇指令
          CSEG---絕對代碼段
          DSEG---內(nèi)部絕對數(shù)據(jù)段
          XSEG---外部絕對數(shù)據(jù)段
          ISEG ---內(nèi)部間接尋址數(shù)據(jù)段
          BSEG---絕對位尋址數(shù)據(jù)段
          格式:
          CSEG[AT 絕對地址表達(dá)式]
          DSEG[AT 絕對地址表達(dá)式]
          XSEG[AT 絕對地址表達(dá)式]
          ISEG [AT 絕對地址表達(dá)式]
          BSEG[AT 絕對地址表達(dá)式]


          括號內(nèi)是可選項(xiàng),用來指定當(dāng)前絕對段的基地址。 CSEG AT 0000H AJMPMAIN

          26、SEGMENT

          功能:SEGMENT 指令用來聲明一個(gè)再定位段和一個(gè)可選的再定位類型。

          指令格式:再定位段型 SEGMENT 段類型(再定位類型) 段類型用于指定所聲明的段將處的儲(chǔ)存器地址空間,可用的段類型有CODE/XDATA/DATA/IDATA 和BIT。

          例如: FLAG SEGMENT BIT PONITER SEGMENT IDATA

          27、SET

          功能:SET 指令類似于EQU 指令,不同的是SET 指令定義過的符號可重定義。

          指令格式:符號名 SET 表達(dá)式 符號名 SET 寄存器名

          例如:MAX SET 2000 MAX SET 3000
          28、TTILE
          功能:TITLE偽指令用于在列表文件頁頭建立一個(gè)標(biāo)題,其格式為: $TITLE 標(biāo)題行

          這里標(biāo)量行就是將出現(xiàn)在頁頭的標(biāo)量與通常的字符串定義不同。這里標(biāo)量行不加引號。匯編從$TITLE 之后的第一個(gè)可打印字符開始,到回車符之間的字符串作為標(biāo)量標(biāo)量的最大長度是60個(gè)字符,基標(biāo)量行省略,則標(biāo)題行為空行。若TITLE偽指令在一頁,它說明的標(biāo)量行包含在本頁,否則,標(biāo)題將出現(xiàn)在下頁頁頭。

          29、XDATA

          功能:XDATA 指令用于將一個(gè)外部RAM 的地址賦給指定的符號名。 指令格式:符號名 XDATA 表達(dá)式

          例如:RSEG XSEG1 ;選擇一個(gè)外部數(shù)據(jù)段 ORG 100H

          MING DS 10 ;在標(biāo)號MING 處保留10 個(gè)字節(jié) HOUR XDATA MING+5

          MUNIT XDATA HOUR+5

          30、XSEG

          功能:絕對選擇指令XSEG外部絕對數(shù)據(jù)段xdata 指令格式如下:

          XSEG [AT 絕對地址表達(dá)式]
          31、USING指令

          USING指令通知匯編器使用8051的哪一個(gè)工作寄存器組。
          格式:USING表達(dá)式(值必須為0-3,默認(rèn)值為0。)
          USING0 使用第0組工作寄存器。
          32、ORG指令

          ORG指令用來改變匯編器的計(jì)數(shù)器,從而設(shè)定一個(gè)新的程序起始地址。
          格式:ORG表達(dá)式 表達(dá)式必須是絕對或簡單再定位表達(dá)式。
          ORG0000H AJMPMAIN 設(shè)定 MAIN 程序的起始地址為 0000H。
          數(shù)據(jù)定義偽操作格式:

          [ 標(biāo)號: ] 數(shù)據(jù)定義名[ 表達(dá)式1,表達(dá)式2,... ] 其中數(shù)據(jù)定義名可為DB,DW,DS等。

          如表-7所示,數(shù)據(jù)定義偽操作的含義及說明。 表-5 段定義偽操作

          區(qū)

          代碼段(CSEG) 包含由處理器所執(zhí)行的程序。段名可缺省。有目標(biāo)代碼生成。

          數(shù)據(jù)段(DESG) 由內(nèi)部工作寄存器的處理器的RAM組成。用來對程序使用的數(shù)據(jù)地址賦符號名,大多以O(shè)RG,DATA,BYTE,WORD,EDNS等組成。無目標(biāo)碼生成。

          外部段(XSEG) 由外部工作寄存區(qū)和RAM組成。使用方法同數(shù)據(jù)段。無目標(biāo)碼生成。

          功能段(FSEG) 由特殊寄存器位置組成(如:輸入/輸出部件,計(jì)時(shí)器,中斷控制和連續(xù)的寄存器部件接口等)。無目標(biāo)代碼生成。

          段(BSEG) 由一些獨(dú)立的位組成,可以用布爾函數(shù)實(shí)現(xiàn)。 該段地址被解釋為位地址。無目標(biāo)代碼生成。

          表-6 程序分段的類型符號


          標(biāo)號(Label) 字節(jié)型操作數(shù)(Byte)字型操作數(shù)(Word)

          代碼段CSEG

          數(shù)據(jù)段DSEG

          外部段XSEG

          功能段FSEG

          段BSEG


          說明: (1)在不同的段中類型符號不同;

          (2)字節(jié)型操作數(shù)(Byte)一般通過DATA指令賦給符號; 字型操作數(shù) 一般通過WORD指令賦給符號;

          (3)如果各段中用BYTE賦值,則在各段中符號全以S表示;在SIM51模擬/調(diào)試中的符號區(qū)顯示功能中,對BYTE賦值的將被跳過。

          (4)在各段中,位類型可以用BIT指令賦給。

          表-7 數(shù)據(jù)定義偽操作

          數(shù)據(jù)定義名 含義 說明

          DB 用于定義一個(gè)字節(jié)包含的值 表達(dá)式不是字符串時(shí),每個(gè)表達(dá)式賦給一個(gè)字節(jié),是字符串時(shí),用單引號 “ “作為分隔符。

          DW 用于定義一個(gè)字(16位) 每個(gè)表達(dá)式占16位。如果表達(dá)式中的存貯內(nèi)容為字符串,只取最后兩個(gè)字符。若字

          符串只有一個(gè)字符,高字節(jié)置“0“。

          DS 定義一個(gè)存貯區(qū) 通常用在代碼段中,作為程序的一部分。若用在數(shù)據(jù)段,外部段,則作為位置標(biāo)志使用。

          表-8 列表偽操作

          偽指令 含義及格式 說明

          $TITLE 給源程序指定一個(gè)標(biāo)題 標(biāo)題不加 ““,其最大長度

          格式: $TITLE [標(biāo)題行] 60個(gè)字符。若標(biāo)題行省略, 原來定義的標(biāo)題行作廢。

          $SUBTTL 給源程序指定一個(gè)副標(biāo)題 副標(biāo)題不加 ““,其最大長度60字符。若副標(biāo)題行省略,

          格式: $SUBTTL [副標(biāo)題行] 原來定義的副標(biāo)題行作廢。

          $PAGE 用于形成或定義新的一頁或行數(shù) 匯編時(shí)頁長為66行(適合于格式: $PAGE [表達(dá)式] 標(biāo)準(zhǔn)打印紙) 。表達(dá)式最大為65535,最小為12, 表達(dá)式缺省,則從新的一頁開始。

          $LIST 使源程序匯編時(shí),產(chǎn)生程序清單 匯編時(shí)無此指令照樣產(chǎn)生清單。 格式: $LIST

          $NOLIST 使源程序匯編時(shí)不產(chǎn)生程序清單 格式: $NOLIST

          $NOCODE 源程序匯編時(shí),條件匯編程序值 沒有此指令匯編時(shí),不論其值是為假的不產(chǎn)生清單。真、假的條件都不產(chǎn)生目標(biāo)碼。 格式: $NOCODE

          如果在匯編中沒有REG52。INC的包含文件,以下的程序出錯(cuò):


          NAME ASMTEST
          $include(LOOKUPTABLE.INC)

          ;$include(REG52.INC) ;一定要空上一行,否則有錯(cuò)
          ?PR?TSEG?ASM_TEST SEGMENT CODE
          PUBLIC ASM_LOOKUP_ROUTINE

          RSEG ?PR?TSEG?ASM_TEST
          using 0

          ASM_LOOKUP_ROUTINE:
          MOV DPTR , #TABLE
          MOV A , #4
          MOVC A , @A+DPTR
          CLR P0.0
          RET
          END


          錯(cuò)誤提示是:ASM_TEST.ASM(15): error A45: UNDEFINED SYMBOL 程序中加上了這個(gè)文件包含后就對了。

          在匯編程序中包含文件的定義


          NAME ASMTEST
          $include(LOOKUPTABLE.INC)

          $include(REG52.INC) ;一定要空上一行,否則有錯(cuò)
          ?PR?TSEG?ASM_TEST SEGMENT CODE
          PUBLIC ASM_LOOKUP_ROUTINE

          RSEG ?PR?TSEG?ASM_TEST
          using 0

          ASM_LOOKUP_ROUTINE:
          MOV DPTR , #TABLE
          MOV A , #4
          MOVC A , @A+DPTR
          CLR P0.0
          RET
          END

          如果兩個(gè)include沒有空行,會(huì)出現(xiàn)以下的錯(cuò)誤提示:

          assembling ASM_TEST.ASM...
          ASM_TEST.ASM(3): error A34: , EXPECTED
          ASM_TEST.ASM(3): error A34: , EXPECTED
          ASM_TEST.ASM(3): error A34: , EXPECTED
          ASM_TEST.ASM(3): error A9: SYNTAX ERROR
          ASM_TEST.ASM(3): error A34: , EXPECTED
          ASM_TEST.ASM(14): error A45: UNDEFINED SYMBOL
          ASM_TEST.ASM - 6 Error(s), 0 Warning(s).


          從C中訪問位于匯編函數(shù)中的表格


          TEST.C: 包含調(diào)用匯編函數(shù)的C程序。

          ASM_TEST.ASM: 包含使用查表的匯編函數(shù)。
          LOOKUPTABLE.INC: 包含查表。
          每個(gè)文件的內(nèi)容如下面所示。為了將查表定義在一個(gè)固定的地址0x1000,打開工程-選項(xiàng)(Project-Options),選擇Target-BL51 Locate。在代碼段(Code Segment)字段中輸入段名(起始地址)。例如在本例中,你應(yīng)該輸入LOOKUPTABLE(0x1000)。對于你的程序,你可能需要從MAP文件(*.M51)中查找段名。

          LOOKUPTABLE.INC

          LOOKUPTABLE SETMENT CODE
          RSEG LOOKUPTABLE

          TABLE: DB 02H, 03H, 04H, 05H, 06H, 07H, 08H, 09H

          ASM_TEST.ASM

          NAME ASMTEST
          $include(LOOKUPTABLE.INC)

          ?PR?TSEG?ASM_TEST SEGMENT CODE
          PUBLIC ASM_LOOKUP_ROUTINE

          RSEG ?PR?TSEG?ASM_TEST
          using 0

          ASM_LOOKUP_ROUTINE:

          MOV DPTR, #TABLE ; DPTR指向查表的起始位置
          MOV A, #4 ; A是從查表的起始位置的偏移量
          MOVC A, @A + DPTR ; 把第A+1項(xiàng)送到累加器中

          RET
          END

          TEST.C

          extern void ASM_LOOKUP_ROUTINE(void);
          void main(void)
          {
          ASM_LOOKUP_ROUTINE(); // 調(diào)用查表子程序

          while(1);
          }




          關(guān)鍵詞: 51單片機(jī)匯編偽指

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();